Я пытаюсь установить push-уведомления в моем приложении для определенных действий («кому-то понравилось это», «кто-то прокомментировал» и т. Д.).
Я пытался следовать руководству Google здесь
Но когда я скопировал код, эта часть
String response = FirebaseMessaging.getInstance().send(message);
Выдал ошибку, сказав, что ожидает RemoteMessage
, а не Message
.
Я пытаюсь изменить его на RemoteMessage, но не могу понять:
- Где мне указать токен получателя? Я не могу найти эквивалент
.setToken
.
- Что поставить в скобки
RemoteMessage.Builder()
Я изучил много руководств, но не могу найти ни одного, которые бы касались этого. Это новое изменение в API?
Лучший способ помочь мне - это пример с Kotlin нового сгенерированного сообщения, которое в ответ вызовет новое push-уведомление для получателя на основе токена (я почти уверен, что смогу обработать получение сам).
Спасибо!
Edit:
Я смог сделать так, чтобы он соответствовал шаблону, которым он был бы доволен, но я не могу отобразить уведомления.
Я использую эту функцию для отправки уведомления:
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("$registrationToken@gcm.googleapis.com")
.setMessageId(Integer.toString(0))
.addData("my_message", "Hello World")
.addData("my_action", "SAY_HELLO")
.build()
)
}
})
}
userId
, который я передаю этой функции, является идентификатором firebase, и с его помощью я получаю самый последний токен приложения, которое использует пользователь. Я проверил, и эта часть работает, и я получаю взамен токен в формате, подобном этому
ecK86WRoAh4:APA91bGQWSesCptPF_nzfkmgDe-zOYYo2Cj4XT_NeNTVaBxQakbvauOpkVFd7DCRIugMCfso5SadEUtyTRvrhdCiBpKxGGMRgUYNsUhA24f9IkmxjL5dWD
Но сама функция не вызывает никаких уведомлений на другом устройстве (я использую два устройства, пытаясь заставить одно вызвать другое уведомление).