A custom service for receiving messages (previously based on
(GcmListenerService
and now on FirebaseMessagingService
) is now
required only for the following use cases:
receiving messages with notification payload while the application is in foreground
receiving messages with data payload only
receiving errors in case of upstream message failures.
If you don't use these features, and you only care about displaying notifications messages when the app is not in the foreground, you can completely remove this service.
Update the Android Manifest
Before
<service android:name=".MyGcmListenerService" android:exported="false"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> </intent-filter> </service>
After
<service android:name=".MyFcmListenerService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>
Update your GcmListenerService
Change MyGcmListenerService.java
to extend FirebaseMessagingService
and update the signature of the method onMessageReceived()
.
This example updates the service name to MyFcmListenerService
. This is the
same class used for token management. If you are also migrating a class
extending InstanceIDListenerService
these will need to be combined into a
single class.
MyGcmListenerService.java
Before
public class MyGcmListenerService extends GcmListenerService { @Override public void onMessageReceived(String from, Bundle data){ ... } ... }
MyFcmListenerService.java
After
public class MyFcmListenerService extends FirebaseMessagingService { @Override public void onMessageReceived(RemoteMessage message){ String from = message.getFrom(); Mapdata = message.getData(); } ... }