应用程序打开时更新徽章时不会发出警报

时间:2017-01-23 19:47:14

标签: ios swift push-notification ios10

我正在尝试通过推送通知远程更新徽章值。 一切正常,但当应用程序打开时,我会收到一个空警报(包含我的应用程序名称和关闭按钮)。

我在Apple的文档中读到了silent notifications,但似乎即使在通知有效负载中指定content-available:1,有效负载也不得包含徽章,以使通知保持沉默。

是否在未收到警报的情况下更新徽章?

1 个答案:

答案 0 :(得分:0)

如果您使用的是静音推送通知,则无法在aps词典中加入aps键,因此您无法通过静音推送直接更新徽章。

可以didReceiveRemoteNotification:fetchCompletionHandler词典中包含您自己的键和值,UIApplicationDelegate aps函数中提供了此词典。

在此功能中,您可以提取自己的徽章"来自UIApplication字典的密钥,并使用此代码直接使用applicationIconBadgeNumber属性[UIApplication.shared.applicationIconBadgeNumber = someValue ]更新徽章编号[1]

 func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    if let badgeNumberStr = userInfo["myBadge"] as? String {
        if let badgeNumber = Int(badgeNumberStr) {
            application.applicationIconBadgeNumber = badgeNumber
        }
    }
}

类似的东西:

{{1}}