>我正在尝试使用 FCM 进行推送通知。我遵循文档,我正在尝试使用:
InstanceID.instanceID().instanceID { (result, error) in
if let error = error {
print("Error fetching remote instange ID: (error)")
} else if let result = result {
print("Remote instance ID token: (result.token)")
self.instanceIDTokenMessage.text = "Remote InstanceID token: (result.token)"
}
}
如文档中指定的那样,但我不确定应该把它放在哪里,它应该放在didFinishLaunchingWithOptions
里面吗?
我收到此编译错误:
静态成员"实例 ID"不能用于类型的实例 "实例 ID">
在didFinishLaunchingWithOptions
中添加观察者。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
NotificationCenter.default.addObserver(self, selector: #selector(self.tokenRefreshNotification), name: NSNotification.Name.InstanceIDTokenRefresh, object: nil)
}
在里面叫它didRegisterForRemoteNotificationsWithDeviceToken
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
self.connectToFcm()
}
方法
@objc func tokenRefreshNotification(_ notification: Notification) {
self.connectToFcm()
}
创建 1 个函数。
func connectToFcm() {
InstanceID.instanceID().instanceID { (result, error) in
if let error = error {
print("Error fetching remote instange ID: (error)")
}
else {
print("FCM Token = (String(describing: result?.token))")
print("Remote instance ID token: (result.token)")
self.instanceIDTokenMessage.text = "Remote InstanceID token: (result.token)"
}
}
}
我敢肯定,一些经过这里并遇到这个问题的人并没有通过 Kuldeep 给出的解决方案来解决他们的问题。
我有同样的确切问题。
在内部didRegisterForRemoteNotificationsWithDeviceToken
不要按照电容器导轨的建议使用InstanceID.instanceID().instanceID
,而是这样做。
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
NotificationCenter.default.post(name: Notification.Name(CAPNotifications.DidRegisterForRemoteNotificationsWithDeviceToken.name()), object: Messaging.messaging().fcmToken )
}
与标准didRegisterForRemoteNotificationsWithDeviceToken
的唯一区别是我们使用的是Messaging.messaging().fcmToken
.
在介质上找到解决方案。您会期望电容器文档中包含此版本或至少是工作版本...由您遵循哪个指南,我使用了所有电容器指南,但需要它来使用 fcmToken 测试通知。媒体指南包含有关 fcmToken 的更多信息,因此,根据您的用例,查看本指南可能是个好主意。