Документация по понятиям и опциям гласит:
сообщения по умолчанию не сворачиваются, за исключением уведомлений, которые всегда складываются
Но позже на той же странице говорится:
за исключением уведомлений, все сообщения неразборные по умолчанию
Что несколько двусмысленно. Однако в разделе полезной нагрузки указано:
[сообщения уведомлений] могут иметь дополнительную полезную нагрузку данных. Всегда складной
Поэтому кажется невозможным сделать сообщения уведомлений неразборными.
Я бы предположил, что это сделано специально, потому что при создании уведомлений в Android они автоматически заменяются, когда другое уведомление с таким же идентификатором публикуется (аналогично тому, как работает свертывание сообщений). Если я правильно помню, FCM / GCM использует один и тот же идентификатор для всех уведомлений.
Возможное решение
Если вы хотите получить неразборное уведомление, я бы посоветовал отправить полезную нагрузку только для данных (без уведомления или collapseKey
), а затем переопределить onMessageReceived()
из FirebaseMessagingService
для создания собственного уведомления.
Пример этого доступен на примере быстрого запуска Android :
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// ...
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
// ...
}
// ...
// Also if you intend on generating your own notifications as a result of a received FCM
// message, here is where that should be initiated. See sendNotification method below.
}
Последний комментарий указывает на пример sendNotification()
метод .
Для вашего сценария вам необходимо передать уникальный идентификатор в вызов notificationManager.notify()
, чтобы Android создавал новое уведомление и не заменял никакие существующие уведомления - следовательно, сообщение не сборно-разборные.