FCM通知在iOS上无法接收

3
我正在使用FCM获取远程推送通知。
因此,在从以下回调函数获取第一个FCM令牌时,我能够触发通知并正确接收它们。
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String)

重启应用后,我得到了一个新的 FCM 令牌。但是新的令牌没有触发任何通知。

根据文档,我正在遵循以下先决条件: https://firebase.google.com/docs/cloud-messaging/ios/client

使用 FirebaseMessaging (3.3.0)


你更新了后端服务器中存储的令牌吗? - Midhun MP
是的,但我正在使用Firebase云消息传递控制台进行测试。 - Priyam Dutta
你从控制台得到任何错误吗? - Midhun MP
很遗憾,没有收到任何错误信息。 - Priyam Dutta
1个回答

3
所以,我找到了解决方案,每次从回调中获取FCM新令牌后执行。
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String)

我们需要重新注册远程推送通知。
if #available(iOS 10.0, *) {
        let center = UNUserNotificationCenter.current()
        center.requestAuthorization(options: [.badge, .alert, .sound]) {
            (granted, error) in
            if granted {
                DispatchQueue.main.async {
                    UIApplication.shared.registerForRemoteNotifications()
                }
            } else {
                //print("APNS Registration failed")
                //print("Error: \(String(describing: error?.localizedDescription))")
            }
        }
    } else {
        let type: UIUserNotificationType = [UIUserNotificationType.badge, UIUserNotificationType.alert, UIUserNotificationType.sound]
        let setting = UIUserNotificationSettings(types: type, categories: nil)
        UIApplication.shared.registerUserNotificationSettings(setting)
        UIApplication.shared.registerForRemoteNotifications()
    }

FirebaseMessaging将使用方法交换重新配置新的FCM令牌和设备令牌。
注意:不需要显式设置设备令牌。由于FirebaseMessaging使用了方法交换技术,它会自动从委托方法中检索设备令牌。
func application(_ application: UIApplication,
                 didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)

Firebase Messaging 文档中没有提到每次生成新的 fcmToken 都需要重新注册。 - GGirotto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接