Уведомления Firebase, когда приложение закрыто

Я применил уведомление Firebase в своем приложении для Android. Когда мое приложение запущено, уведомление отображается с моим настраиваемым макетом, но когда приложение не запущено, уведомление отображается с макетом по умолчанию. Как изменить макет уведомлений на мой макет, когда приложение не запущено. Кроме того, я сохраняю общие настройки, чтобы пользователь мог переключать уведомления. Но когда приложение не работает, уведомление отображается в любом случае. Как это можно достичь?

@Override public void onMessageReceived(RemoteMessage remoteMessage) { if(SettingsFragment.getReceiceNotification()){ //if user wants to receive notification NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); RemoteViews remoteViews = new RemoteViews(getPackageName(),R.layout.push_notification_layout); remoteViews.setImageViewResource(R.id.push_notif_icon,R.mipmap.ic_bird_black); Intent intent = new Intent(this,MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_ONE_SHOT); NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this); notificationBuilder.setContent(remoteViews); notificationBuilder.setContentTitle("Radyo Türkkuşu"); notificationBuilder.setContentText(remoteMessage.getNotification().getBody()); notificationBuilder.setAutoCancel(true); notificationBuilder.setSmallIcon(R.mipmap.ic_launcher); notificationBuilder.setContentIntent(pendingIntent); remoteViews.setTextViewText(R.id.push_title, "Radyo Türkkuşu"); remoteViews.setTextViewText(R.id.push_context, remoteMessage.getNotification().getBody()); //notificationBuilder.setLights (ContextCompat.getColor(MainActivity.context, R.color.pushColor), 5000, 5000); notificationManager.notify(0,notificationBuilder.build()); } } 

Ваша проблема заключается в том, что вы используете его с лотком для уведомлений.

См. Эту ссылку

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

Если вы используете {data:"something"}(data-message) с {notification:"something"}(display-message) когда ваше приложение находится в фоновом режиме, данные будут переданы в дополнение к намерению, но не к onMessageReceived() Method.I предполагаю, что вы реализуете свой код для показа уведомления, поэтому, когда ваше приложение находится на переднем плане onMessageReceived() является триггером, и оно отображает onMessageReceived() уведомление, которое вы хотите, но когда оно не onMessageReceived() не получить триггер, а система Android будет обрабатывать его С вашей полезной нагрузкой. Вы просто удалите {notification:"something"}(display-message/notification tray) со своего кода на стороне сервера, чтобы всегда обеспечивать onMessageReceived() .

Для тех, кто продолжает упоминать onMessageReceived() , всегда будет срабатывать независимо от того, не является ли он передним или задним планом, пожалуйста, перейдите по этой ссылке

Существует два типа сообщений FCM

  1. Уведомляющее сообщение
  2. Сообщение данных

Сообщения, которые отправляются с консоли Firebase, являются сообщением «Уведомление» . Чтобы получить сообщение в onMessageReceived (), используйте Data Message . использование
{"To": "bk3RNwTe3H0: CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1 …", "data": {«Ник»: «Марио», «тело»: «отличный матч!», «Комната»: «ПортугалияVSDenmark»},} на стороне сервера Для отправки Уведомления.

Ссылка https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages

Intereting Posts
Несколько файлов приложений .pk для Android приложений из одного исходного кода Android Lint – Как скрыть предупреждение «Ресурс Xxx кажется неиспользуемым» Ширина навигации в списке действий – содержимое упаковки Android Facebook SDK – Не удалось получить токен доступа Как я могу отображать изображения из определенной папки в галерее Android Android TextView не обновляет свой текст, если для параметра textIsSelectable установлено значение true Ошибка сборки Ионный Android: сбой сборки с исключением Передача данных между действиями в Android Как я могу показать текст HIndi в Android Tablet Каковы необходимые зависимости градиента для брандмауэра App Engine с облачными сообщениями Google? Сервер Android Http и сломанные трубы Ведение позиции Drag & Dropped при перезапуске Время автономной работы Android (Linux) с использованием CLOCK_MONOTONIC Как добавить logcat в ACRA Почему предупреждение об устаревании не исчезает при проверке Build.VERSION.SDK_INT перед использованием устаревшего элемента?