我想知道如果有解决方案来获取FCM令牌而它是空的吗?换句话说,我想手动调用FCM获取令牌,而在Android应用程序中它是null?
提前致谢
如果你想更快地获得令牌,你必须使用:
token = FirebaseInstanceId.getInstance().getToken("projectNumber","FCM");
代替:
token = FirebaseInstanceId.getInstance().getToken();
如果在调用null
时获得FirebaseInstanceID.getToken()
,则表示尚未生成令牌。现在没有强制生成令牌的API,因此您必须改为监控令牌生成。
要监视令牌生成,请创建一个派生自com.google.firebase.iid.FirebaseInstanceId
的类并覆盖其onTokenRefresh()
方法:
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
// If you want to send messages to this application instance or
// manage this apps subscriptions on the server side, send the
// Instance ID token to your app server.
sendRegistrationToServer(refreshedToken);
}
请注意,获取和监控令牌都包含在accessing the registration token的Firebase文档中,这是我从上面获取上述代码示例的地方。
使用getInstanceId()
而不是getToken()
,已弃用。
new Thread(new Runnable() {
@Override
public void run() {
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
String deviceToken = instanceIdResult.getToken();
}
});
}
}).start();