Firebase令牌问题适用于更高版本的Lollipop和Marshmallow。
Firebase令牌问题适用于更高版本的Lollipop和Marshmallow。
我正在将Firebase集成到我的应用程序中,但问题是在Lollipop版本以下,我收到的令牌为空,不知道为什么。以下是我的代码。
清单文件:
MyFirebaseInstanceIDService类:
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { // 省略其他代码 @Override public void onTokenRefresh() { String refreshedToken = FirebaseInstanceId.getInstance().getToken(); Log.d(TAG, "Refreshed token: " + refreshedToken); // TODO: 将令牌发送到服务器 } // 省略其他代码 }
MyFirebaseMessagingService类:
public class MyFirebaseMessagingService extends FirebaseMessagingService { // 省略其他代码 @Override public void onMessageReceived(RemoteMessage remoteMessage) { // 省略其他代码 sendNotification(remoteMessage.getNotification().getBody()); } // 省略其他代码 }
从Fragment类中获取令牌:
String token = FirebaseInstanceId.getInstance().getToken(); Log.i("regToken", "FCM Registration Token: " + token);
Firebase Token Issue for the higher version Lollipop and Marshmallow
在使用Firebase Cloud Messaging(FCM)的时候,如果你的项目中同时使用了GCM和FCM的API,就会出现问题。因此,应该只使用FCM,而不使用GCM。另外,如果你想要在Manifest文件中实现自动注册,可以尝试以下代码:
另外,不要在Activity中调用`getToken`方法,注册令牌将会自动被`onTokenRefresh()`接口方法检测到并处理。如果你需要将InstanceId存储在数据库、文件或者Shared Pref中,可以自行实现。