FirebaseInstanceIdService is deprecated and removed
1 min readJan 7, 2020
I just updated my code with latest dependency of androidx and got issue with class FirebaseInstanceIdService.
In FirebaseInstanceIdService we have a method
@Deprecated
@Override
public void onTokenRefresh() { //removed in 18.0.0
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
}
but this got deprecated in 16.2.0 and removed in 18.0.0, now to generate FCM token we have to use FirebaseMessagingService and override onNewToken(String s) to get the token as below.
MyFirebaseMessagingService.java
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onNewToken(String s) {
super.onNewToken(s);
// FCM token
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
// receive firebase notification
}
}
We have to register this service in manifest also
AndroidManifest.xml
<service
android:name="<package.name>.MyFirebaseMessagingService"
android:stopWithTask="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
To unregister the FCM token on logout.
FirebaseInstanceId.getInstance().deleteInstanceId();
To get the FCM token in Activity or Fragment
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( <Activity/Fragment context>, new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult result) {
String newToken = result.getToken();
}
});
And that’s it
Please do comment if you have any. Thank you.