我正在使用swift和firebase。以前,我使用以下方法来获取Firebase令牌,然后将其用于存储到数据库中以发送通知。
InstanceID.instanceID().token()
现在,自从我更新了火力以来,此方法显示为已弃用。
'token()' is deprecated: Use instanceIDWithHandler: instead.
我不知道如何使用instanceIDWithHandler
我尝试过关注但不知道如何获取令牌。
func instanceID(handler: @escaping InstanceIDResultHandler){
}
请帮忙。 提前谢谢你。
获取当前注册令牌
注册令牌通过方法
messaging:didReceiveRegistrationToken:
传递。此方法通常以 FCM 令牌开头的每个应用调用一次。调用此方法时,这是执行以下操作的理想时机:
- 如果注册令牌是新的,请将其发送到应用程序服务器。
- 将注册令牌订阅到主题。仅当新订阅或用户重新安装应用时,才需要执行此操作。
您可以使用
instanceIDWithHandler:
直接检索令牌。此回调提供了一个包含令牌的InstanceIDResult
。如果实例 ID 检索以任何方式失败,则会提供非空错误。
您应该导入 FirebaseInstanceID
import FirebaseInstanceID
目标C
在你的获取令牌方法上
[[FIRInstanceID instanceID] instanceIDWithHandler:^(FIRInstanceIDResult * _Nullable result,
NSError * _Nullable error) {
if (error != nil) {
NSLog(@"Error fetching remote instance ID: %@", error);
} else {
NSLog(@"Remote instance ID token: %@", result.token);
}
}];
迅速
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)")
}
}
更新
InstanceID
现已弃用。尝试
Messaging.messaging().token { token, error in
// Check for error. Otherwise do what you will with token here
}
InstanceID
现已弃用。尝试
Messaging.messaging().token { token, error in
// Check for error. Otherwise do what you will with token here
}
请参阅有关获取当前注册令牌的文档
这里是解决方案
问题是FirebaseInstanceID最近已被弃用。
老
InstanceID.instanceID().instanceID {result, _ in
新增功能
Messaging.messaging().token { (token, _) in
您可以像上面一样替换它,它可以工作
查看以下链接
https://medium.com/nerd-for-tech/how-to-solve-capacitor-error-no-such-module-firebaseinstanceid-9c142933b589
Objective-C 的更新
[[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) {
if (error != nil) {
NSLog(@"Error fetching remote instance ID: %@", error);
} else {
NSLog(@"Remote instance ID token: %@", token);
}
}];