繁体   English   中英

当应用被杀时,不会调用Firebase onMessageReceived

[英]Firebase onMessageReceived not called when app is Killed

关于Firebase云消息传递的趋势主题是,对于某些低端设备,不会从onMessageReceived()方法触发Data Payload消息。 这是真的。 结果如下:

应用程序被杀死场景:

设备获得数据负载:

  1. Nexus 5X:OS 7.1

设备无法获得数据负载:

  1. 小米MI 4C:OS 5.1
  2. 华为LUA-U22:OS 5.1

确保我不从服务器/邮递员发送通知密钥。

我正在寻找解决方案,我从Firebase获得了数据负载,包括所有类型的设备,操作系统以及显然来自API级别15.我的邮递员详细信息如下。

 {
    "registration_ids": ["fC5uxGSRCsg:APA91bHh9fMXQ41LpX6tjjSsBKGrKTWYpzKimLDzvBGSHDPo2pq87JHqogUp2kqrmJi06siG_p6DfgRCim23iFzlBQAIrgtMDqRW4s39zUqv9CzyPqzxVl5PtnHPRDs4OagTuTePNyDI"],
    "data": {
        "title" : "my_custom_value",
        "message" : "tekksdasdasdsa",
         "isBackground" : "",
          "payload" : {


          },
           "timestamp" : "",
            "imageUrl" : "",
     }

}

在某些类似MI的设备中,如果从应用程序托盘中 删除 应用程序,您将无法收到通知! 但如果您杀死了某项活动并且应用程序托盘中 删除 ,您将收到通知!

在小米手机中,他们根据特定标准将应用列入白名单或将其列入黑名单。 如果您下载的是应用程序,并且该应用程序位于白名单中,则会允许该应用显示通知。
如何测试 : -
在杀死您的应用活动之后尝试测试您的应用,而不是从应用托盘中删除,如果工作正常,那就是您可以在最后完成的任务!

根据Firebase文档:

您有两种方法可以为下游消息分配传递优先级:正常和高优先级。 正常和高优先级消息的传递如下所示:

正常优先。 这是数据消息的默认优先级。

高度优先。 这是通知消息的默认优先级。

由于您使用的是数据有效负载,因此默认情况下通知优先级设置为正常。 回到文档:

为大多数消息类型提供onMessageReceived ,但以下情况除外:

通知消息:当您的应用在后台时提供。 在这种情况下,通知将传递到设备的系统托盘。 用户点按通知会默认打开应用启动器。

数据消息:在Android平台上,数据消息可以在后台和前台工作。 数据消息将由onMessageReceived()处理。 这里的平台特定说明如下:在Android上,可以在用于启动活动的Intent中检索数据有效负载。

包含通知和数据有效负载的消息:背景和前景。 在这种情况下,通知将传递到设备的系统托盘,并且数据有效负载将在启动器活动的附加内容中传递。

我怀疑它与使用数据有效负载有关。 由于应用程序因某些设备中的ram管理而被杀死,因此可能会跳过onMessageReceived() 一个简单的解决方法是使用数据通知有效负载。 因此,即使应用程序不再运行,您仍会在系统托盘中收到通知。 稍后在通知托盘中单击后处理通知。

{
    "data": {
        "message": "message_body",
        "title": "message_title"
    },
    "notification": {
        "body": "message_body",
        "title": "message_title"
    }
}

查看官方文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM