Вы можете напрямую записать токен в свой метод onNewToken класса FireBaseMessagingService ...
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.i("FCM", "FCMMessagingService token=" + s);
//store it in prefrence
ApplicationPreferences.setFcmToken(getApplicationContext(), s);
}
Не нужно вызывать ... (этот метод полезен, когда вы хотите токен в другом классе / деятельности)
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
String token = instanceIdResult.getToken();
Log.d("Token",token);
}
});
Подтверждение двух служб в файле манифеста
<service android:name=".fcm.FireBaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:name=".fcm.FireBaseInstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>