我目前正在从有效负载中获取徽章。但我怎样才能更新这个值。
{"aps":
{"alert":"Notification Hub test notification2",
"badge":1,
"sound":"Default"}
}
当我发送此消息时,徽章编号中始终显示 1,但是当我进入应用程序并退出时,它会更新。正因为如此,
func applicationDidBecomeActive(application: UIApplication) {
UIApplication.sharedApplication().applicationIconBadgeNumber = UIApplication.sharedApplication().applicationIconBadgeNumber + 1
}
但是当我发送新的推送通知时,它再次在图标中显示 1 作为徽章编号。
我应该如何做到这一点,据我了解,我应该在发送有效负载时发送更新的徽章。为此我必须处理后端。
除此之外还有什么建议可以处理应用程序内部吗?
如果您的项目有通知扩展,您可以在其中进行徽章设置。
首先,启用应用程序组并将应用程序通知服务扩展中的徽章计数保存在UserDefaults
。我们正在使用应用程序组,因为我们需要清除其中的徽章计数AppDelegate
打开应用程序时。
您也可以将徽章的值设置为bestAttemptContent.badge
来自通知服务扩展
在通知服务扩展中:
if let userDefaults = UserDefaults(suiteName: "group.com.bundle.appname") {
let badgeCount = userDefaults.integer(forKey: "badgeCount")
if badgeCount > 0 {
userDefaults.set(badgeCount + 1, forKey: "badgeCount")
bestAttemptContent.badge = badgeCount + 1 as NSNumber
} else {
userDefaults.set(1, forKey: "badgeCount")
bestAttemptContent.badge = 1
}
}
在 AppDelegate 中,您可以清除徽章...并在用户默认值上将徽章的值设置为零
if let userDefaults = UserDefaults(suiteName: "group.com.bundle.appname") {
userDefaults.set(0, forKey:"badgeCount") // "change "badgecount" to be "badgeCount"
}
UIApplication.shared.applicationIconBadgeNumber = 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)