Как получить уведомление Heads Up в android с помощью Firebase Cloud Messaging (Уведомление), в то время как приложение не находится на переднем плане?

У меня есть приложение, которое должно отображать уведомление в формате хэдз-ап, в то время как приложение находится на переднем плане и в фоновом режиме (а не в истории).

В случае переднего плана я понял это следующим методом.

PendingIntent pendingIntent = PendingIntent.getActivity(ctx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); NotificationCompat.Builder builder = new NotificationCompat.Builder(ctx); builder.setFullScreenIntent(pendingIntent,true); 

Но в фоновом режиме он всегда отображается в области уведомлений. Кто-нибудь скажет, как это сделать в фоновом режиме (не в истории)

Я попробовал следующие параметры для уведомления, но не работал.

 { "to" : "_Token_", "priority":"high", "data": { "title": "Test", "text": "Fcm" }, "notification": { "title": "Test", "text": "Fcm" } } 

Firebase позволяет настраивать уведомления при использовании сообщений данных. Сообщения данных вызывают метод onMessageReceived (), даже если приложение находится в backgroud, поэтому вы создаете свое собственное уведомление.

Вы можете получить ссылку на эту ссылку, чтобы узнать больше об уведомлениях о данных. Уведомления Firebase

Вместо использования setFullScreenIntent (), попробуйте следующее:

 PendingIntent pendingIntent = PendingIntent.getActivity(ctx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); NotificationCompat.Builder builder = new NotificationCompat.Builder(ctx); builder.setPriority(NotificationCompat.PRIORITY_MAX); builder.setSound(URI_TO_SOUND); builder.setVibrate(ARRAY_WITH_VIBRATION_TIME); 

Изменить: для фона вы должны сделать simillar. Чтобы показать уведомление Heads-up, должно быть сочетание высокоприоритетного + звука и / или вибрации (желательно оба).

Edit2: Предпочтительно вы можете показать это уведомление в методе onMessageReceived (), здесь: https://firebase.google.com/docs/cloud-messaging/android/receive#override-onmessagereceived

Вы должны полностью удалить часть уведомления из своего Json и просто использовать данные! Это трюк. Я имею в виду это:

 { "to" : "_Token_", "priority":"high", "data": { "title": "Test", "text": "Fcm" } } 

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

Просто удалите уведомление и всегда используйте тег данных.

Он работает, когда ваше приложение находится на переднем плане / в фоновом режиме или убито и остановлено

 { "to":"push-token", "priority": "high", "notification": { "title": "Test", "body": "Mary sent you a message!", "sound": "default", "icon": "youriconname" } } 

Проверьте это: Создайте дисплей Heads-Up

Вам нужно добавить службу слушателя, как и в стандартную реализацию GCM.

  public class MyGcmListenerService extends GcmListenerService { private static final String TAG = "MyGcmListenerService"; /** * Called when message is received. * * @param from SenderID of the sender. * @param data Data bundle containing message data as key/value pairs. * For Set of keys use data.keySet(). */ // [START receive_message] @Override public void onMessageReceived(String from, Bundle data) { String message = data.getString("message"); Log.d(TAG, "From: " + from); Log.d(TAG, "Message: " + message); if (from.startsWith("/topics/")) { // message received from some topic. } else { // normal downstream message. } // [START_EXCLUDE] /** * Production applications would usually process the message here. * Eg: - Syncing with server. * - Store message in local database. * - Update UI. */ /** * In some cases it may be useful to show a notification indicating to the user * that a message was received. */ sendNotification(message); // [END_EXCLUDE] } // [END receive_message] 
Intereting Posts
Как настроить пользовательские значки маркеров для Android Google Maps v2? Исключение – не удалось разрешить атрибут по индексу 6: TypedValue Что такое Remainder в основной круговой диаграмме Eclipse Memory Analyzer? Android: изменение фонового цвета активности (основной вид) Eclipse не может найти файл для com.google.android.maps.MapActivity В чем разница между sendStickyBroadcast и sendBroadcast в Android? Как распаковать, отредактировать и закрепить андроид apk Кордова: Как установить файл config.xml для платформы, который не перезаписывается после сборки кордовы? Ошибка при размещении счетчика внутри группы действий Только верхние углы округлены в <shape> Как популярные приложения Android подключаются к серверу? Что такое заполнение текста по умолчанию в spinner Почему высота панели инструментов андроида сокращена? Ошибка аппаратного обеспечения Android – ошибка утверждения API карты Google v2 не работает