我注意到com.google.firebase:firebase-messaging:17.1.0
FirebaseInstanceIdService
中的onNewToken()
已被弃用,因此尝试覆盖FirebaseMessagingService
中的FirebaseInstanceId.getInstance().getInstanceId().getResult().getToken()
,但似乎从未被调用。
和java.lang.IllegalStateException: Task is not yet complete`
返回一个异常
<!--<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>
我特别想念什么吗?
所以我遵循了docs,这是我的代码
清单:
@Override
public void onNewToken(String s) {
Log.d(TAG,"Refreshed token: " + s);
sendRegistrationToServer(s);
}
AppFirebaseMessagingService:
_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`
}
});
活动中:
@category = Category.find(params[:category_id])
答案 0 :(得分:4)
我特别想念什么吗?
不,你什么都不丢失
建议
不使用 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();
}
});
有关更多信息,请在这里firebase github link