ios – 申请结束时本地通知不更新徽章编号

我注意到,当在ios设备中收到本地通知时,通知会显示在通知中心,但应用程序徽章编号在应用程序关闭时不会更新。

我需要触摸通知中心中的通知,以便将本地推送消息传输到应用程序。

这是正常行为吗? 这可以通过使用远程推送通知来解决吗?

您可以在UILocalNotification对象中使用applicationIconBadgeNumber参数。

基本上:

 localNotificationObject.applicationIconBadgeNumber++; 

例:

 UILocalNotification *localNotification = [[UILocalNotification alloc] init]; localNotification.fireDate = [[NSDate date] dateByAddingTimeInterval:20]; localNotification.alertBody = @"Some Alert"; //the following line is important to set badge number localNotification.applicationIconBadgeNumber++; [[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 

但问题在于后续( 多个 )本地通知上的徽章编号不会增加( 这里有一个场景但是为了简单起见,我们只要说徽章在2个或更多,背靠背,本地通知后仍保持1 )。
在这种情况下, …推送通知似乎是要走的路
但要注意推送通知并不总是可靠的……检查: 链接

嗯…要使用推送通知进行正确的徽章编号更新,您应该知道可以在推送通知的有效负载中发送徽章计数。
收到此推送通知后,iOS会将徽章计数更改为推送通知中指定的徽章计数( 此时无需打开应用程序 )。


示例(续):

applicationIconBadgeNumber设置为0因为它在某些情况下有帮助( 可选

 - (void)applicationWillResignActive:(UIApplication *)application { [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; } - (void)applicationWillTerminate:(UIApplication *)application { [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; } 

额外:

您还可以在终止/关闭或辞职时手动设置徽章编号。
通常……在以下任何或所有方法中:

  • -applicationWillResignActive
  • -applicationDidEnterBackground
  • -applicationWillTerminate (应用关闭时设置badgeNumber

例:

 - (void)applicationWillResignActive:(UIApplication *)application { //Called when the application is about to move from active to inactive state. [[UIApplication sharedApplication] setApplicationIconBadgeNumber:[[[UIApplication sharedApplication] scheduledLocalNotifications] count]]; //... } - (void)applicationWillTerminate:(UIApplication *)application { // Called when the application is about to terminate. [[UIApplication sharedApplication] setApplicationIconBadgeNumber:[[[UIApplication sharedApplication] scheduledLocalNotifications] count]]; //... } 

iPhone:通过本地通知增加应用程序徽章

当您的应用在后台时,无法使用本地通知动态更新徽章编号。 所以你必须使用推送通知。 您只能在应用程序在前台运行时增加徽章,并寻找可以在此处使用的替代解决方案

iPhone:通过本地通知增加应用程序徽章