【发布时间】:2020-04-12 19:18:27
【问题描述】:
使用 firebase 向安卓设备发送推送通知。
<service
android:name=".util.MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
class MyFirebaseMessagingService: FirebaseMessagingService() {
private val TAG = "FirebaseMessaging"
override fun onNewToken(token: String) {
super.onNewToken(token)
Log.d(TAG, token)
}
override fun onMessageReceived(remoteMessage: RemoteMessage) {
super.onMessageReceived(remoteMessage)
if (remoteMessage.notification != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.notification!!.body)
}
}
}
我可以使用邮递员接收消息通知。
{
"registration_ids": ["KEY_HERE"],
"notification": {
"title": "HIMAN",
"body": "werwkejh"
}
}
这很好用,我可以添加一个断点,然后通知就会通过。但是,我需要这是一个数据类型的推送通知,因为当应用程序在后台时它不会触发 onMessageReceived 回调 - 只有前台。它说它在邮递员中也很成功。
{
"multicast_id": 863107467701827657,
"success": 1,
"failure": 0,
"canonical_ids": 0,
"results": [
{
"message_id": "MESSAGE_ID"
}
]
}
数据推送通知的请求体如下:
{
"registration_ids": ["KEY_HERE"],
"data":{
"message": "hi!"
}
}
它只是没有触发我需要的 onMessageReceived。有人可以帮忙吗?
【问题讨论】:
-
应用在前台时是否有效?
-
不是数据一,但通知它工作
-
如果你使用
data,不管是后台还是前台,它都应该可以工作,在onmessagereceived里面添加一个日志来检查 -
我这样做了...我切换到数据不起作用
-
反正最近发生了一些奇怪的事情,通知突然不起作用。可能是 firebase 出现故障或其他原因,因为我以前能够接收带有通知的通知(从不数据),但我没有更改任何内容。
标签: android firebase firebase-cloud-messaging