您可以在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];
但问题在于,徽章编号不会在后续(多个)本地通知中增加(这里有一个场景,但为简单起见,我们只说徽章保持不变1 甚至在 2 个或更多之后,背靠背,本地通知)。
在这种情况下,是的...推送通知似乎是要走的路
(但请注意,推送通知并不总是可靠的......检查:link)
嗯...要使用推送通知进行正确的徽章编号更新,您应该知道您可以在推送通知的有效负载中发送徽章计数。
收到此推送通知后,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]];
//...
}