我注意到 com.google.firebase:firebase-messaging:17.1.0
FirebaseInstanceIdService
已被弃用,因此尝试覆盖 onNewToken()
在 FirebaseMessagingService
中,但它似乎从未被调用过。
和FirebaseInstanceId.getInstance().getInstanceId().getResult().getToken()
返回异常
java.lang.IllegalStateException: Task is not yet complete`
有什么我特别想念的吗?
所以我关注了docs这是我的代码
list :
<!--<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>
AppFirebaseMessagingService:
@Override
public void onNewToken(String s) {
Log.d(TAG,"Refreshed token: " + s);
sendRegistrationToServer(s);
}
Activity 中:
_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`
}
});
最佳答案
is there anything in particular that I'm missing?
不,你没有遗漏任何东西
Suggestion
不要使用 FirebaseInstanceId.getInstance().getInstanceId().getResult().getToken()
有时会抛出异常(我也遇到过同样的问题问题)
how to get Token
你需要使用
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();
}
});
有关更多信息,请在此处查看 firebase github link
关于android - 升级到 firebase messaging 17.1.0 后未生成 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51645170/