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

Posted

技术标签:

【中文标题】Firebase InstanceID.instanceID().token() 方法已弃用【英文标题】:Firebase InstanceID.instanceID().token() method is deprecated 【发布时间】:2018-11-29 09:33:04 【问题描述】:

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

InstanceID.instanceID().token()

现在这个方法显示为已弃用,因为我已经更新了我的 firebase。

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

我不知道如何使用instanceIDWithHandler 我尝试过关注但不知道如何获取令牌。

func instanceID(handler: @escaping InstanceIDResultHandler)

    

请帮忙。 提前谢谢你。

【问题讨论】:

你问的是this吗? 【参考方案1】:

Fetching the current registration token

注册令牌通过messaging:didReceiveRegistrationToken: 方法传递。此方法通常在每个应用程序以 FCM 令牌启动时调用一次。调用此方法时,最理想的时机是:

如果注册令牌是新的,请将其发送到您的应用服务器。
为主题订阅注册令牌。这仅适用于新订阅或用户重新安装应用的情况。

您可以使用 instanceIDWithHandler: 直接检索令牌。此回调提供一个 InstanceIDResult,其中包含令牌。如果 InstanceID 检索以任何方式失败,则会提供非 null 错误。

您应该导入 FirebaseInstanceID

  import FirebaseInstanceID

目标 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)")
    

【讨论】:

此解决方案运行完美,谢谢先生。我想知道你从哪里得到这个答案或者我在哪里可以学到这些东西。当我阅读 firebase 文档时,我发现 link 根本没有用,或者我无法理解它。 @user9496018 包含此信息的文档在这里:firebase.google.com/docs/cloud-messaging/ios/first-message 我们的一些用户对这个新解决方案有疑问,lambda 永远不会返回结果。 同@PedroPauloAmorim :( 同样的问题,lambda 永远不会返回结果!【参考方案2】:

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

【讨论】:

【参考方案3】:

解决办法

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

【讨论】:

以上是关于Firebase InstanceID.instanceID().token() 方法已弃用的主要内容,如果未能解决你的问题,请参考以下文章

无法解决:com.google.firebase:firebase-ml-vision:24.1.3;无法解决:com.google.firebase:firebase-core:20.0.2

没有创建 Firebase 应用“[DEFAULT]” - 在 Flutter 和 Firebase 中调用 Firebase.initializeApp()

如何修复 Firebase 9.0 导入错误? “尝试导入错误:‘firebase/app’不包含默认导出(导入为‘firebase’)。”

Firebase 持久化,清除 Firebase 缓存

Firebase 存储不会下载并添加到 firebase 数据库

将 Firebase 身份验证与 Firebase 数据库连接