В настоящее время я сталкиваюсь с проблемой, связанной с тем, что SDK администратора Firebase в Java (мой бэкэнд) всегда отправляет ключ данных, даже если я хочу активировать полезную нагрузку только для уведомлений. Отправка смешанного сообщения предотвращает запуск фонового обработчика и заставляет ОС отображать уведомление, но затем оно снова регистрируется, когда я открываю приложение, и поэтому оно отображается дважды. Это происходит только в свернутом состоянии.
Это мой внутренний код:
Код: Выделить всё
public static List sendPushNotificationToUsers(String title, String message, Collection devices) throws FirebaseMessagingException {
AndroidConfig androidConfig = AndroidConfig.builder()
.setTtl(30000)
//.putData(title, message)
.setNotification(AndroidNotification.builder().setIcon("ic_large_notification_icon").build())
.setPriority(AndroidConfig.Priority.HIGH).build();
ApnsConfig apnsConfig = ApnsConfig.builder()
// .putHeader("apns-topic", "com.nutrisoft.mobilenutri")
// .putHeader("apns-priority", "5")
// .putHeader("apns-push-type", "background")
.setAps(Aps.builder().setContentAvailable(true).build())
.build();
Notification notification = Notification.builder().setTitle(title).setBody(message).build();
MulticastMessage msg = MulticastMessage.builder()
.addAllTokens(devices.stream().map(userDevice -> userDevice.getDeviceToken()).collect(Collectors.toList()))
// .putData("title", title)
// .putData("message", message)
.setAndroidConfig(androidConfig)
.setApnsConfig(apnsConfig)
.setNotification(notification)
.build();
BatchResponse response = FirebaseService.fcm.sendMulticast(msg);
List ids = response.getResponses()
.stream()
.map(r -> r.isSuccessful())
.collect(Collectors.toList());
System.out.println(ids);
return ids;
}
{"contentAvailable" : true, "data": {}, "from": "688859109590", "messageId": "1719432193006523", "notification": {"body": "Test", "title": "Obavijest"}
Как я могу отправить это вообще без ключа данных?
Подробнее здесь: https://stackoverflow.com/questions/786 ... ud-message