使用Firebase Cloud Messaging的RemoteMessage时如何指定收件人令牌?

时间:2019-04-17 22:15:54

标签: android firebase kotlin push-notification firebase-cloud-messaging

我正在尝试在我的应用中为某些操作(“有人喜欢您的这个”,“有人对此发表了评论”等)建立推送通知。

我试图遵循Google指南here

但是当我复制代码时,它的这一部分

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

出现错误,表示它期望使用RemoteMessage而不是Message。 我正在尝试将其更改为RemoteMessage,但我听不懂:

  1. 我在哪里指定接收者的令牌?我找不到等效于.setToken的东西。
  2. 放在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

但是该函数本身不会在另一台设备上触发任何通知(我正在使用两台设备,试图让一个设备向另一台设备发出通知)。

1 个答案:

答案 0 :(得分:0)

在您的>>> pd.to_datetime('2-FEB-19') Timestamp('2019-02-02 00:00:00') 构建器构造函数中设置发件人ID,它应如下所示:

RemoteMessage;

修改

这是im使用的方法:

RemoteMessage.Builder(token)