FCM令牌未在Android Nougat设备(Moto,Sony和Huawei(中生成,安装我的应用程序FirebaseInstanceId.getInstance((.getToken((返回null,但在Emulator(Nougat(及以下Nougat版本中生成的FCM令牌。
你什么时候打电话给FirebaseInstanceId.getInstance().getToken()
?您需要在服务扩展FirebaseInstanceIdService
中等待onTokenRefresh
回调。这是您的令牌可用的时刻。
public class FcmTokenService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
try {
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
if (refreshedToken != null) {
Log.i("FCM", String.format("Received new registration token from Firebase: token="%s";", refreshedToken));
// ... forward the new token to some point in your app to store it
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
在清单中注册服务:
<service android:name=".services.FcmTokenService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
这应该是build.gradle
文件中的最后一行:
apply plugin: 'com.google.gms.google-services'