我正在尝试使用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搜索,但没有相关信息。
答案 0 :(得分:5)
所以你关闭了。现在,Firebase 4.0版本的云消息传递中发生了什么......
当您致电application.registerForRemoteNotifications()
时,iOS会申请一个APNs证书,就像任何一个人一样。 iOS应用
假设您还没有将方法调高(并且您可能还没有),Firebase将自动用自己的混合didRegisterForRemoteNotificationsWithDeviceToken
方法交换该APN令牌以获取FCM令牌。
当 交换完成后,Firebase可以让您的应用知道。它曾经是这样做的唯一方法是创建类型为kFIRMessagingRegistrationTokenRefreshNotification
的NSNotification。但是现在,它也可以通过MessagingDelegate
通知您。因此,最简单的方法是通过调用...
Messaging.messaging().delegate = self
...然后实施messaging(_:didRefreshRegistrationToken)
方法。
func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
print("Look! I have an FCM token! \(fcmToken)")
}
所以tl; dr是你不需要手动交换FCN令牌的APNs令牌,你只需要设置你的委托,以便在FCM库为你做这件事时得到通知。