【问题标题】:Firebase onMessageReceived not called when app is Killed应用程序被杀死时未调用 Firebase onMessageReceived
【发布时间】:2017-09-14 06:55:25
【问题描述】:

关于 Firebase 云消息传递 的热门话题表明,对于某些低端设备,不会从 onMessageReceived() 方法触发数据负载消息。这是真的。结果如下:

应用被杀场景:

设备获得了数据负载:

  1. Nexus 5X:操作系统 7.1

设备未获得数据负载:

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

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

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

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


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

}

【问题讨论】:

标签: java android firebase firebase-cloud-messaging


【解决方案1】:

在某些设备(如 MI)中,如果应用程序从应用程序托盘删除,您将不会收到通知!但如果您杀死了一个活动并且尚未从应用程序托盘中删除,您将收到通知!

在小米手机中,他们根据某些标准将应用列入白名单或黑名单。如果您下载了一个应用程序并且它在他们的白名单中,他们将允许该应用程序显示通知。
如何测试:-
尝试在终止您的应用程序活动后测试您的应用程序,而不是从应用程序托盘中删除,如果它工作正常,这就是您最后能做的!

【讨论】:

  • 我知道小米手机厂商的原因白名单过程。但我需要解决所有没有获得 FCM 有效载荷的设备。
【解决方案2】:

根据 Firebase 文档:

为下游消息分配传递优先级有两种选择:正常优先级和高优先级。正常和高优先级消息的传递方式如下:

普通优先级。这是数据消息的默认优先级。

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

由于您使用的是 data 负载,因此通知优先级默认设置为正常。返回文档:

onMessageReceived 提供给大多数消息类型,带有 以下例外:

通知消息:在您的应用处于后台时发送。在 在这种情况下,通知会发送到设备的系统托盘。 默认情况下,用户点击通知会打开应用启动器。

数据消息:在Android平台,数据消息可以在 背景和前景。数据消息将由 onMessageReceived()。此处特定于平台的说明是:开 Android,数据payload可以在Intent中获取 启动您的活动。

带有通知和数据负载的消息:背景和 前景。在这种情况下,通知将发送到 设备的系统托盘,数据负载在附加组件中交付 启动器 Activity 的意图。

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

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

查看官方文档here.

【讨论】:

    猜你喜欢
    • 2018-07-10
    • 2020-02-10
    • 2021-01-01
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    相关资源
    最近更新 更多