收到通知时显示徽章编号

时间:2018-09-12 07:45:54

标签: ios swift notifications push

当通知到达应用程序时,不会对徽章编号进行任何操作。我在功能上设置了背景模式。

还有另一个问题。当应用程序为后台模式时,不会调用此方法。

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无法回答。我知道。问题在于,即使应用程序收到了推送通知,徽章编号也不会更新。

1 个答案:

答案 0 :(得分: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

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