Android FCM - onMessageReceived 未在后台调用
Posted
技术标签:
【中文标题】Android FCM - onMessageReceived 未在后台调用【英文标题】:Android FCM - onMessageReceived not called on background 【发布时间】:2018-04-12 22:03:16 【问题描述】:我正在使用 FCM。通知工作正常,onMessageReceived 在前台被调用,但是当我在应用程序处于后台/被杀时收到通知时,该方法永远不会被调用。
我正在使用 Firebase 文档建议的数据消息,但没有成功...
【问题讨论】:
【参考方案1】:FCM 有 3 种通知
1.通知消息
Json 正文将只有 notification
标签
如果应用程序在后台,FCM 将自动在客户端应用程序中显示通知。 onMessageReceived()
将在前台调用。在后台,onMessageReceived()
不会被调用。
"message":
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":
"title":"Portugal vs. Denmark",
"body":"great match!"
2。数据消息
Json body 将只有 data
标签
开发人员必须显示通知。 onMessageRecieved 将在前台和后台调用。 json 中应该只有数据标签
"message":
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data":
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
3.通知和数据消息
json 正文将同时具有 notification
和 data
标记。 onMessageReceived()
只有在应用程序处于前台时才会被调用。如果应用在后台,通知将自动显示,并且不会调用 onMessageReceived()。
"message":
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":
"title":"Portugal vs. Denmark",
"body":"great match!"
,
"data" :
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"
更多信息请阅读https://firebase.google.com/docs/cloud-messaging/concept-options
【讨论】:
这是我发送的通知:` payload = new JSONObject();通知 = 新 JSONObject(); notification.put("title", "Avisos"); notification.put("text", "Nuevos avisos disponibles"); payload.put("数据", 通知); payload.put("to", "/topics/avisos"); payload.put("优先级",10); ` 所以我必须包含一个令牌? 如果你发送消息给一个,那么你应该使用令牌【参考方案2】:这是我要发送的通知:
payload = new JSONObject();
notification = new JSONObject();
notification.put("title", "Avisos");
notification.put("text", "Nuevos avisos disponibles");
payload.put("data", notification);
payload.put("to", "/topics/avisos");
payload.put("priority",10);
【讨论】:
这应该是问题【参考方案3】:您确定要添加这样的服务吗? androidManifest.xml
<service android:name=".services.fcm.FirebaseService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
【讨论】:
以上是关于Android FCM - onMessageReceived 未在后台调用的主要内容,如果未能解决你的问题,请参考以下文章
FCM 推送通知在 android 中不起作用(使用 cordova-plugin-fcm 2.1.1 的 Ionic 项目)
FCM - 通过设备令牌和环境/组发送 android 推送通知