Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 图标徽章不是递增的吗?_Ios_Objective C_Push Notification_Badge - Fatal编程技术网

Ios 图标徽章不是递增的吗?

Ios 图标徽章不是递增的吗?,ios,objective-c,push-notification,badge,Ios,Objective C,Push Notification,Badge,由于某些原因,我的应用程序中没有增加徽章编号 我试过了 [UIApplication sharedApplication].applicationIconBadgeNumber = [UIApplication sharedApplication].applicationIconBadgeNumber + 1; 而且: [UIApplication sharedApplication].applicationIconBadgeNumber =

由于某些原因,我的应用程序中没有增加徽章编号

我试过了

[UIApplication sharedApplication].applicationIconBadgeNumber =
               [UIApplication sharedApplication].applicationIconBadgeNumber + 1;
而且:

[UIApplication sharedApplication].applicationIconBadgeNumber =
          [UIApplication sharedApplication].applicationIconBadgeNumber + 
               [[[userInfo objectForKey:@"aps"] objectForKey: @"badge"] intValue];
完整代码:

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    [UIApplication sharedApplication].applicationIconBadgeNumber =
              [UIApplication sharedApplication].applicationIconBadgeNumber + 1;
}

它总是显示1,我从我的服务器发送带有
badges=1的播放负载

您应该跟踪服务器上的徽章计数器

当您的应用处于活动状态时,将徽章计数设置为0 [[UIApplication sharedApplication]设置应用程序徽章编号:0]


并向服务器的自定义API发送请求,告知徽章计数现在为0

问题是
DidReceiveMemoteNotification
在应用程序未激活时不会被调用。因此,您只能在应用程序处于活动状态时增加它

您需要跟踪数据库中的袋数,并将其与推送通知一起发送


现在,您的应用程序将负责减少/增加该计数,并最终将该徽章计数字段更新到您的表中,以便在下一次推送警报时,您的服务器知道应用程序图标应显示的徽章编号。

我的代码中已经有了,没有问题,徽章甚至会显示,它只是没有增加您的服务器应该发送带有徽章计数的推送通知。之后,当你的应用程序激活时,你应该将app-badge设置为零,并将请求发送到你的服务器,其中badge count:0。我已经实现了。是的,我意识到只有当应用程序处于活动状态时,它才会增加,所以基本上你是说我应该通过将徽章号码存储到我的数据库中来跟踪徽章号码,这听起来比应该的要复杂,因为你不应该将徽章号码存储在数据库中。每次发送推送后,服务器都会增加徽章数量,您的应用程序徽章数量也会增加。当应用程序激活时,您必须将徽章计数设置为零,并使用徽章计数0向服务器发出请求。下一次推送将附带徽章计数1。您确实需要服务器上的数据库来跟踪徽章计数器。我认为通过向服务器Maksim发送徽章计数0意味着向服务器的自定义API发送一个请求,告知徽章计数现在为0。