Android 上未调用 SendBird ChannelHandler onMessageReceived

SendBird ChannelHandler onMessageReceived is not called on Android

我刚开始在 Android 上使用 SendBird。我想进行一对一聊天,所以我将用户连接到 SendBird,设置处理程序,创建频道并发送消息,但是,onMessageReceived 不工作。请看下面的代码:

var handler = object : SendBird.ConnectHandler{
        override fun onConnected(p0: User?, p1: SendBirdException?) {
            SendBird.addChannelHandler(UNIQUE_HANDLER_ID, object : SendBird.ChannelHandler() {
                override fun onMessageReceived(p0: BaseChannel?, p1: BaseMessage?) {
                    Log.d(TAG, "addChannelHandler  - onMessageReceived - messageId ${p1?.messageId}")
                    Log.d(TAG, "addChannelHandler  - onMessageReceived - channelUrl ${p1?.channelUrl}")

                    if (p1 is UserMessage) {
                        Log.d(TAG, "addChannelHandler  - onMessageReceived - messageId ${p1?.message}")
                    }
                }
            })
        }
    }


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        SendBird.connect("222222", handler)
        SendBird.connect("111111", object : SendBird.ConnectHandler {
            override fun onConnected(p0: User?, p1: SendBirdException?) {
                Log.d(TAG, " SendBird.connect - userID -  " + p0?.userId)

                var list = mutableListOf("111111", "222222")

                var   params = GroupChannelParams()
                params.setDistinct(true)
                        .addUserIds(list)

                GroupChannel.createChannel(params, object : GroupChannel.GroupChannelCreateHandler {
                    override fun onResult(p0: GroupChannel?, p1: SendBirdException?) {

                          groupChannel?.sendUserMessage("Hello", object : BaseChannel.SendUserMessageHandler {
                        override fun onSent(p0: UserMessage?, p1: SendBirdException?) {
                            Log.d(TAG, "sendUserMessage - onSent - ${p0?.message}")
                        }
                    })



                }
            })

SendBird Android 和 iOS SDK 适用于移动设备上的客户端代码。每个客户端只能建立一个用户连接,而不是在客户端移动应用程序上建立多个用户连接。

我建议在两个单独的 devices/emulators 上进行测试,以在您的应用程序中模拟两个用户的消息传递。该代码应该有一个处理程序,它为调用 onMessageReceived(p0: BaseChannel?, p1: BaseMessage?) 的当前 Android 用户添加 ChannelHandler。您的应用程序可能有一个用户列表,其中用户 111111 可以 select 用户 222222 并向该用户发送消息。在 select,该应用程序将为用户 111111(当前用户)和用户 222222(selected 用户)创建一个不同的群组频道。然后,用户 111111 可以在该频道中发送消息。

如需代码示例,请随时在此处下载我们的 Android 聊天示例: https://github.com/smilefam/Sendbird-Android

我们很乐意了解有关您的用例的更多信息,并帮助您实现这一目标。请在主题行中发送电子邮件 support@sendbird.com 以获得进一步的支持和参考 "Whosebug"。

-- Janna,解决方案工程师@SendBird