gpt4 book ai didi

ios - 如何在 iOS 推送通知上做角标(Badge)增量

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:12:19 25 4
gpt4 key购买 nike

我目前正在从负载中获取角标(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com