我刚刚开始在Android上使用SendBird。我想进行1合1聊天,因此我将用户连接到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}")
}
})
}
})
答案 0 :(得分:1)
SendBird Android和iOS SDK适用于移动设备上的客户端代码。每个客户端只能建立一个用户连接,而不是客户端移动应用程序上的多个用户连接。
我建议在两个单独的设备/模拟器上进行测试,以模拟应用程序中的两个用户消息传递。该代码应具有一个处理程序,该处理程序为调用onMessageReceived(p0:BaseChannel ?, p1:BaseMessage?)的当前Android用户添加ChannelHandler。您的应用程序可能具有用户列表,其中用户111111可以选择用户222222并向该用户发送消息。选定后,该应用将为用户111111(当前用户)和用户222222(所选用户)创建一个独特的群组频道。然后,用户111111可以在该频道中发送消息。
有关代码示例,请随时在此处下载我们的Android聊天示例: https://github.com/smilefam/Sendbird-Android
我们很想了解有关您的用例的更多信息,并帮助您使其正常工作。请通过电子邮件发送support@sendbird.com以获取更多支持,并在主题行中引用“ StackOverflow”。
-Janna,SendBird解决方案工程师