SendBird ChannelHandler onMessageReceived не вызывается на Android
Я только начал использовать SendBird на Android. Я хочу сделать чат 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}")
}
})
}
})
1 ответ
SDK SendBird для Android и iOS предназначены для клиентского кода на мобильных устройствах. Для каждого клиента должно быть установлено только одно пользовательское соединение, а не несколько пользовательских соединений в мобильном приложении на стороне клиента.
Я рекомендую тестировать на двух отдельных устройствах / эмуляторах, чтобы имитировать обмен сообщениями двух пользователей в вашем приложении. В коде должен быть один обработчик, который добавляет ChannelHandler для текущего пользователя Android, который вызывает onMessageReceived(p0: BaseChannel?, p1: BaseMessage?). Ваше приложение может иметь список пользователей, где пользователь 111111 может выбрать пользователя 222222 и отправить сообщение этому пользователю. При выборе приложение будет создавать отдельный групповой канал для пользователя 111111 (текущий пользователь) и пользователя 222222 (выбранный пользователь). Затем пользователь 111111 может отправить сообщение по этому каналу.
Для примера кода, пожалуйста, загрузите наш образец чата Android здесь: https://github.com/smilefam/Sendbird-Android
Мы хотели бы узнать больше о вашем сценарии использования и помочь вам в этом. Пожалуйста, напишите http://support@sendbird.com/ для дальнейшей поддержки и укажите "Stackru" в строке темы.
- Жанна, инженер по решениям @ SendBird