-2

未在Android Nougat设备中生成FCM令牌(Moto,Sony &华为)安装我的应用程序时FirebaseInstanceId.getInstance().getToken()返回null,但是在Emulator(Nougat)并低于牛轧糖版本。FCM令牌在android nougat中返回null

回答

0

你什么时候打电话FirebaseInstanceId.getInstance().getToken()? 您需要等待延期FirebaseInstanceIdServiceonTokenRefresh回拨服务。这是您的令牌可用的时刻。

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'