当应用程式被使用者或Android作业系统停止或杀死时,Android应用程式未收到Firebase通知

时间:2018-12-31 09:55:45

标签: android firebase firebase-cloud-messaging xmpp gsm

我的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" />

1 个答案:

答案 0 :(得分:1)

根据Firebase Documentation,它指出,如果仅从服务器端发送notification对象,则当您的应用程序位于前台时它将调用onMessageReceived()函数,并显示如果应用程序在后台运行,请在系统/通知托盘中输入。

如果您在同一通知中同时发送notificationdata对象,它将在前台调用onMessageReceived()函数,当应用程序在后台时,它将显示通知在托盘和data对象中,只有在您单击通知并移至您指定的意图后,您才能获得。

现在,当您仅发送data对象时,应用每次都会调用onMessageReceived()函数。

因此,如果您希望每次执行onMessageReceived(),请仅从服务器端发送data对象。