首页 > 解决方案 > 在 iOS13 中接收推送通知时如何自动增加通知徽章编号

问题描述

在 iOS 13 之前,当推送通知到达方法时,我正在增加应用程序徽章编号application :didReceiveRemoteNotification:fetchCompletionHandler

    func application(_ application: UIApplication,
                     didReceiveRemoteNotification userInfo: [AnyHashable : Any],
                     fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
        if application.applicationState == .background {
            UIApplication.shared.applicationIconBadgeNumber += 1
        }
        completionHandler(.newData)
    } 

然后我每次打开应用程序时都会清理徽章编号:

   func applicationDidBecomeActive(_ application: UIApplication) {
       UIApplication.shared.applicationIconBadgeNumber = 0
   }

问题在于,随着iOS 13 的最新更改,application :didReceiveRemoteNotification:fetchCompletionHandler只有在推送通知的属性设置为至少 5 时才会调用该方法apns-priority。我们正在使用不发送具有该属性的推送通知的第三方推送通知服务。

所以我的问题是:

收到推送通知时,我可以采取其他方式自动增加应用程序徽章编号吗?

谢谢

标签: iosswiftiphoneapple-push-notificationsios13

解决方案


您不需要唤醒应用程序并执行此操作,这将由系统决定是否唤醒您的应用程序。最好让系统处理它,并在通知中包含徽章编号。

https://developer.apple.com/documentation/usernotifications/unnotificationcontent/1649864-badge?language=objc


推荐阅读