По сути, мы отправляем сообщения, для которых нам нужно подтверждение, следующим образом:
Код: Выделить всё
final var apnsConfig =
ApnsConfig.builder()
.setAps(Aps.builder().setContentAvailable(true).build())
.putAllHeaders(Map.of("apns-push-type", "background", "apns-priority", "5"))
.putCustomData("customDataKey", "customDataValue")
.build();
final var multicastMessageBuilder =
MulticastMessage.builder()
.setApnsConfig(apnsConfig)
.addAllTokens(
fcmEntities.stream()
.map(FcmMessageEntity::getFcmRegistrationToken)
.toList());
multicastMessageBuilder.putAllData(
Map.of(
"notificationTitle",
notificationTitle,
"notificationBody",
notificationBody));
final var batchResponse =
FirebaseMessaging.getInstance(firebaseService.getFirebaseApp())
.sendEachForMulticast(multicastMessageBuilder.build());

"Обычные" (видимые) уведомления доставляются хорошо.
Мы используем Capacitor и его плагин PushNotifications, если это актуально.
Что мы упускаем/делаем неправильно?
Мы пытались отключить FirebaseAppDelegateProxy, как предлагали некоторые результаты поиска, но безуспешно.
Мы также пытались добавить UNUserNotificationCenterDelegate в наш AppDelegate, что привело к DidReceiveRemoteNotification вызывается для видимых уведомлений только тогда, когда приложение находится на переднем плане.
Подробнее здесь: https://stackoverflow.com/questions/793 ... tification