android - 我现在应该使用什么方法,因为 FirebaseInstanceId.getInstance().getToken() 已被弃用

标签 android firebase push-notification firebase-cloud-messaging

由于不推荐使用 getToken(),我想知道获取 Firebase token 以发送推送通知的正确方法是什么。

最佳答案

更新答案

FirebaseInstanceId 已弃用,但现在您可以使用 FirebaseMessaging.getInstance().token

例如:

FirebaseMessaging.getInstance().token.addOnSuccessListener { result ->
        if(result != null){
            fbToken = result
            // DO your thing with your firebase token
        }
}

老答案

作为 documentation说:

This method was deprecated. In favour of getInstanceId().

getInstanceId()将返回一个带有 InstanceIdResult 的任务。像这样:

 FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( new OnSuccessListener<InstanceIdResult>() {                    
                @Override
                public void onSuccess(InstanceIdResult instanceIdResult) {
                      String deviceToken = instanceIdResult.getToken();
                      // Do whatever you want with your token now
                      // i.e. store it on SharedPreferences or DB
                      // or directly send it to server 
                }
});

虽然这种方法确实会取代 FirebaseInstanceId.getInstanceId().getToken() 的使用,但它并不能解决 FirebaseInstanceIdService 也已被弃用的事实留给我们另一个问题是:在哪里使用它? 它可以在任何 Activity 上下文中使用,它将始终返回 token 。但是,如果我们只想在创建并且很少更新时获取 token 怎么办? 为此,您应该从旧的 FirebaseMessagingService 实现中覆盖新方法 onNewToken: (是的,“消息传递”,而不是“InstanceId”)

@Override
public void onNewToken(String s) {
    super.onNewToken(s);
    String deviceToken = s;
    // Do whatever you want with your token now
    // i.e. store it on SharedPreferences or DB
    // or directly send it to server 
}

这种方式代码将保持精简,甚至不需要使用第一种方法。

关于android - 我现在应该使用什么方法,因为 FirebaseInstanceId.getInstance().getToken() 已被弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51125169/

相关文章:

java - 如何在 View 中显示对话框?

ios - Firebase + Swift TableView 按日期排序

javascript - 客户不是在 Stripe 帐户上创建的

Flutter - 如何创建来电通知?

android - 从 Activity Back Stack 中的每个现有任务中删除应用程序的所有 Activity

android - 如何从1.82版本升级市场应用程序?

ios - 检索已经获取的推送通知 token

android - 在 Localytics 推送通知中实现深度链接

android - 按钮动画 setDuration() 不起作用

amazon-web-services - 在亚马逊 Web 服务 aws 上构建类似 firebase/fanout.io 的服务