我正在尝试使用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
内吗?
我收到此编译错误:
静态成员'instanceID'不能用于类型的实例 “ InstanceID”
答案 0 :(得分:1)
在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)"
}
}
}
答案 1 :(得分:1)
我敢肯定,经过这里并遇到此问题的一些人并没有通过Kuldeep提供的解决方案解决他们的问题。
我有同样的问题。
在didRegisterForRemoteNotificationsWithDeviceToken
内部,而不要像capacitor guide所建议的那样使用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
。
在medium上找到了解决方案。您可能希望此版本或至少可以使用的版本会出现在电容器文档中...由您决定要遵循的指南,我使用了所有电容器指南,但需要使用此指南来测试fcmToken的通知。中型指南包含有关fcmToken的更多信息,因此,根据您的使用情况,研究本指南可能是一个好主意。