关于 Firebase云消息传递的热门话题一直是针对某些低端设备从onMessageReceived()
方法未触发Data Payload消息的热门话题。这是真的。结果如下:
应用程序被杀死的情况:
设备获得了数据有效负载:
设备无法获取数据有效负载:
确保我没有从服务器/邮递员发送通知键。
我正在寻找解决方案,我从Firebase获得了数据负载,包括所有类型的设备,OS&很明显来自API级别15.我的邮递员详情如下。
{
"registration_ids": ["fC5uxGSRCsg:APA91bHh9fMXQ41LpX6tjjSsBKGrKTWYpzKimLDzvBGSHDPo2pq87JHqogUp2kqrmJi06siG_p6DfgRCim23iFzlBQAIrgtMDqRW4s39zUqv9CzyPqzxVl5PtnHPRDs4OagTuTePNyDI"],
"data": {
"title" : "my_custom_value",
"message" : "tekksdasdasdsa",
"isBackground" : "",
"payload" : {
},
"timestamp" : "",
"imageUrl" : "",
}
}
答案 0 :(得分:2)
在某些设备中,如 MI ,如果应用程序托盘中的应用程序被删除,您将无法收到通知!但是,如果您杀死某项活动并且未从应用程序托盘中删除,您将收到通知!
在小米手机中,他们根据特定标准将应用列入白名单或将其列入黑名单。如果您下载的是应用程序,并且该应用程序位于白名单中,则会允许该应用显示通知。
如何测试: -
在杀死您的应用活动之后尝试测试您的应用,而不是从应用托盘移除,如果工作正常,那就是您可以在最后完成的任务!
答案 1 :(得分:1)
根据Firebase文档:
您可以使用两种方法为下游消息分配传递优先级:普通和高优先级。正常和高优先级消息的传递如下:
普通优先级。这是数据消息的默认优先级。
高优先级。这是通知消息的默认优先级。
由于您使用的是数据有效负载,因此默认情况下通知优先级设置为正常。回到文档:
大多数消息类型都提供了当您的应用在后台时,
onMessageReceived
以下例外:通知消息会传递。在 在这种情况下,通知将传递到设备的系统托盘。 用户点按通知会默认打开应用启动器。
数据讯息:在Android平台上,数据讯息可以继续使用 背景和前景。数据消息将由。处理
onMessageReceived()
。这里的平台特定说明将是:开 Android,可以在Intent中检索数据有效负载 发起你的活动。包含通知和数据有效负载的消息:背景和 前景。在这种情况下,通知将传递给 设备的系统托盘,数据有效负载在附加功能中提供 您的启动器活动的意图。
我怀疑它与使用数据有效负载有关。由于应用程序因某些设备中的ram管理而被杀,可能会跳过onMessageReceived()
。一个简单的解决方法是使用数据和通知有效负载。因此,即使应用程序不再运行,您仍会在系统托盘中收到通知。稍后在通知托盘中单击后处理通知。
{
"data": {
"message": "message_body",
"title": "message_title"
},
"notification": {
"body": "message_body",
"title": "message_title"
}
}
查看官方文档here.