【发布时间】:2019-09-08 05:44:56
【问题描述】:
我正在尝试在我的应用中为某些操作(“有人喜欢你的这个”、“有人对此发表评论”等)建立推送通知。
我尝试按照谷歌的指南here
但是当我复制代码时,它的这一部分
String response = FirebaseMessaging.getInstance().send(message);
给出一个错误,说它期待的是RemoteMessage 而不是Message。
我正在尝试将其更改为 RemoteMessage,但我无法理解:
- 在哪里指定收件人的令牌?我找不到与
.setToken相同的内容。 - 在
RemoteMessage.Builder()的括号内放什么
我已经浏览了很多手册,但我找不到任何能解决它的问题。是 API 的新变化吗?
帮助我的最好方法是使用 Kotlin 生成新消息的示例 - 作为响应,该消息会根据令牌触发收件人的新推送通知(我很确定我可以处理接收我自己)。
谢谢!
编辑:
我能够让它符合它喜欢的模式,但我无法显示通知。
这是我用来发送通知的函数:
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 uid,并使用它获取用户正在使用的应用程序的最新令牌。我已经检查过,该部分有效,我以类似于此的格式返回令牌
ecK86WRoAh4:APA91bGQWSesCptPF_nzfkmgDe-zOYYo2Cj4XT_NeNTVaBxQakbvauOpkVFd7DCRIugMCfso5SadEUtyTRvrhdCiBpKxGGMRgUYNsUhA24f9IkmxjL5dWD
但该功能本身不会在另一台设备中触发任何通知(我正在使用两台设备试图让一个设备与另一台设备一起触发通知)。
【问题讨论】:
标签: android firebase kotlin push-notification firebase-cloud-messaging