首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SendBird ChannelHandler onMessageReceived在Android上没有被调用

SendBird ChannelHandler onMessageReceived在Android上没有被调用
EN

Stack Overflow用户
提问于 2018-07-10 10:04:27
回答 1查看 1.2K关注 0票数 1

我刚开始在安卓上使用SendBird。我想进行1到1的聊天,所以我将用户连接到SendBird,设置处理程序,创建通道并发送消息,然而,onMessageReceived不起作用。见下面的代码:

代码语言:javascript
复制
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}")
                        }
                    })



                }
            })
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-14 01:08:49

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

我建议在两个独立的设备/模拟器上进行测试,以模拟应用程序中的两个用户消息传递。代码应该有一个处理程序,为调用onMessageReceived的当前安卓用户添加onMessageReceived(p0: BaseChannel?,p1: BaseMessage?)。您的应用程序可以有一个用户列表,其中用户111111可以选择用户222222并向该用户发送消息。在select上,应用程序将为用户111111 (当前用户)和用户222222 (所选用户)创建一个独特的组信道。然后,用户111111可以在该信道中发送消息。

关于代码示例,请在这里下载我们的Android聊天示例:https://github.com/smilefam/Sendbird-Android

我们希望更多地了解您的用例,并帮助您完成此工作。请向support@sendbird.com发送电子邮件,以获得更多支持,并在主题行中参考"StackOverflow“。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51262434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档