在combined way中阅读有关云消息的firebase文档,我在Android设备中获取数据消息时遇到了问题。
var payload = {
notification: {
title: "Test",
body: "Test body"
},
data: {
score: "850",
close: "635.67"
}
};
我希望在android设备的'onMessageReceived'中获取数据字段,但我只收到一条通知消息。我试着点击这条消息,但我仍然没有得到'onMessageReceived'。
我添加了一个intent过滤器来触发主要活动,在通知有效负载中添加'clickAction'(在firebase引用中引用)和'click_action'(正如我在一些问题中看到的那样),我也得到了相同的结果。
清单
<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代码:
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());
}
}
}
一些提示?
答案 0 :(得分:0)
如果您的有效负载中有notification
密钥,则该消息将成为通知消息。
当应用在后台时,会自动显示通知消息。
点击通知后,FCM会启动您的主要活动(如果您指定click_action
,则启动另一项活动)
在活动中,您可以使用getIntent()
来获取启动活动的意图。
如果您的活动是由FCM启动的,您会在用于启动活动的意图中找到data
有效负载。