Android应用程序中的Firebase云消息传递仅适用于通知而不适用于数据消息

乔丹史密斯

使用 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 。有人可以帮忙吗?

弗兰肯斯坦

如果您的通知包含"notification":它会显示通知但当应用程序未运行时则onMessageReceived不会调用。对于这种情况,您已在"data":字段中传递数据notification":从您的响应中删除

您的回复必须是这样的

{
"to": "your device token",
 "data":{
   "name": "John",
    "message": "Hii! "
    }
 }

我有同样的问题,这对我有用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

找不到XF绑定..属性,仅适用于我的Android应用程序,而不适用于iOS

如何发布仅适用于iPhone而不适用于iPad的应用程序?

Firebase消息不适用于iOS中的“数据”消息

DKIM仅适用于短消息

使用Firebase的Laravel FCM推送通知不适用于iOS,但适用于Android

Firebase通知不适用于Android O

Bot仅适用于直接消息

添加适用于Android的Firebase应用内消息传递SDK后出现错误

通知不适用于Android Oreo

应用程序在单击时崩溃,并显示以下消息:“此类不适用于键postReplyButton的键值编码兼容。”

数据注释不适用于[Required(错误消息= ......)]

将IOS中的应用程序功能限制为仅适用于Cell / WiFi数据。

Facebook Web应用程序登录仅适用于IP,但不适用于域

HTTPS请求不适用于android应用程序

适用于Android应用程序的数据库

API适用于Java应用程序,但不适用于JavaFX

AppIndicators不适用于电子应用程序(适用于Linux的Skype,Discord等)

适用于 Android 应用程序的 SQL 或 Firebase

单击不适用于用户在 android 应用程序中添加的小部件

需要关于 kivy mapview 的帮助,适用于 Windows,但不适用于 android,应用程序无法启动

我的应用程序不适用于 Marshmallow 但适用于 Nougat?

TabPane 不适用于我的应用程序

NativeScript 应用程序名称中的撇号不适用于 Android/ios 部署

HttpWebRequest/HttpWebResponse 仅适用于控制台应用程序而不适用于 ASP.NET

通知不适用于变量 (Android)

适用于 iOS 的 Firebase 云消息传递本地化参数?

应用程序适用于 iphone 11 但不适用于 iphone 8

我的 recyclerView 适用于调试,但不适用于“运行应用程序”

IMAPFolder getSortedMessages 不适用于 Liferay/Tomcat 但适用于常规 Java 应用程序