1

Я разработал Android-приложение, которое получает Push-уведомления с использованием Firebase. Мой код основан на официальных документах Firebase/Google (https://firebase.google.com/docs/cloud-messaging/android/client и https://firebase.google.com/docs/cloud-messaging/android/receive) и не имеет ничего особенного, он имеет службу, которая расширяет FirebaseMessagingService и службу, которая расширяет FirebaseInstanceIdService. Все работает нормально.Уведомления о загрузке стека с Android Firebase

Но это приложение получает больше уведомлений, чем ожидалось, и мой клиент хочет, чтобы приложение складывало получаемые уведомления. Я видел учебники с решением, работающим над старым механизмом GCM, но ничего с FCM. Итак, мои сомнения: можно уложить полученные push-уведомления с FCM? или это должно быть каким-то образом закодировано в бэкэнде?

+0

Это моя проблема тоже. Надеюсь, кто-то из команды Firebase прояснит тему – Defuera

ответ

-2

Вам просто нужно добавить .setGroup(GROUP_KEY_XPTO) в ваш строитель уведомлений. Все уведомления с одинаковым идентификатором группы будут сложены.

final static String GROUP_KEY_EMAILS = "group_key_emails"; 

// Build the notification, setting the group appropriately 
Notification notif = new NotificationCompat.Builder(mContext) 
     .setContentTitle("New mail from " + sender1) 
     .setContentText(subject1) 
     .setSmallIcon(R.drawable.new_mail) 
     .setGroup(GROUP_KEY_EMAILS) 
     .build(); 

// Issue the notification 
NotificationManagerCompat notificationManager = 
     NotificationManagerCompat.from(this); 
notificationManager.notify(notificationId1, notif); 

На следующем уведомлении:

Notification notif2 = new NotificationCompat.Builder(mContext) 
     .setContentTitle("New mail from " + sender2) 
     .setContentText(subject2) 
     .setSmallIcon(R.drawable.new_mail) 
     .setGroup(GROUP_KEY_EMAILS) 
     .build(); 

notificationManager.notify(notificationId2, notif2); 

Подробнее об этом здесь: https://developer.android.com/training/wearables/notifications/stacks.html

+0

Это решение, которое я нашел до сих пор, но я не уверен, что он действителен для Firebase. В моем коде у меня нет вызова NotificationCompat.Builder. После учебника Firebase вам не нужно его иметь. – Wonton

+0

Переопределить 'onMessageReceived'. Вы должны следовать этому: https://firebase.google.com/docs/cloud-messaging/android/receive –

+1

Но этот метод вызывается только в том случае, если приложение находится на переднем плане (и в этом случае мне не нужно стек уведомлений). С Firebase, если приложение закрыто или в фоновом режиме уведомление отправляется на системный лоток устройства, и там, где уведомления отображаются один за другим, как я могу их уложить, если мое приложение не работает? – Wonton

0

штабелирования уведомления может быть сделано с ТСМ, это требует немного изменений на стороне сервера также. Все это объясняется здесь подробно: -

https://stackoverflow.com/a/43913156/6157185