当前位置: 首页 > 知识库问答 >
问题:

当应用程序被用户或Android OS停止或杀死时,Android应用程序未收到Firebase通知[重复]

袁帅
2023-03-14

我的android应用程序在关闭时没有收到任何firebase通知,当我关闭应用程序时,FirebaseMessagingService会被操作系统关闭。当应用程序处于前台或后台时,一切工作都很好。当应用程序在后台并且我发送了一个数据消息时,它由我的FirebaseMessagingService中的OnMessageReceived()接收(有趣的是,它为每个消息创建并随后销毁,即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个答案

常彭薄
2023-03-14

根据Firebase文档,它声明如果从服务器端只发送notification对象,当应用程序处于前台时,它将调用OnMessageReceived()函数,如果应用程序处于后台,它将显示在系统/通知托盘中。

如果在同一通知中同时发送通知数据对象,它将在前台调用OnMessageReceived()函数,当应用程序处于后台时,它将在托盘中显示通知和数据对象,只有当您点击通知并移动到您指定的意图时,您才会获得该对象。

现在,当您将只发送Data对象时,app每次都会调用OnMessageReceived()函数。

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

 类似资料: