OStack程序员社区-中国程序员成长平台

标题: ios - FCM 通知未收到 iOS [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 05:23
标题: ios - FCM 通知未收到 iOS

我正在使用 FCM 获取远程推送通知。

因此,在从以下回调中获取第一个 FCM token 时,我能够触发通知并正确接收它们。

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String)

重新启动应用程序后,我得到了一个新的 FCM token 。新 token 不会触发任何通知。

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

使用 FirebaseMessaging (3.3.0)



Best Answer-推荐答案


所以我找到了解决方案,每次从回调中获取 FCM 新 token 后。

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 将使用设备 token 重新配置新的 FCM token 。

注意:不可以,需要明确设置设备 token 。由于 FirebaseMessaging 使用的是方法调配,它会自动从委托(delegate)方法中检索它。

func application(_ application: UIApplication,
                 didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)

关于ios - FCM 通知未收到 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55374328/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4