【发布时间】:2018-06-06 16:51:00
【问题描述】:
我通过将以下 JSON 内容 POST 到 URL https://fcm.googleapis.com/fcm/send
,向 后台 中的 Android 应用发送 FCM 通知消息数据负载{
"notification":{"body":"Alexander performs a move!"},
"data":{"gid":1},
"to":"c0k6VWNdTSo:APA91bETXBGasi-X6-VGWTWYtSv3u1NETwqblEW1uoE1MswFkb9-Yf-rlVEGbaPD4gLQh3JLWIAyQRvAYNcdtmZLgFDhUEnXwFpVQSNFFr0xl47sK9FnvRY9J6JLX2P34UvpuCbZYBZ4"
}
并收到 FCM 后端发送成功的确认信息:
{
"multicast_id":7103158248293730650,
"success":1,
"failure":0,
"canonical_ids":0,
"results":[{"message_id":"0:1514203203800219%c7d12ab4c7d12ab4"}]
}
之后,我点击 Android 手机顶部的通知,我的应用正在启动(之前它在 背景 中):
然后我尝试访问“gid”值,我通过onCreate 方法中的代码在通知的“数据”部分中设置了该值:
Intent i = getIntent();
int gid = i.getIntExtra("gid", 0);
if (gid > 0) {
// TODO show GameFragment
}
不幸的是,没有这样的 EXTRA(您还可以在上面的调试器屏幕截图中看到,由于某种原因,没有通过意图传递的额外内容)。
请问我在这里缺少什么?根据Firebase doc(强调我的):
在后台时,应用会在 通知托盘,并且仅在用户点击时处理数据负载 在通知上。
点击通知后如何访问“数据”部分,不是作为intent extra传递的吗?
【问题讨论】:
-
请发布您的 onMessageReceived 方法的代码
-
onMessageReceived方法没有被调用,因为我正在向 background 中的应用发送 mixed 推送通知。我的问题是用户点击通知后如何处理“数据”部分。 -
如果您仔细查看上面的调试图片,我发现 i.extras 中确实存在 gid,这是您发送的来自 firebase 的 1
-
我的意思是检查图像右下角框 -> 在主要活动下方有“i”变量,您已将其扩展为调试,其中有额外内容,在该行中您会看到 gid=1 我猜您在活动包中收到 gid,KEY_GID 的值是多少?
-
是的,你可能是对的,这就是我的价值。
KEY_GID字符串只是“gid”。
标签: android firebase push-notification firebase-cloud-messaging