我目前正在从负载中获取角标(Badge)。但是我该如何更新该值。
{"aps":
{"alert":"Notification Hub test notification2",
"badge":1,
"sound":"Default"}
}
当我发送这个时,它总是在角标(Badge)编号中显示 1,但是当我进入应用程序并退出时,它正在更新。正因为如此,
func applicationDidBecomeActive(application: UIApplication) {
UIApplication.sharedApplication().applicationIconBadgeNumber = UIApplication.sharedApplication().applicationIconBadgeNumber + 1
}
但是当我发送新的推送通知时,它再次在图标中显示 1 作为角标(Badge)编号。 我应该怎么做,据我所知,我应该在发送有效负载时发送更新的角标(Badge)。为此,我必须处理后端。
除此之外还有其他处理内部应用程序的建议吗?
最佳答案
如果你的项目有通知扩展,你可以在里面做一个角标(Badge)设置。
首先,启用应用组并在 UserDefaults
中的应用通知服务扩展中保存角标(Badge)计数。我们正在使用应用程序组,因为我们需要在打开应用程序时从 AppDelegate
中清除角标(Badge)计数。
您还可以将角标(Badge)的值设置为来自通知服务扩展的 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 中,您可以清除角标(Badge)...并在用户默认值上将角标(Badge)的值设置为零
if let userDefaults = UserDefaults(suiteName: "group.com.bundle.appname") {
userDefaults.set(0, forKey:"badgeCount") // "change "badgecount" to be "badgeCount"
}
UIApplication.shared.applicationIconBadgeNumber = 0
关于ios - 如何在 iOS 推送通知上做角标(Badge)增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38478013/