在我的聊天应用程序中,我想知道一个频道成员是否在线,但'userInfoUpdated'
从未在新成员到来时触发,member.userInfo.online
在我想要获取它时始终为空。我做错了什么?
UPD:
这里代码暂停在成员"更新"甚至,该成员的userInfo.online
字段仍为null
UPD2: 现在我从文档中找到了这一行
扩展用户信息请注意,仅当启用了可访问性功能时,UserInfo #online和UserInfo #notifiable属性才有资格使用。您可以通过读取Client~addhabilityEnabled docs
的值来检查它是否已启用
最后在后端设置reachabilityEnabled
解决了我的问题
答案 0 :(得分:1)
在后端设置reachabilityEnabled解决了我的问题
答案 1 :(得分:0)
Twilio开发者传道者在这里。
根据您的评论,您说您的代码是:
client.getChannelByUniqueName(uniqueName).then(channel => {
channel.getMembers().forEach(member => {
member.on('userInfoUpdated', ()=>{ //nothing happening })
})
})
我想我看到了这个问题。 channel.getMembers()
returns a Promise将使用Member
个对象数组异步解析。你只是在Promise上调用forEach
。尝试类似:
client.getChannelByUniqueName(uniqueName).then(channel => {
return channel.getMembers()
}).then(members => {
members.forEach(member => {
member.on('userInfoUpdated', ()=>{ // something happening? })
})
})
让我知道这是否有帮助。
答案 2 :(得分:0)
是的,如果您在客户端启动时未同步聊天客户端,则成员将为null。
因此,在使用聊天客户端方法(如getChannels或getMessages-)之前,您需要覆盖此回调并确保客户端同步已完成。
override fun onClientSynchronization(status: ChatClient.SynchronizationStatus?) {
if (status == ChatClient.SynchronizationStatus.COMPLETED) {
// You can use chat client now
}
}
您将通过ynchronizationStatusUpdated方法接收到一个值为StatusCompleted的事件给客户端的侦听器或委托。这表明您的客户已经准备好开展业务,并且已经获得并订阅了所有用户渠道。
有关更多详细信息,请检查以下内容:Initializing SDK Clients