This class was deprecated.
In favour of overriding onNewToken in FirebaseMessagingService. Once that has been implemented, this service can be safely removed.
Upasana | August 31, 2019 | 2 min read | 4,203 views
Recently got many updates in firebase dependencies, one big change is that now FirebaseInstanceIdService
is deprecated in favor of onNewToken in FirebaseMessagingService.
This class was deprecated.
In favour of overriding onNewToken in FirebaseMessagingService. Once that has been implemented, this service can be safely removed.
There is no need for FirebaseInstanceIdService
to receive FCM token from firebase, instead FirebaseMessagingService
will take care of providing new token now. So we can safely remove FirebaseInstanceIdService
class from our codebase.
Now we need to @Override onNewToken()
get Token in FirebaseMessagingService
. This method will be called whenever a token is refreshed by firebase server.
Change the way fcm token
is accessed from any activity using newer mechanism.
Thus our FirebaseMessagingService will look like below:
public class MyFirebaseMsgService extends FirebaseMessagingService {
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.e("NEW_TOKEN", refreshedToken);
// Get updated InstanceID token.
// If you want to send messages to this application instance or
// manage this apps subscriptions on the server side, send the
// Instance ID token to your app server.
//TODO: Send Token to Server
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// Not getting messages here? See why this may be: https://goo.gl/39bRNJ
Log.d(TAG, "From: " + remoteMessage.getFrom());
// Check if message contains a data payload.
}
}
Also, we need to make sure that this class is properly registered in AndroidManifest.xml
<service
android:name=".MyFirebaseMsgService"
android:stopWithTask="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
Now FirebaseInstanceId.getInstance().getToken()
is also deprecated.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d("FCM", "Refreshed Device token: " + refreshedToken);
New way to get Token in Activity is this:
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this, new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
String newToken = instanceIdResult.getToken();
Log.e("newToken", newToken);
}
});
Hope that helps! happy coding.