如何在Swift中正确获取FCM Token

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

我正在尝试使用此代码在我的应用程序中获取 FCM 令牌

        Messaging.messaging().token { token, error in
        
        if let error = error {
            print("Error fetching FCM Token: \(error)");
        }
        else if let token = token {
            print("\(token)");
        }
    }

我得到的输出如下。我不知道为什么它先给出错误,然后过了一会儿就出现了 FCM Token

Error fetching FCM Token: Error Domain=com.google.fcm Code=505 "No APNS token specified before fetching FCM Token"
UserInfo={NSLocalizedFailureReason=No APNS token specified before fetching FCM Token}
APNs token retrieved: 32 bytes
Firebase registration token: Optional("ckoUPFil4UEtrH2wDCrDVZ:APA91bG7fsR4WdxhN6mSwj_pjoKrX9fNW8TDSlIs7YCDCqqMgTjxHp03te4DMcPD4Y2Rrhg3sM9gjcP_QKndTECeVcEDYaQVsGcmxcKxRRQHDOw_IVZYPsoPho3iYJteE74GHsuuIjHg")
ios swift firebase firebase-cloud-messaging
1个回答
0
投票

在 APNs 令牌可用之前发出 FCM 令牌请求。以下是解决该问题的方法: 解决问题的步骤

  1. 请求 APNs 令牌:确保您正确请求 APNs 令牌。实现 didRegisterForRemoteNotificationsWithDeviceToken 方法以在 Firebase Messaging 中设置 APNs 令牌。

    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { Messaging.messaging().apnsToken = deviceToken print("检索到 APNs 令牌:(deviceToken.map { String(format: "%02.2hhx", $0) }.joined())") }

  2. 设置 Firebase Messaging Delegate:实现 MessagingDelegate 来处理 FCM 令牌检索。

    扩展AppDelegate:MessagingDelegate { func 消息传递(_消息传递:消息传递,didReceiveRegistrationToken fcmToken:字符串?){ print("Firebase 注册令牌:(String(描述:fcmToken))") } }

  3. 请求推送通知权限:确保您请求推送通知权限。

    UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { 授予,错误 如果授予{ DispatchQueue.main.async { UIApplication.shared.registerForRemoteNotifications() } } }

  4. 设置 APNs 令牌后请求 FCM 令牌:确保仅在设置 APNs 令牌后请求 FCM 令牌。

    Messaging.messaging().token { 令牌,错误 如果让错误=错误{ print("获取 FCM 令牌时出错:(错误)") } 否则如果让 token = token { print("FCM 令牌:(令牌)") } }

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