我已经阅读了几个帖子(比如这个https://forums.developer.apple.com/thread/7598)
application.applicationIconBadgeNumber = -1
Run Code Online (Sandbox Code Playgroud)
on applicationDidBecomeActive或applicationWillEnterForeground允许我清除徽章编号而不从通知中心删除通知.当我设置application.applicationIconBadgeNumber为负数(如-1)时,它会清除我的所有通知Notification Center.有没有其他方法可以清除徽章编号而不删除notifications?
UIApplication.sharedApplication.applicationIconBadgeNumber = -1;
Run Code Online (Sandbox Code Playgroud)
我已经在 iOS 12.2 中对其进行了测试,并且通过远程通知对我来说效果很好。
它通过在通知中心保留收到的远程通知来清除徽章计数。
代码片段供参考:
- (void)applicationDidBecomeActive:(UIApplication *)application {
UIApplication.sharedApplication.applicationIconBadgeNumber = -1;
}
Run Code Online (Sandbox Code Playgroud)
使用空的本地通知将应用程序徽章间接设置为 -1 对我有用,但在清除应用程序徽章计数的同时将通知保留在托盘中是一种技巧。
if(badgeCount == 0) {
//set application badge indirectly with UILocalNotification
UILocalNotification *ln = [[UILocalNotification alloc]init];
ln.applicationIconBadgeNumber = -1;
[[UIApplication sharedApplication] presentLocalNotificationNow:ln];
}
else {
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:badgeCount];
}
Run Code Online (Sandbox Code Playgroud)
迅捷版
if badgeCount == 0 {
//set application badge indirectly with UILocalNotification
var ln = UILocalNotification()
ln.applicationIconBadgeNumber = -1
UIApplication.sharedApplication().presentLocalNotificationNow(ln)
}
else {
UIApplication.sharedApplication().applicationIconBadgeNumber = badgeCount
}
Run Code Online (Sandbox Code Playgroud)
在 iOS 9 和 10 上测试的方法。
| 归档时间: |
|
| 查看次数: |
3631 次 |
| 最近记录: |