Firebase – отправка сообщений на определенные устройства на Java

У меня есть этот фрагмент кода:

        log.info("Sending message to topic: " + topic);

        // This registration token comes from the client FCM SDKs.
        String registrationToken = "AAAAVjsyE68:APA91bHOdV7whbcjOKxohCsw9TBuZaYfvqSiNk6uSpQ-_8THdRjdWepCa-fxrqvJjePwls-eObnD4tzIaYOZYTGAzped3nWI6rer91f1IoLvBf15M4NZEhsdPu-goKHe2zp4nDG";

        // See documentation on defining a message payload.
        Message message = Message.builder()
                .setTopic(topic)
                .setNotification(Notification.builder()
                        .setTitle("Your notification title")
                        .setBody("Your notification message")
                        .build())
                .setToken(registrationToken)
                .build();

// Send a message to the device corresponding to the provided
// registration token.
        String response = FirebaseMessaging.getInstance().send(message);
// Response is a message ID string.
        log.info("Successfully sent message: " + response);

но у меня есть эта ошибка:

aused by: java.lang.IllegalArgumentException: Exactly one of token, topic or condition must be specified
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:143)
    at com.google.firebase.messaging.Message.<init>(Message.java:80)
    at com.google.firebase.messaging.Message.<init>(Message.java:40)
    at com.google.firebase.messaging.Message$Builder.build(Message.java:295)
    at com.mysticplanets.service.FirestoreMessageService.sendMessageToTopic(FirestoreMessageService.java:50)
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ошибка говорит:

Должен быть указан ровно один токен, тема или условие.

Ваш конструктор сообщений указывает как тему, так и токен. Вам придется решить, какой из них вы используете для таргетинга этого сообщения — оба варианта не могут быть использованы.

Это повторяется в документации API для Message:

Информация о получателе должна содержать ровно один токен, тему или параметр условия.

Другие вопросы по теме

Похожие вопросы

SqlRowSet выдает неверный тип SQL для столбца с dateTimeOffset (тип, связанный с Java Instant)
Аннотация @EnableScheduling не просыпается в проекте Kotlin
Получение «Пароль должен быть настроен на внешнем экземпляре SshClient» При попытке передать файл с помощью «spring-integration-sftp»
Android Studio и Google Maps API Стиль карт, как изменить цвет страны при нажатии на карту
Spring пакет-5 ORA-08177: невозможно сериализовать доступ для этой транзакции с использованием базы данных Oracle
Докер не может найти внутреннюю зависимость
Почему я не могу добавлять реализации в Android Studio Iguana?
Проблема Java POST, как проверить возврат с сервера?
IntelliJ и Eclipse расходятся во мнениях по поводу нулевых аннотаций через несколько интерфейсов. Является ли один «более правильным» или это ошибка плохой аннотации в API?
Автоматизированное тестирование с использованием Selenium, TestNT, Java — Reddit.com — кнопка «Войти» во всплывающем окне