我注意到,当ios设备收到本地通知时,通知会显示在通知中心,但应用程序关闭时不会更新应用程序徽章编号。
我需要触摸通知中心的通知,以便将本地推送消息传输到应用。
这是正常行为吗?这可以通过使用远程推送通知来解决吗?
答案 0 :(得分:14)
您可以使用applicationIconBadgeNumber
对象中的UILocalNotification
参数。
基本上:
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];
但问题是,徽章编号在后续(多个)本地通知中不会增加(这里有一个场景,但为了简单起见,我们只需说徽章停留1即使在2或更多,背靠背,本地通知) 在这种情况下,是 ...推送通知似乎是要走的路 (但要注意推送通知并不总是可靠的......检查:link )
嗯...要使用推送通知进行正确的徽章编号更新,您应该知道可以在推送通知的有效负载中发送徽章计数。
收到此推送通知后,iOS会将徽章计数更改为推送通知中指定的徽章计数(& app不需要为此打开)。
将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]];
//...
}
答案 1 :(得分:0)
iPhone:通过本地通知增加应用程序徽章
当您的应用在后台时,无法使用本地通知动态更新徽章编号。所以你必须使用推送通知。您只能在应用程序在前台运行时增加徽章,并寻找可以在此处使用的替代解决方案
iPhone: Incrementing the application badge through a local notification