.addOnCompleteListener不适用于FirebaseInstanceId.getInstance()。getInstanceId()

时间:2019-04-04 14:18:20

标签: android

我是android开发的新手。发布此问题之前,我已经检查了是否发布了相同的问题并找到了解决方案。我找不到,因此在这里发布。

我正在尝试获取FCM令牌并使用下面的代码。

FirebaseInstanceId.getInstance().getInstanceId()
                        .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
                            @Override
                            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                                if (!task.isSuccessful()) {
                                    Log.w(TAG, "getInstanceId failed", task.getException());
                                    return;
                                }

                                // Get new Instance ID token
                                String token = task.getResult().getToken();

                                // Log and toast

                                Log.d(TAG, token);
                            }
                        });

我没有得到任何错误。但是方法onComplete没有得到执行。

请有人帮我。我已经尝试了几天了。

请注意,根据有关SOF的一些建议,我在.SuccessfulListener上也遵循了。但是,同样的问题。

我正在使用以下物品。

Manifest:
<service
            android:name=".MyFirebaseMessagingService"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>

App level Gradle:
apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.abc.xyz"
        minSdkVersion 21
        multiDexEnabled true
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.google.android.gms:play-services-tasks:16.0.1'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.google.firebase:firebase-messaging:17.5.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.google.android.gms:play-services-maps:16.1.0'
    implementation 'com.google.firebase:firebase-core:16.0.8'
    implementation 'com.google.firebase:firebase-auth:16.2.0'
    implementation 'com.google.firebase:firebase-firestore:18.2.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.google.firebase:firebase-database:16.1.0'
}

apply plugin: 'com.google.gms.google-services'

Project Gradle:
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.2'
        classpath 'com.google.gms:google-services:4.2.0'

1 个答案:

答案 0 :(得分:0)

addOnCompleteListener在后台线程上运行,因此尚不清楚何时完成。 我建议在自定义FirebaseMessagingService中使用onNewToken(String token):

public class FireBaseCustomReciver extends FirebaseMessagingService {
  private static final String TAG = "aaa";


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


@Override
public void onNewToken(String token) {
  Log.e("aaa", "Refreshed token: " + token);

}
}