之前集成了极光推送,点击进入App,设角标为0,角标清空,但是通知中心也清空了。经理让优化一下,通知中心的消息不消失。
参考 iOS推送角标与通知栏变化总结、极光推送 角标清0 未读消息不清空
想清楚角标但是保留通知中心消息,可行的办法是构建本地通知,间接实现这种效果。
完整代码如下。在处理通知具体内容时,也不处理角标的逻辑。
func localNotificationClearBadgeNumber() {
let ln = UILocalNotification()
ln.applicationIconBadgeNumber = -1
UIApplication.shared.presentLocalNotificationNow(ln)
JPUSHService.setBadge(0)
}
func applicationWillResignActive(_ application: UIApplication) {
localNotificationClearBadgeNumber()
}
func applicationDidEnterBackground(_ application: UIApplication) {
localNotificationClearBadgeNumber()
}
func applicationWillEnterForeground(_ application: UIApplication) {
application.cancelAllLocalNotifications()
}
其中
JPUSHService.setBadge(0)
是为了同步极光后台的角标值,等下次推送时,传过来的字段会在这个0的基础上加1(一般后端调用极光是值"+1",而不是具体的某个值)。
网友评论