FirebaseInstanceId 不再存在

Ioa*_* P. 8 java android gradle firebase firebase-realtime-database

我刚刚升级了我所有的 Firebase 依赖项,但我遇到FirebaseInstanceId了一个问题,不再被识别。我用它来获取令牌 ID,如下所示:

String tokenId = FirebaseInstanceId.getInstance().getToken();
Run Code Online (Sandbox Code Playgroud)

这是错误:

Cannot resolve symbol 'FirebaseInstanceId'
Run Code Online (Sandbox Code Playgroud)

这是我的 build.gradle 文件:

//Firebase
implementation 'com.google.firebase:firebase-auth:16.0.1'
implementation 'com.google.firebase:firebase-database:16.0.1'
implementation 'com.google.firebase:firebase-firestore:17.0.1'

//FirebaseUI
implementation 'com.firebaseui:firebase-ui-auth:4.0.0'
implementation 'com.firebaseui:firebase-ui-database:4.0.0'
implementation 'com.firebaseui:firebase-ui-firestore:4.0.0'
Run Code Online (Sandbox Code Playgroud)

如何使用最新的依赖项获取令牌 ID?

小智 37

我也面临同样的问题。从文档中,它说 FirebaseInstanceId 不再可用,并说使用 FirebaseMessaging.getInstance().token 如下

FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
    if (!task.isSuccessful) {
        Log.w(TAG, "Fetching FCM registration token failed", task.exception)
        return@OnCompleteListener
    }

    // Get new FCM registration token
    val token = task.result
})
Run Code Online (Sandbox Code Playgroud)


Pet*_*dad 10

将以下内容添加到 build.gradle 文件中:

 implementation 'com.google.firebase:firebase-messaging:17.0.0'
 implementation 'com.google.firebase:firebase-core:16.0.0'
Run Code Online (Sandbox Code Playgroud)

更多信息在这里:

https://firebase.google.com/docs/cloud-messaging/android/client#set-up-firebase-and-the-fcm-sdk


小智 10

添加到 Gradle 中:

  implementation 'com.google.firebase:firebase-messaging:22.0.0'

  implementation 'com.google.firebase:firebase-core:19.0.0'
Run Code Online (Sandbox Code Playgroud)

然后添加以下代码来获取token:

public static String returnMeFCMtoken() {
        final String[] token = {""};
        FirebaseMessaging.getInstance().getToken().addOnCompleteListener(new OnCompleteListener<String>() {
            @Override
            public void onComplete(@NonNull Task<String> task) {
                if(task.isComplete()){
                    token[0] = task.getResult();
                    Log.e("AppConstants", "onComplete: new Token got: "+token[0] );

                }
            }
        });
        return token[0];
    }
Run Code Online (Sandbox Code Playgroud)

  • FirebaseMessaging.getInstance().getToken() 是异步调用,因此返回 token[0] 将返回“”。你需要一种方法来等待响应 (2认同)

小智 5

我也面临同样的问题。实际上,FirebaseInstanceId 已经关闭,取而代之的是 Firebase Installation。

尝试:

FirebaseInstallations.getToken();
Run Code Online (Sandbox Code Playgroud)