【问题标题】:Can firebase cloud messages be detected by app in background?应用程序可以在后台检测到 Firebase 云消息吗?
【发布时间】:2016-09-17 15:15:00
【问题描述】:

来自 Firebase 网站上的文档: https://firebase.google.com/docs/cloud-messaging/downstream

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

如果我的应用收到云消息并且我的应用处于后台时需要做某事。

是否可以在自定义 BroadcastReceiver 或 Service 类中接收通知,而不是发送到设备的系统托盘

是设置“click_action”的唯一方法,如https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification-payload-support 中所述 当用户点击通知以便我的应用能够知道有一条云消息到达时?

更新:

正如tyczj 所提到的,以下 curl 命令示例完成了这项工作:

curl --header "Authorization: key=$server_key" --header Content-Type:"application/json" https://fcm.googleapis.com/fcm/send -d "{\"to\": \"/topics/friendly_engage\",\"data\": {\"score\":\"123\"}}"

消息将出现在从 FirebaseMessagingService 扩展的 Service 类中的 callack“onMessageReceived”上

【问题讨论】:

标签: android push-notification firebase firebase-cloud-messaging


【解决方案1】:

是否可以在自定义 BroadcastReceiver 或 Service 类中接收通知,而不是发送到设备的系统托盘?

是的,不要从 Firebase 控制台发送推送消息,而是使用 API curl 请求发送。

HTTP POST 请求

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{ "data": {
    "score": "5x1",
    "time": "15:10"
  },
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."
}

即使您的应用程序处于后台或被终止或正在运行,也会在onMessageReceived() 方法中接收到上述推送。

【讨论】:

    【解决方案2】:

    如果您想在您的应用中获得推送并且没有出现通知,您应该从您的推送有效负载中删除 notification 标记并将其替换为 data 标记

    在此处阅读有关您的有效负载如何工作的更多信息https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages

    【讨论】:

    • 嗨,这可以在没有服务器端代码的情况下应用于 Firebase 通知吗?如果可以,能否提供一些代码在Android Studio上实现,非常感谢。
    • 推送消息只能从服务器发送
    • 因此,如果通知在后台(仅来自 Firebase 通知),则没有选项可以将通知接收到应用中,对吧?有没有办法至少改变图标?目前它会自动使用应用程序图标。
    • 我不明白您的意思是您可以在应用程序生命周期的任何时间点(前台/后台)收到推送消息
    • 根据docs,如果应用在后台,通知会发送到系统托盘Notification: system tray, Data: in extras意图。,所以这意味着如果应用程序在后台,我无法处理通知,问题是我的应用程序有一个圆形图标,它以白色显示,但在前台通知,我将其更改为特定的透明图标,那么如果应用程序在后台,有什么方法可以更改图标?
    猜你喜欢
    • 1970-01-01
    • 2019-12-12
    • 2016-10-05
    • 1970-01-01
    • 2020-04-05
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    相关资源
    最近更新 更多