应用程序退出时未调用 FirebaseMessagingService onMessageReceived(不在后台)
Posted
技术标签:
【中文标题】应用程序退出时未调用 FirebaseMessagingService onMessageReceived(不在后台)【英文标题】:FirebaseMessagingService onMessageReceived not called when app quit (not in Background) 【发布时间】:2016-08-13 16:15:03 【问题描述】:好的,我只是想确定,当应用退出(不在后台)时,FCM onMessageReceived 是否不会被调用?
当应用程序正在运行并且应用程序在后台时,我的通知工作,但当应用程序退出时它不起作用(滑动表单运行应用程序)。
"data":
"title": "Title",
"body": "Body",
"icon": "myicon",
"priority": "high"
,
"notification":
"title": "Title",
"body": "Body",
"icon": "myicon",
"priority": "high"
,
"registration_ids": [some_ids]
【问题讨论】:
当您的应用处于前台时,通知消息将发送到您的应用的onMessageReceived()
。当应用程序不在前台时,Firebase 云消息传递会自动显示消息。见the Firebase documentation 和this previous question。
我已经用将发送到 Firebase API 的 json 数据更新了我的问题。让Firebase Cloud Messaging像你说的那样自动显示消息是不是错误的json格式?
通常情况下,即使您同时使用两种消息类型(通知和数据),它的行为就像您正在使用通知类型消息并且在应用程序处于后台时不会触发您,所以建议只使用如果您的应用旨在在后台应用程序中使用消息内容,则为“数据”消息。
【参考方案1】:
有两种类型的 fcm 消息 - 数据消息和通知消息。
无论应用程序是在前台还是后台,数据消息(包含数据paylaods)都在onMessageReceived中处理。
只有在应用处于前台时才会在 onMessageReceived 中接收通知消息。
同时包含通知和数据负载的消息被视为通知消息。它们将由系统自动传送到系统托盘上。
【讨论】:
【参考方案2】:没有问题,因为 fcm 服务本身在后台,从正在运行的应用程序滑动后,您只需 wifi 禁用/启用,然后您的 fcm 将工作
您会收到通知,只是我检查是否按预期工作
【讨论】:
我已经用将发送到 Firebase API 的 json 数据更新了我的问题。让 Firebase 云消息传递自动显示消息是错误的 json 格式吗?以上是关于应用程序退出时未调用 FirebaseMessagingService onMessageReceived(不在后台)的主要内容,如果未能解决你的问题,请参考以下文章
Qt 5.1 Windows 7 - Windows 注销时未调用 aboutToQuit()
取消用户关闭/退出应用程序时未执行的 LocalNotifications 方法