FirebaseInstanceIdService is deprecated now

Munish Chandel | July 28, 2018 at 02:13 PM | 224 views


FirebaseInstanceIdService is deprecated now

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.

What to do now?

  1. 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.

  2. Now we need to @Override onNewToken() get Token in FirebaseMessagingService. This method will be called whenever a token is refreshed by firebase server.

  3. Change the way fcm token is accessed from any activity using newer mechanism.

Thus our FirebaseMessagingService will look like below:

MyFirebaseMsgService.java
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

AndroidManifest.xml
<service
        android:name=".MyFirebaseMsgService"
        android:stopWithTask="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
</service>

How to get Token in your activity?

Now FirebaseInstanceId.getInstance().getToken() is also deprecated.

Old approach to get Token
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d("FCM", "Refreshed Device token: " + refreshedToken);

New way to get Token in Activity is this:

New way to get FCM Token in your activity
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.


Buy DRM Free PDF for Complete Collection of Interview Questions
Generic placeholder image
ebook PDF - Cracking Java Interviews v3.4 by Munish Chandel

240 real Java interview questions on core Java, concurrency, algorithms, design & data structures, spring, hibernate for Investment Bank, Healthcare IT, product and service based companies, Author : Munish Chandel, Price: 250, Type: PDF

Free Email Updates
Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.


Similar Articles:
  1. Retrofit Basic Authentication in Android App with OkHttp
  2. FirebaseInstanceIdService is deprecated now
  3. Firebase Cloud Messaging in Android App using Command Pattern
Facebook Page
Related Topics
Free Email Updates (100+ Subscribers)

Enter your email address to subscribe to this blog and receive notifications of new posts by email.


This website uses cookies to ensure you get the best experience on our website. more info