我正在尝试使用Firebase进行推送通知。但是,我已经遇到了障碍,即我无法在iOS中做那件事。我尝试了两种方法
Messaging.messaging().setAPNSToken(deviceToken, type: .prod) and InstanceID.instanceID().setAPNSToken(deviceToken, type: InstanceIDAPNSTokenType.sandbox)
在第二名
application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
Firebase
导入。
我该怎么办?
编辑: 这是一个补充信息,错误消息是这样的。无法获取默认令牌错误域=com.firebase.iid 代码=1003"(空)">我用谷歌搜索,但没有相关信息。
所以你很接近。以下是Firebase 4.0版本的Cloud Messaging现在发生的情况...
-
当您调用
application.registerForRemoteNotifications()
时,iOS 将请求 APNs 证书,就像任何 iOS 应用程序一样。 -
假设您尚未关闭方法切换(您可能还没有),Firebase 将自动以自己的切换
didRegisterForRemoteNotificationsWithDeviceToken
方法将该 APNs 令牌交换为 FCM 令牌。 -
交换完成后,Firebase 可以通知您的应用。过去,它执行此操作的唯一方法是创建类型为
kFIRMessagingRegistrationTokenRefreshNotification
的NSNotization。但是这些天,它也可以通过MessagingDelegate
让你知道。因此,最简单的方法是通过调用 AppDelegate 来声明消息传递委托...Messaging.messaging().delegate = self
。然后实现
messaging(_:didRefreshRegistrationToken)
方法。func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) { print("Look! I have an FCM token! (fcmToken)") }
所以 tl;dr 是,您不需要手动将 APNs 令牌交换为 FCM 令牌,您只需设置您的委托,以便在 FCM 库为您执行此操作时收到通知。