Solution 1 :
When app is in background, onMessageReceived is not called until users taps on notification associated with push message.
If you want the system to call onMessageReceived without user tapping on notification, try to send a silent push message.
Problem :
When i send message from server, only work when app is running in foreground.
I send message with payload and notification body.
if app is running in background onMessageReceived is not called.
what could be failing
My code n Manifest
<application
android_largeHeap="true"
android_allowBackup="true"
android_icon="@mipmap/ic_launcher"
android_label="@string/app_name"
android_usesCleartextTraffic="true">
<meta-data
android_name="com.google.firebase.messaging.default_notification_icon"
android_resource="@drawable/logo_mediano" />
<meta-data
android_name="com.google.firebase.messaging.default_notification_color"
android_resource="@color/colorAccent" />
<meta-data
android_name="com.google.firebase.messaging.default_notification_channel_id"
android_value="@string/default_notification_channel_id"/>
<service
android_name=".mackey.FCMService"
android_enabled="true"
android_directBootAware="true"
android_exported="false"
android_resource="@drawable/ic_menu_camera">
<intent-filter>
<action android_name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
</aplication>
<uses-permission android_name="android.permission.INTERNET" />
My service class:
public class FCMService extends FirebaseMessagingService {
private static final String LOGTAG = "android-fcm";
public FCMService() {
}
@Override
public void onNewToken(String token) {
sendRegistrationToServer(token);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
System.out.println("remote message");
if (remoteMessage.getNotification() != null) {
Log.d(LOGTAG, "NOTIFICATION");
Log.d(LOGTAG, "Title: " + remoteMessage.getNotification().getTitle());
}
if(remoteMessage.getData() != null) {
Log.d(LOGTAG, "DATA");
Log.d(LOGTAG, "Title php : " + remoteMessage.getData().get("title"));
Log.d(LOGTAG, "Image: " + remoteMessage.getData().get("image"));
}
}
graddle Module App
implementation 'com.google.firebase:firebase-messaging:20.2.3'
Logcat in Background:
V/FA: Connecting to remote service
D/FA: Connected to remote service
V/FA: Processing queued up service tasks: 1
I/FirebaseMessaging: Starting download of: https://image.freepik.com/vector-gratis/imagen-tridimensional-coche-taxi-aislado-fondo-blanco_53876-12108.jpg
W/FirebaseMessaging: Notification Channel set in AndroidManifest.xml has not been created by the app. Default value will be used.
V/FA: Inactivity, disconnecting from the service
Logcat in foreground:
I/System.out: remote message
D/android-fcm: NOTIFICATION
D/android-fcm: new Notification
D/android-fcm: DATA
D/android-fcm: Title php : data php
D/android-fcm: Title php : default