Md *_*din 6 java android firebase firebase-cloud-messaging
关于Firebase Cloud Messaging的热门话题一直是onMessageReceived()某些低端设备的方法没有触发Data Payload消息.这是真的.结果如下:
应用程序被杀死场景:
设备获得数据负载:
设备无法获得数据负载:
确保我不从服务器/邮递员发送通知密钥.
我正在寻找解决方案,我从Firebase获得了数据负载,包括所有类型的设备,操作系统以及显然来自API级别15.我的邮递员详细信息如下.
{
"registration_ids": ["fC5uxGSRCsg:APA91bHh9fMXQ41LpX6tjjSsBKGrKTWYpzKimLDzvBGSHDPo2pq87JHqogUp2kqrmJi06siG_p6DfgRCim23iFzlBQAIrgtMDqRW4s39zUqv9CzyPqzxVl5PtnHPRDs4OagTuTePNyDI"],
"data": {
"title" : "my_custom_value",
"message" : "tekksdasdasdsa",
"isBackground" : "",
"payload" : {
},
"timestamp" : "",
"imageUrl" : "",
}
}
Run Code Online (Sandbox Code Playgroud)
根据 Firebase 文档:
\n\n\n\n\n您有两个选项可以为下游消息分配传送优先级:正常优先级和高优先级。普通和高优先级消息的传递工作如下:
\n\n正常优先级。这是数据消息的默认优先级。
\n\n高优先级。这是通知消息的默认优先级。
\n
由于您使用的是数据负载,因此通知优先级默认设置为正常。回到文档:
\n\n\n\n\n\n\n
onMessageReceived为大多数消息类型提供,但\n以下例外:通知消息:当您的应用程序处于后台时发送。在这种情况下,通知将传送到设备\xe2\x80\x99s 系统托盘。\n 默认情况下,用户点击通知会打开应用程序启动器。
\n\n数据消息:在Android平台上,数据消息可以在后台和前台工作。数据消息将由\n处理
\n\nonMessageReceived()。这里的特定于平台的注释是:在 Android 上,可以在用于启动 Activity 的 Intent 中检索数据负载。具有通知和数据负载的消息:后台和\n 前台。在这种情况下,通知将传递到\n 设备\xe2\x80\x99s 系统托盘,并且数据负载将在启动器活动的意图的额外\n 中传递。
\n
我怀疑这与使用数据有效负载有关。由于应用程序在某些设备中因内存管理而被终止,onMessageReceived()可能会被跳过。一个简单的解决方法是同时使用数据和通知负载。这样,即使应用程序不再运行,您仍然会在系统托盘中收到通知。稍后从通知托盘中单击后处理通知。
{\n "data": {\n "message": "message_body",\n "title": "message_title"\n },\n "notification": {\n "body": "message_body",\n "title": "message_title"\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n查看官方文档。
\n| 归档时间: |
|
| 查看次数: |
2372 次 |
| 最近记录: |