当前位置: 首页 > 知识库问答 >
问题:

应用程序能否在后台检测firebase云消息?

张昊穹
2023-03-14

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

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

当我的应用程序收到云消息并且我的应用程序在后台时,如果我需要做些什么。

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

是设置“click_action”的唯一方法,如中所述https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification-当用户点击通知,使我的应用程序能够意识到有云消息到达时,有效负载支持?

更新:

正如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扩展而来的服务类中的回调“onMessageReceived”上

共有2个答案

姬捷
2023-03-14

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

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

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()方法中收到。

祁鸿哲
2023-03-14

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

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

 类似资料:
  • 我可能已经阅读了所有其他与此相关的SO线程,但我找不到答案,而且在Android监视器中也没有日志跟踪。有人对此有提示吗?

  • 我最近将我的iOS应用从一个开发人员帐户转移到另一个开发人员帐户,现在我无法从Firebase云消息发送推送通知到我的应用。我尝试了以下方法: null 很明显,FCM代币已经更新,问题在于我在苹果方面遗漏了/忘记了做什么,以允许FCM与APN对话,但我无法找出我做错了什么。有什么想法吗?

  • 我知道有一个CloudPlatform(类),但不知道如何为不同的平台动态配置它。

  • 问题内容: 有什么方法可以知道我的应用程序的状态是后台模式还是前台模式。谢谢 问题答案: 将返回应用程序的当前状态,例如: UIApplicationStateActive UIApplicationStateInactive UIApplicationStateBackground 迅捷3+ 目标C

  • 我正在试验的Android信标库,我能够使其工作与苹果兼容的信标监测和测距添加自定义解析器(请参阅这是正确的布局,以检测iBeacons与AltBeacon的Android信标库?) 现在我正在尝试使用此处显示的示例代码编写一个在后台启动的应用程序: http://altbeacon.github.io/android-beacon-library/samples.html 这是我的代码: 不幸的

  • 我正在使用Firebase,并测试在应用程序处于后台时从服务器向应用程序发送通知。通知发送成功,它甚至出现在设备的通知中心上,但是当通知出现或者即使我单击它,我的FCMessagingService中的onMessageReceived方法也从未被调用。 当我在应用程序处于前台时进行测试时,调用了onMessageReceived方法,所有工作都很好。该问题发生在应用程序在后台运行时。 这是有意为