Как указать токен получателя при использовании RemoteMessage из Firebase Cloud Messaging?

1

Я пытаюсь установить push-уведомления в моем приложении для определенных действий ("кому-то понравилось это", "кто-то прокомментировал это" и т.д.).

Я пытался следовать Google Guide здесь

Но когда я скопировал код, эта часть

String response = FirebaseMessaging.getInstance().send(message);

Выдал ошибку, сказав, что ожидает RemoteMessage а не Message. Я пытаюсь изменить его на RemoteMessage, но я не могу понять:

  1. Где мне указать токен получателя? Я не могу найти эквивалент .setToken.
  2. Что поставить внутри скобок RemoteMessage.Builder()

Я просмотрел много руководств, но не могу найти ни одного, которые бы касались этого. Это новое изменение в API?

Лучший способ помочь мне - это пример с Kotlin нового сгенерированного сообщения, которое в ответ вызовет новое push-уведомление для получателя на основе токена (я почти уверен, что могу справиться с получением самостоятельно),

Спасибо!

Редактировать:

Я смог сделать так, чтобы он соответствовал шаблону, которым он был бы доволен, но я не могу отобразить уведомления.

Это функция, которую я использую для отправки уведомления:

 fun sendCloudMessage(userId: String) {

        val receiverRef = FirebaseDatabase.getInstance().getReference("/users/$userId/services/firebase-token")

        receiverRef.addListenerForSingleValueEvent(object : ValueEventListener {
            override fun onCancelled(p0: DatabaseError) {

            }

            override fun onDataChange(p0: DataSnapshot) {

                val registrationToken = p0.getValue(String::class.java)

                Log.d("tokencomplete", p0.toString())
                Log.d("tokenonly", registrationToken)

                val fm = FirebaseMessaging.getInstance()

                fm.send(
                    RemoteMessage.Builder("[email protected]")
                        .setMessageId(Integer.toString(0))
                        .addData("my_message", "Hello World")
                        .addData("my_action", "SAY_HELLO")
                        .build()
                )
            }

        })

    }

Пользователь, который я userId этой функции, является идентификатором firebase, и с его помощью я получаю самый последний токен приложения, которое использует пользователь. Я проверил, и эта часть работает, и я получаю взамен токен в формате, подобном этому

ecK86WRoAh4:APA91bGQWSesCptPF_nzfkmgDe-zOYYo2Cj4XT_NeNTVaBxQakbvauOpkVFd7DCRIugMCfso5SadEUtyTRvrhdCiBpKxGGMRgUYNsUhA24f9IkmxjL5dWD

Но сама функция не вызывает никаких уведомлений на другом устройстве (я использую два устройства, пытающихся получить одно, чтобы инициировать уведомление другим).

Теги:
kotlin
firebase
firebase-cloud-messaging
push-notification

1 ответ

0

Установите идентификатор отправителя в конструкторе вашего RemoteMessage, он должен выглядеть следующим образом:

RemoteMessage.Builder(token);

редактировать

вот метод, который я использую:

public void sendMessage (final String data) {
FirebaseMessaging fm = FirebaseMessaging.getInstance();

String token = FirebaseInstanceId.getInstance().getToken();
String msgID = DigestUtils.sha1Hex(token + System.currentTimeMillis());
String SENDER_ID = "someID";

RemoteMessage.Builder RMBuilder =
new RemoteMessage.Builder(SENDER_ID + "@gcm.googleapis.com");
RMBuilder.setMessageId(msgID);

Map<String, Object> mapData = Utils.jsonToMap(data);

for (Map.Entry<String, Object> entry : mapData.entrySet()) {
    RMBuilder.addData(entry.getKey(), entry.getValue().toString());
}

fm.send(RMBuilder.build());
}
  • 0
    builder не вариант, но Builder . Проблема в том, что когда я использую его, я получаю другую ошибку, говорящую « expected RemoreMessage but found RemoteMessage.Builder
  • 0
    Мой плохой, он говорит так, пока я не добавлю build в конце, хотя я все еще не могу отправить его. Я прилагаю свой текущий код. Скажите, пожалуйста, что мне не хватает? * edit: мой браузер только что обновился, и я увидел, что вы отредактировали свой ответ, просматривая его сейчас.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню