onMessageReceived не выполняется, когда приложение находится в фоновом режиме - PullRequest
0 голосов
/ 14 июля 2020

Когда я открываю приложение и получаю уведомление, отображается мое настраиваемое уведомление. Но когда приложение работает в фоновом режиме, оно просто использует настройку уведомлений по умолчанию. Я пытаюсь изменить значок уведомления с этой точки на свое приложение lo go. Notification with a dot

My FirebaseMessagingService code is below

public static final String TG = "FCMService";
NotificationManagerCompat notificationManager;

@Override
public void onNewToken(@NonNull String s) {
    Log.i(TG, "The token refreshed: " + s);
    super.onNewToken(s);
}

@Override
public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);

    if(remoteMessage.getData().size() > 0)
    {
        Log.d(TG, "Message data payload : " + remoteMessage.getData());
    }

    if(remoteMessage.getNotification() != null)
    {
        Log.d(TG, "Message notification body : " + remoteMessage.getNotification().getBody());
    }

    Log.d(TG, "From : " + remoteMessage.getFrom());

    Map s =  remoteMessage.getData();

    sendNotification(s.get("message"));


}

private void sendNotification(String message) {
    notificationManager = NotificationManagerCompat.from(this);

    Intent intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 ,intent, PendingIntent.FLAG_UPDATE_CURRENT);

    Notification notification = new NotificationCompat.Builder(this, CHANNEL_1_ID)
            .setSmallIcon(R.drawable.ic_07c1b5098af03f95f3c3e8f7d461fb78)
            .setContentTitle("Just In")
            .setContentText(message)
            .setPriority(NotificationCompat.PRIORITY_DEFAULT)
            .setContentIntent(pendingIntent)
            .build();
    notificationManager.notify(1, notification);
}

And my Manifest file is

  

Ответы [ 2 ]

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

Есть два типа сообщений, сообщений с данными и уведомлений. Сообщения данных обрабатываются здесь, в onMessageReceived, независимо от того, находится ли приложение на переднем плане или в фоновом режиме. Сообщения данных - это тип, традиционно используемый в GCM. Уведомляющие сообщения принимаются здесь, в onMessageReceived, только когда приложение находится на переднем плане. Когда приложение работает в фоновом режиме, отображается автоматически созданное уведомление. Когда пользователь нажимает на уведомление, он возвращается в приложение. Сообщения, содержащие как уведомление, так и полезные данные, рассматриваются как сообщения уведомления. Консоль Firebase всегда отправляет уведомления.

Пример кода : - Вам нужно указать значок в полезной нагрузке уведомления, например,

$notification = array
    (
    'icon' => 'icon here',
    'title' => 'title',
    'body' => 'new msg',
    'click_action' => 'action here'
); 

Примечание: - вам необходимо добавить их в манифест, чтобы использовать значок уведомления по умолчанию , например

<meta-data
      android:name="com.google.firebase.messaging.default_notification_icon"
            android:resource="@drawable/ic_launcher" />

// optional if required
    <meta-data android:name="com.google.firebase.messaging.default_notification_color"
            android:resource="@color/notification_color" />
0 голосов
/ 14 июля 2020

По ссылке Firebase, когда ваше приложение находится в фоновом режиме, уведомление доставляется на панель задач устройства. При нажатии пользователем на уведомление по умолчанию открывается панель запуска приложений.

Сообщения с уведомлением и полезными данными, полученные в фоновом режиме. В этом случае уведомление доставляется в системный лоток устройства, а полезные данные доставляются в дополнениях к цели вашей активности запуска.

Ссылка на Firebase

Android P ie И более новая версия имеет некоторые ограничения. Проверьте это ссылка

...