应用程序图标徽章编号不增加:Xcode

Kri*_*lim 18 objective-c push-notification badge

我正面临推送通知应用程序徽章编号值更新的问题.

我这样做:

-(void)application:(UIApplication *)application 
       didReceiveRemoteNotification:(NSDictionary *)userInfo {

       UIApplicationState state = [application applicationState];
       if (state == UIApplicationStateActive) {
          // do stuff when app is active

       }else{
          // do stuff when app is in background
          [UIApplication sharedApplication].applicationIconBadgeNumber = 
          [UIApplication sharedApplication].applicationIconBadgeNumber+1;  
               /* to increment icon badge number */
       }
 }
Run Code Online (Sandbox Code Playgroud)

但是,该图标始终将徽章编号显示为"1",并且当有更多通知/一个接一个通知时,它不会递增.

任何建议都值得赞赏......

Dan*_*tín 32

当您收到类似于以下内容的JSON通知有效内容时,操作系统会设置徽章编号:

{
    "aps" : {
        "alert" : "New notification!",
        "badge" : 2
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,服务器负责在badge密钥中设置正确的数字.您的服务器需要跟踪或计算每个用户的待处理通知数,并badge在向Apple发送通知之前生成该号码.

客户的责任是在用户看到通知时清除通知徽章或减少通知徽章.这样做的代码是

application.applicationIconBadgeNumber = application.applicationIconBadgeNumber - 1; // Decrement counter
Run Code Online (Sandbox Code Playgroud)

要么

application.applicationIconBadgeNumber = 0; // Reset counter assuming the user is able to see all notifications at once.
Run Code Online (Sandbox Code Playgroud)

  • 答案为+1,但这不太好... iOS应该从通知中心的通知数量更新它... (2认同)

小智 6

您可以改为创建静态变量,并将其分配给applicationIconBadgeNumber:

static int i=1;
[UIApplication sharedApplication].applicationIconBadgeNumber = i++;
Run Code Online (Sandbox Code Playgroud)