Firebase:如何将设备令牌转换为FCM令牌

Kaz*_*ita 1 push-notification ios firebase firebase-cloud-messaging

我正在尝试使用Firebase进行推送通知.但是,我已经遇到了障碍,即我无法在iOS中做那件事.我尝试了两种方法

Messaging.messaging().setAPNSToken(deviceToken, type: .prod) and InstanceID.instanceID().setAPNSToken(deviceToken, type: InstanceIDAPNSTokenType.sandbox)
Run Code Online (Sandbox Code Playgroud)

在第二

application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
Run Code Online (Sandbox Code Playgroud)

Firebase进口.

我该怎么办?

编辑:这是一个补充信息,错误信息是这样的. 无法获取默认令牌Error Domain = com.firebase.iid Code = 1003"(null)" 我用Google搜索,但没有相关信息.

Tod*_*man 5

所以你很亲密.以下是FireMap 4.0版云消息传递中正在发生的事情......

  1. 当您拨打电话时application.registerForRemoteNotifications(),iOS会申请APNs证书,就像任何一款iOS应用程序一样.

  2. 假设您没有关闭方法(并且您可能没有),Firebase将自动在其自己的混合didRegisterForRemoteNotificationsWithDeviceToken方法中为该FCM令牌交换该APN标记.

  3. 交换完成后,火力地堡可以让你的应用程序知道.它曾经是这样做的唯一方法是创建类型的NSNotification kFIRMessagingRegistrationTokenRefreshNotification.但是这些天,它也可以让你知道MessagingDelegate.因此,最简单的方法是通过调用...来声明AppDelegate是一个消息传递委托.

    Messaging.messaging().delegate = self
    
    Run Code Online (Sandbox Code Playgroud)

    ......然后实施该messaging(_:didRefreshRegistrationToken)方法.

    func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
      print("Look! I have an FCM token! \(fcmToken)")
    }
    
    Run Code Online (Sandbox Code Playgroud)

所以tl; dr是你不需要手动交换FCN令牌的APNs令牌,你只需要设置你的委托,以便在FCM库为你做这件事时得到通知.