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

2023-07-30移动开发问题
5

本文介绍了我现在应该使用什么方法,因为 FirebaseInstanceId.getInstance().getToken() 已被弃用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

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

I would like to know what would be the correct way to get Firebase token for sending push notification now that getToken() is deprecated.

推荐答案

更新答案

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

FirebaseInstanceId is deprecated but now you can use FirebaseMessaging.getInstance().token.

例如:

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

老答案

作为 文档 说:

此方法已被弃用.赞成 getInstanceId().

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

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

getInstanceId() will return a Task with and InstanceIdResult. Like this:

 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 上下文中使用,它将始终返回令牌.但是,如果我们只想在创建并且很少更新时获取令牌怎么办?为此,您应该从旧的 FirebaseMessagingService 实现中覆盖新方法 onNewToken:(是的,Messaging",而不是InstanceId")

Though is true that this approach will literally replace the use of FirebaseInstanceId.getInstanceId().getToken(), it does not solve the fact that FirebaseInstanceIdService is also deprecated leaving us with another question that is: where to use it? It can be used in any Activity context that it will always return the token. But what if we want to get the token only on creation and when it is rarely updated? For that you should override new method onNewToken from our old FirebaseMessagingService implementation: (Yes, "Messaging", not "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 
}

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

This way code will remain leaner and wont even be necessary to use the first approach.

这篇关于我现在应该使用什么方法,因为 FirebaseInstanceId.getInstance().getToken() 已被弃用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

如何在 COCOS2d Android 中使用 CClistview?
How can I use CClistview in COCOS2d Android?(如何在 COCOS2d Android 中使用 CClistview?)...
2024-08-12 移动开发问题
5

cocos2d-android:如何显示分数
cocos2d-android: how to display score(cocos2d-android:如何显示分数)...
2024-08-11 移动开发问题
7

Sqlite 数据库未从资产文件夹 Android 复制
Sqlite database not copied from asset folder Android(Sqlite 数据库未从资产文件夹 Android 复制)...
2024-04-15 移动开发问题
8

SQLite 数据库副本在由设备而不是模拟器生成时出现损坏
SQLite Database Copy Appears Corrupted When Generated by Device and not Emulator(SQLite 数据库副本在由设备而不是模拟器生成时出现损坏)...
2024-04-15 移动开发问题
4

安卓文件拷贝
Android file copy(安卓文件拷贝)...
2024-04-15 移动开发问题
6

Android如何在android中检测Edittext的Copy事件
Android how to detect Copy event of Edittext in android(Android如何在android中检测Edittext的Copy事件)...
2024-04-15 移动开发问题
5