0
votes

Reading documentation of firebase about cloud message in combined way, I've had problems to get data message in android device.

var payload = {
    notification: {
        title: "Test",
        body: "Test body"
    },
    data: {    
        score: "850",
        close: "635.67"
    }
};

I expect to get data field at 'onMessageReceived' in android device, but I got only a notification message. I tried to tap the message and I still got nothing at 'onMessageReceived'.

I've add a intent filter to trigger the main activity, add 'clickAction'(as referred in firebase reference) and 'click_action'(as I saw in some questions) in notification payload, and I also got the same.

MANIFEST

<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@mipmap/ic_launcher" />

<meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/blue" />


<service
android:name=".connection.TestFirebaseMessagingService">
<intent-filter>
    <action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>


<service
android:name=".connection.TestFirebaseIDService">
<intent-filter>
    <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>

Java Code:

public class FirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "TestFirebase";

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {

    Log.d(TAG, "From: " + remoteMessage.getFrom());
    LogNotification.d(TAG, "NOTIFICATION - From: " + remoteMessage.getFrom());


    // Check if message contains a data payload.
    if (remoteMessage.getData().size() > 0) {
        Log.d(TAG, "Message data payload: " + remoteMessage.getData());
        LogNotification.d(TAG, "NOTIFICATION - Message data payload: " + remoteMessage.getData().toString());
    }

    // Check if message contains a notification payload.
    if (remoteMessage.getNotification() != null) {
        Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
        LogNotification.d(TAG, "NOTIFICATION - Message Notification Body: " + remoteMessage.getData().toString());

    }
}

}

Some tips?

1
Add your Java code, please - OneCricketeer
Ok, I add manifest too. Done. - Anderson Pimentel

1 Answers

0
votes

If you have the notification key in your payload then the message becomes a notification message.

Notification messages are displayed automatically when the app is in background.

When the notification is clicked FCM launches your main activity (or another one if you specified click_action)

In the activity you can use getIntent() to get the intent that launched the activity.

If your activity was launched by FCM you will find the data payload in the intent used to launch the activity.