почему remoteMessage от FCM не работает в фоновом режиме? - PullRequest
0 голосов
/ 12 июля 2020

Когда я отправляю сообщение с сервера, работать, только когда приложение работает на переднем плане. Я отправляю сообщение с полезной нагрузкой и телом уведомления. если приложение работает в фоновом режиме, onMessageReceived не вызывается. что может не сработать Мой код n Манифест

 <application
        android:largeHeap="true"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
       android:usesCleartextTraffic="true">
      <meta-data
            android:name="com.google.firebase.messaging.default_notification_icon"
            android:resource="@drawable/logo_mediano" />
        <meta-data
            android:name="com.google.firebase.messaging.default_notification_color"
            android:resource="@color/colorAccent" />
        <meta-data
            android:name="com.google.firebase.messaging.default_notification_channel_id"
            android:value="@string/default_notification_channel_id"/>
       <service
            android:name=".mackey.FCMService"
            android:enabled="true"
            android:directBootAware="true"
            android:exported="false"

            android:resource="@drawable/ic_menu_camera">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />

            </intent-filter>
        </service>
        </aplication>
        <uses-permission android:name="android.permission.INTERNET" />

Мой класс обслуживания:

        public class FCMService extends FirebaseMessagingService {
    private static final String LOGTAG = "android-fcm";

    public FCMService() {
    }
   @Override
    public void onNewToken(String token) {
     sendRegistrationToServer(token);
    }
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        System.out.println("remote message");
     
        if (remoteMessage.getNotification() != null) {

            Log.d(LOGTAG, "NOTIFICATION");
            Log.d(LOGTAG, "Title: " + remoteMessage.getNotification().getTitle());
            
        }

        if(remoteMessage.getData() != null) {
             Log.d(LOGTAG, "DATA");
            Log.d(LOGTAG, "Title php : " + remoteMessage.getData().get("title"));
            Log.d(LOGTAG, "Image: " + remoteMessage.getData().get("image"));
           
        }
    }

Приложение модуля градиента

implementation 'com.google.firebase:firebase-messaging:20.2.3'

Logcat в фоновом режиме:

V/FA: Connecting to remote service
D/FA: Connected to remote service
V/FA: Processing queued up service tasks: 1
I/FirebaseMessaging: Starting download of: https://image.freepik.com/vector-gratis/imagen-tridimensional-coche-taxi-aislado-fondo-blanco_53876-12108.jpg
W/FirebaseMessaging: Notification Channel set in AndroidManifest.xml has not been created by the app. Default value will be used.
V/FA: Inactivity, disconnecting from the service

Logcat на переднем плане:

I/System.out: remote message
D/android-fcm: NOTIFICATION
D/android-fcm: new Notification
D/android-fcm: DATA
D/android-fcm: Title php : data  php
D/android-fcm: Title php : default

1 Ответ

1 голос
/ 13 июля 2020

Когда приложение находится в фоновом режиме, onMessageReceived не вызывается, пока пользователи не нажмут на уведомление, связанное с сообщением pu sh. Если вы хотите, чтобы система вызывала onMessageReceived без нажатия пользователем на уведомление, попробуйте отправить беззвучное сообщение pu sh.

...