我正在使用Swift和Firebase。以前,我使用以下方法获取Firebase令牌,然后将其用于存储到数据库中以发送通知。
InstanceID.instanceID().token()
现在,由于我更新了Firebase,此方法已不推荐使用。
'token()' is deprecated: Use instanceIDWithHandler: instead.
我不知道如何使用instanceIDWithHandler
,但我不知道如何获取令牌。
func instanceID(handler: @escaping InstanceIDResultHandler){
}
请帮助。 预先谢谢你。
答案 0 :(得分:28)
Fetching the current registration token
注册令牌是通过方法
messaging:didReceiveRegistrationToken:
传递的。通常每个应用程序以FCM令牌开始一次调用此方法。调用此方法时,是进行以下操作的理想时间:
- 如果注册令牌是新的,请将其发送到您的应用服务器。
- 为主题注册注册令牌。仅对于新订阅或用户重新安装应用程序的情况,才需要这样做。
您可以直接使用
instanceIDWithHandler:
检索令牌。该回调提供了一个InstanceIDResult
,其中包含令牌。如果InstanceID检索以任何方式失败,将提供非null错误。
目标C
在您的getTokenMethod上
[[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)")
}
}
答案 1 :(得分:16)
InstanceID
现在已弃用。试试
Messaging.messaging().token { token, error in
// Check for error. Otherwise do what you will with token here
}
答案 2 :(得分:0)
解决办法
问题是 FirebaseInstanceID 最近已被弃用
旧
InstanceID.instanceID().instanceID {result, _ in
新
Messaging.messaging().token { (token, _) in
你可以像上面一样替换它,它可以工作
检查此链接