3

来自 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”上

4

2 回答 2

7

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

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

于 2016-05-20T15:45:29.133 回答
4

是否可以在自定义 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()即使您的应用程序处于后台或被杀死或正在运行,上述推送也将在方法中接收。

于 2016-06-23T19:48:05.220 回答