应用被杀死时,onMessageReceived不会与数据消息一起调用

时间:2020-07-08 21:40:00

标签: android firebase firebase-cloud-messaging

我正在使用NodeJS作为后端开发实时聊天应用程序。每当用户A向用户B发送消息时,我都会使用以下格式向https://fcm.googleapis.com/fcm/send发送请求:

   {
      "to":/* User B's FCM Token */",
      "data": {
           "body": /* Message body */,
       }
  }

通知我仅发送数据,不发送通知。这样就变成了data message

我遇到的问题是,当应用程序处于前台状态或未被杀死时,onMessageReceived被调用,并且我能够获取数据,但是当它被杀死时,onMessageReceived不被调用。我不能简单地使用通知消息,因为消息主体是使用ECDH加密的。我需要获取数据,将其解密并显示通知。

清单:

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <service
        android:name=".MyFirebase"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
</application>

我的FirebaseMessagingService

class MyFirebase : FirebaseMessagingService() {

    override fun onMessageReceived(p0: RemoteMessage) {
        super.onMessageReceived(p0)

        println("onMessageReceived called ${p0.data} ")
    }

    override fun onNewToken(p0: String) {
        super.onNewToken(p0)
        println("onNewToken called $p0")
    }
}

有关此主题here的答案。这是正确的吗?

编辑: 我的测试设备是Huawei P Smart2019。问题可能与该设备有关。

0 个答案:

没有答案