我的android应用被杀死时没有收到任何Firebase通知,FirebaseMessagingService
在我关闭应用时被操作系统杀死。当应用程序在前台或后台时,一切正常。当应用程序在后台运行并且我发送数据消息时,onMessageReceived()
在我的FirebaseMessagingService
中收到了消息(有趣的是,它会针对每条消息FirebaseMessagingService
创建并销毁)。
当我杀死应用程序(通过从打开的应用程序列表中滑动)时,onMessageReceived()
中不再收到消息。所有服务都被杀死!!
谁能帮帮我吗?提前致谢!
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- DefaultOrderedBroadcastReceiver will start this service to send notifications to system tray -->
<service
android:name=".fcm.SystemTrayNotificationsSenderIntentService"
android:enabled="true"
android:exported="false" />
<!-- the FCM receiver service -->
<service
android:name=".fcm.FCMNotificationReceiverService"
android:exported="true"
android:stopWithTask="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service
android:name=".fcm.chat.FCMChatOfflineMessagesNotificationJobSchedulerService"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" />
答案 0 :(得分:1)
根据Firebase Documentation,它指出,如果仅从服务器端发送notification
对象,则当您的应用程序位于前台时它将调用onMessageReceived()
函数,并显示如果应用程序在后台运行,请在系统/通知托盘中输入。
如果您在同一通知中同时发送notification
和data
对象,它将在前台调用onMessageReceived()
函数,当应用程序在后台时,它将显示通知在托盘和data
对象中,只有在您单击通知并移至您指定的意图后,您才能获得。
现在,当您仅发送data
对象时,应用每次都会调用onMessageReceived()
函数。
因此,如果您希望每次执行onMessageReceived()
,请仅从服务器端发送data
对象。