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

时间:2017-05-23 12:05:16

标签: ios firebase push-notification firebase-cloud-messaging

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

Messaging.messaging().setAPNSToken(deviceToken, type: .prod) and InstanceID.instanceID().setAPNSToken(deviceToken, type: InstanceIDAPNSTokenType.sandbox)

第二次

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

导入Firebase

我该怎么办?

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

1 个答案:

答案 0 :(得分:5)

所以你关闭了。现在,Firebase 4.0版本的云消息传递中发生了什么......

  1. 当您致电application.registerForRemoteNotifications()时,iOS会申请一个APNs证书,就像任何一个人一样。 iOS应用

  2. 假设您还没有将方法调高(并且您可能还没有),Firebase将自动用自己的混合didRegisterForRemoteNotificationsWithDeviceToken方法交换该APN令牌以获取FCM令牌。

  3. 交换完成后,Firebase可以让您的应用知道。它曾经是这样做的唯一方法是创建类型为kFIRMessagingRegistrationTokenRefreshNotification的NSNotification。但是现在,它也可以通过MessagingDelegate通知您。因此,最简单的方法是通过调用...

    来声明AppDelegate是一个消息传递委托
    Messaging.messaging().delegate = self
    

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

    func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
      print("Look! I have an FCM token! \(fcmToken)")
    }
    
  4. 所以tl; dr是你不需要手动交换FCN令牌的APNs令牌,你只需要设置你的委托,以便在FCM库为你做这件事时得到通知。