1

我正在使用 CKSubscription 发送推送通知,我发送它们并且设备正确接收所有内容,但我的徽章计数始终是以前的 +1?应用程序运行后如何将其设置为 0?

我已将此代码添加到 func 应用程序 didFinishLaunchingWithOptions

UIApplication.shared.applicationIconBadgeNumber = 0

但是当您运行应用程序时,徽章会消失,收到下一个推送通知,数字会再次上升。

4

2 回答 2

1

使用 CKModifyBadgeOperation 解决它,将其放入 applicationDidBecomeActive

let badgeOp = CKModifyBadgeOperation(badgeValue: 0)
badgeOp.modifyBadgeCompletionBlock = { (error) -> Void in 
if error != nil { print (“error with the badge”)
} 
else {
UIApplication.shared.applicationIconBadgeNumber = 0 }
}
CKContainer.default().add(badgeOp)
}

一切正常!!!!很高兴!!!!

于 2017-11-18T18:33:15.260 回答
0

听起来您只是没有在正确的地方将其归零?

didFinishLaunchingWithOptions当您的应用程序从后台恢复时不会调用,只有在实际启动时才会调用。我能想到的徽章最常见的用途是当您收到通知并且您希望在用户看到通知时将其归零。所以这就是你必须设置你的applicationIconBadgeNumber = 0

例如,如果您的应用程序只是带有消息列表的单个视图,并且仅看到该列表就足以告诉您用户已经阅读了您可以使用的消息applicationWillEnterForeground。每次你从后台回来时都会调用它。

当应用程序处于前台时,当通知进入时,您仍然必须将其归零。

于 2017-11-18T16:16:28.937 回答