Firebase InstanceID.instanceID()。token()方法已弃用

时间:2018-06-20 09:39:52

标签: swift firebase firebase-cloud-messaging token

我正在使用Swift和Firebase。以前,我使用以下方法获取Firebase令牌,然后将其用于存储到数据库中以发送通知。

InstanceID.instanceID().token()

现在,由于我更新了Firebase,此方法已不推荐使用。

'token()' is deprecated: Use instanceIDWithHandler: instead.

我不知道如何使用instanceIDWithHandler,但我不知道如何获取令牌。

func instanceID(handler: @escaping InstanceIDResultHandler){

    }

请帮助。 预先谢谢你。

3 个答案:

答案 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
}

请参见Documentation on Fetching the current registration token

答案 2 :(得分:0)

解决办法

问题是 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