У меня есть приложение android, настроенное в Firebase Cloud Messaging, и когда я отправляю уведомление из консоли, я вижу уведомление в приложении Android.
Я пытаюсь теперь реализовать отправку уведомления от внутреннего сервера java весеннего приложения, и вот мой сервис, чтобы сделать это:
@Slf4j
@Service
public class FCMService {
public void sendMessageWithData() throws FirebaseMessagingException {
Message message = getPreconfiguredMessageWithData();
String response = sendAndGetResponse(message);
log.info("Sent message with data.");
}
private String sendAndGetResponse(Message message) throws FirebaseMessagingException {
return FirebaseMessaging.getInstance().send(message);
}
private AndroidConfig getAndroidConfig(String topic) {
return AndroidConfig.builder()
.setTtl(Duration.ofMinutes(2).toMillis()).setCollapseKey(topic)
.setPriority(AndroidConfig.Priority.HIGH)
.setNotification(AndroidNotification.builder().setSound("default")
.setColor("#FFFF00").setTag(topic).build()).build();
}
private ApnsConfig getApnsConfig(String topic) {
return ApnsConfig.builder()
.setAps(Aps.builder().setCategory(topic).setThreadId(topic).build()).build();
}
private Message getPreconfiguredMessageWithData() {
return getPreconfiguredMessageBuilder().setTopic("all")
.putData("test", "data")
.build();
}
private Message.Builder getPreconfiguredMessageBuilder() {
AndroidConfig androidConfig = getAndroidConfig("all");
ApnsConfig apnsConfig = getApnsConfig("all");
return Message.builder()
.setApnsConfig(apnsConfig).setAndroidConfig(androidConfig)
.setNotification(
new Notification("sample title", "sample message"));
}
}
Сообщение отправлено правильно, я получаю идентификатор сообщения в ответе, но уведомление не отображается в приложении, и я не вижу его как новое уведомление в консоли Firebase. В чем проблема? Я все еще что-то упускаю?