收到通知时显示徽章编号

问题描述 投票:0回答:1

当通知到达应用程序时,徽章编号上没有任何操作。我在Capabilities上设置了背景模式。

还有另一个问题。当app是后台模式时,不会调用此方法。

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    print("Push notification received2: \(userInfo)")
    completionHandler(UIBackgroundFetchResult.noData)
}

PS:UIApplication.shared.applicationIconBadgeNumber没有回答。我知道。问题甚至是应用程序收到的推送通知,徽章编号不会更新。

ios swift notifications push
1个回答
3
投票

APNS不支持徽章的增量操作。生成的每个推送通知应该设置当前值应该是什么。

所以我们需要在某个地方有一个服务/服务器来跟踪每个用户的徽章

例如,在您的有效负载中添加badge的一个密钥,获取您的徽章计数并增加计数,然后是示例。

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

    var currentBadgeNumber: Int = application.applicationIconBadgeNumber
    currentBadgeNumber += Int(userInfo["badge"] as? String ?? "0")!
    application.applicationIconBadgeNumber = currentBadgeNumber
    completionHandler(UIBackgroundFetchResult.noData)
}

例如有效载荷,参见SO中的old answer

注意:从iOS10 +开始不推荐使用didReceiveRemoteNotification,请参阅example

© www.soinside.com 2019 - 2024. All rights reserved.