Проблема со значком уведомления Android

У меня странная проблема. У меня есть два способа отправки уведомлений в моем приложении для Android; один из службы Android, а другой через FCM.

Сценарии следующие:

  1. Независимо от того, запущено приложение или нет, значок уведомления, отправленного из службы Android, отображается правильно.
  2. Когда приложение запущено, значок уведомления по-прежнему отображается правильно, если я отправляю уведомление через FCM.
  3. Но если приложение не запущено и я отправляю уведомление через FCM, вместо значка уведомления отображается белый квадрат.

Мой код в FCMService:

Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.notification_icon)
                .setContentTitle("Android App")
                .setContentText(messageBody)
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent);

        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(0, notificationBuilder.build());

person seyfullah.bilgin    schedule 03.06.2016    source источник


Ответы (2)


Скорее всего, ваша проблема в различии между notification-messages и data-messages.

Прочтите: https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages

Используйте сообщения с уведомлениями, если вы хотите, чтобы FCM обрабатывал отображение уведомления от имени вашего клиентского приложения. Используйте сообщения с данными, если хотите обрабатывать сообщения в клиентском приложении.

В настоящее время веб-консоль FCM отправляет только уведомления-сообщения.

Таким образом, все сообщения, отправленные через веб-консоль (или через API с полезной нагрузкой notification), будут иметь следующий вид:

  1. если приложение закрыто или работает в фоновом режиме: FCM отобразит уведомление. если вы хотите настроить его, вы можете, но вам нужно указать конкретную конфигурацию (в манифесте или в вызове API отправки) см. https://firebase.google.com/docs/cloud-messaging/android/client#manifest
  2. если приложение находится на переднем плане: FCM вызовет onMessageReceived()

.

Если вы хотите, чтобы onMessageReceived() всегда вызывается:
, вам нужно использовать data-only (no notification) message

person Diego Giorgini    schedule 03.07.2017

Это ошибка FMC, подробно описанная на странице github fcm.

https://github.com/firebase/quickstart-android/issues/4

person seyfullah.bilgin    schedule 06.06.2016
comment
Не удалось найти, исправлено ли это. У тебя есть какие-нибудь подсказки @seyfx? - person Ekrem KENTER; 19.10.2016
comment
Можете ли вы объяснить, что вы имеете в виду под двумя способами отправки уведомлений? - person Diego Giorgini; 03.07.2017