当前位置: 首页 > 知识库问答 >
问题:

既然FirebaseInstanceId,我现在应该使用什么方法。getInstance()。getToken()已弃用[重复]

姜泰宁
2023-03-14

原始关闭原因未解决

既然getToken()已弃用,我想知道获得Firebase令牌以发送消息推送的正确方法是什么。

共有2个答案

杜俊楚
2023-03-14

FirebaseInstancedService已弃用。!

只需覆盖FirebaseMessagingService中的onNewToken()

public class LatestFirebaseMessagingService extends FirebaseMessagingService {

@Override
public void onNewToken(String mToken) {
    super.onNewToken(mToken);
    Log.e("TOKEN",mToken);
}

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);
}} 

在AndroidManifest中。xml

<service
        android:name=".LatestFirebaseMessagingService"
        android:stopWithTask="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
</service>

getToken()这也是不推荐的。!

如果您需要在活动中获取令牌,请使用以下代码。

FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this,  new OnSuccessListener<InstanceIdResult>() {
     @Override
     public void onSuccess(InstanceIdResult instanceIdResult) {
           String mToken = instanceIdResult.getToken();
           Log.e("Token",mToken);
     }
 });
华福
2023-03-14

更新的答案

FirebaseInstanceId已弃用,但现在可以使用FirebaseMessaging。getInstance()。代币

例如:

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

老答案

正如留档所说:

此方法已被弃用。支持getInstanceId()。

getInstanceId()将返回带有和InstancedResult的任务。这样地:

 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(),它并没有解决FirebaseInstancedService也被弃用的事实,这给我们留下了另一个问题:在哪里使用它?它可以在任何活动上下文中使用,它将始终返回令牌。但是,如果我们只想在创建时获得令牌,并且令牌很少更新,该怎么办?为此,您应该重写从旧的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 
}

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

 类似资料:
  • 我可以问一个关于FirebaseInstanceId的问题吗?我试图注册一个账户页面,但什么都没有发生或显示,我收到了一条错误消息:

  • Android Studio SDK 30 Gradle 7 我可以收到通知。 但无法获取设备令牌:( Android不让我使用它 我有我的androidManifest 内置。gradle我有 在模块级 在创建的类中 我有 但这一点从未触发,日志猫从未显示“newToken”:( 有人知道如何解决这个问题吗?

  • 希望大家都知道这个类,用于在firebase通知令牌刷新时获取通知令牌。我们从这个类中获取刷新的令牌,方法如下。

  • 我不想知道如何实现新的FirebaseInstanceId。getInstance()。getInstanceId()。将addOnSuccessListener添加到我自己的代码中,这样我就可以检索令牌并将其保存到数据库中,以使用FCM并识别每个用户。 实际上我有以下代码: 根据实际的Firebase说明,我应该修改如下: 但我不知道如何从方法中获取deviceToken字符串,我应该将其保存到

  • 问题内容: 我正在使用apache-httpclient-4.3。我将分析一个HTTP请求,尤其是查询字符串参数,但是 我不确定这意味着什么。我应该使用某些配置API的构造函数参数(那是什么?HostConfiguration作为类不再可用)。但是在构建阶段,我直接通过url传递查询参数: 我找不到不使用不推荐使用的方法从我的 请求 对象读回参数( var1,var2 )的方法,这种方法应该很简单

  • 问题内容: 我在jquery文档中看到live()已被弃用。有直接替换功能吗? 问题答案: ;替换。 ;替换。 ;替换。