Twilio聊天成员在线状态始终为空

时间:2017-02-07 09:34:45

标签: twilio twilio-api

在我的聊天应用程序中,我想知道一个频道成员是否在线,但'userInfoUpdated'从未在新成员到来时触发,member.userInfo.online在我想要获取它时始终为空。我做错了什么?

UPD: 这里代码暂停在成员"更新"甚至,该成员的userInfo.online字段仍为null enter image description here

UPD2: 现在我从文档中找到了这一行

  

扩展用户信息请注意,仅当启用了可访问性功能时,UserInfo #online和UserInfo #notifiable属性才有资格使用。您可以通过读取Client~addhabilityEnabled docs

的值来检查它是否已启用

最后在后端设置reachabilityEnabled解决了我的问题

3 个答案:

答案 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