升级到Firebase消息传递17.1.0后未生成令牌

Poo*_*rya 5 android firebase firebase-cloud-messaging

我注意到in com.google.firebase:firebase-messaging:17.1.0 FirebaseInstanceIdService已被弃用,因此尝试覆盖onNewToken()in,FirebaseMessagingService但似乎从未调用过它。

FirebaseInstanceId.getInstance().getInstanceId().getResult().getToken()返回一个异常

java.lang.IllegalStateException: Task is not yet complete` 
Run Code Online (Sandbox Code Playgroud)

我特别想念什么吗?

所以我遵循了文档,这是我的代码

表现:

<!--<service android:name=".network.AppFirebaseInstanceIdService">-->
    <!--<intent-filter>-->
    <!--<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />-->
    <!--</intent-filter>-->
    <!--</service>-->
    <service
        android:name=".network.AppFirebaseMessagingService"
        android:stopWithTask="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
Run Code Online (Sandbox Code Playgroud)

AppFirebaseMessagingService:

 @Override
    public void onNewToken(String s) {
        Log.d(TAG,"Refreshed token: " + s);
        sendRegistrationToServer(s);
    }
Run Code Online (Sandbox Code Playgroud)

活动中:

    _btnTemptest.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {

      FirebaseMessaging.getInstance().setAutoInitEnabled(true);

      Toast.makeText(LoginActivity.this, FirebaseInstanceId.getInstance().getInstanceId().getResult().getToken(), Toast.LENGTH_SHORT).show();
      // which throws java.lang.IllegalStateException: Task is not yet complete` 

     }
    });
Run Code Online (Sandbox Code Playgroud)

Nil*_*hod 5

我特别想念什么吗?

不,你什么都不丢失

建议

别用 FirebaseInstanceId.getInstance().getInstanceId().getResult().getToken()它抛出异常(我也遇到过同样的问题)

如何获得代币

您需要使用

FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this,  new OnSuccessListener<InstanceIdResult>() {
     @Override
     public void onSuccess(InstanceIdResult instanceIdResult) {
           String newToken = instanceIdResult.getToken();
           Toast.makeText(LoginActivity.this, newToken, Toast.LENGTH_SHORT).show();

     }
 });
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息,请查看这里火力github上的链接