摘自 Firebase Cloud 消息传递文档中的 定义消息负载:
您可以通过创建对象来指定一种或两种消息类型数据和/或通知键。
该文档给出了组合消息的示例:
var payload = {
notification: {
title: "$GOOG up 1.43% on the day",
body: "$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day."
},
data: {
stock: "GOOG",
open: 829.62,
close: "635.67"
}
};
同样来自在后台应用中处理通知消息中的文档:
这包括同时包含通知和数据有效负载的消息 (以及从通知控制台发送的所有消息(。在这些 在这种情况下,通知将传递到设备的系统托盘,并且 数据有效负载以您的意图的额外方式提供 启动器活动。
我正在发送包含此有效负载的通知:
const payload = {
notification: {
title: '...',
body: '...',
},
data: {
test: "test"
},
};
admin.messaging().sendToDevice(tokens, payload).then(...)
但extras
始终为空:
Intent intent = getIntent();
if (intent != null) {
Bundle extras = intent.getExtras();
if (extras != null) {
// do something
}
}
我做错了什么?
接收同时包含通知和数据有效负载的消息时,应用行为取决于应用是在后台还是前台,本质上是接收时应用是否处于活动状态。
在后台时,应用会在通知托盘中接收通知有效负载,并且仅在用户点击通知时处理数据有效负载。
在前台时,应用会收到一个消息对象,其中包含两个有效负载。
因此,基本上,如果应用程序处于前台,则意图不会有任何通知附加功能。 如果不是这种情况,那么您在配置中做错了什么。