swift - Twilio 聊天 - 客户端 channel 列表始终为零

标签 swift chat twilio twilio-api

对于应用程序中的嵌入式聊天功能,我们使用 Twilio 的 Programmable Chat 框架。 TwilioChatClient 创建如下:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    if let token = utils.user_token {
        setupTwilio(token: token)
    }else {
        utils.getAccessToken({
            user_token in

            if let token = user_token as String! {
                self.setupTwilio(token: token)
            }
        })
    }
} 

private func setupTwilio(token: String) {
    if client == nil {
        client = TwilioChatClient(token: token, properties: nil, delegate: self)
    }
}

根据 twilio 文档,我们需要 client?.channelsList() 来创建、获取、加入甚至删除 channel ,而 client?.channelsList() 我们得到总是零。 仅供引用,用于创建 client 的 token 是有效的并且 client 不是 nil。有人能告诉我为什么我们为 client?.channelsList() 得到的是 nil 吗?还是我们遗漏了什么?

另一个蹩脚的问题,TwilioIPMessagingClientTwilioChatClient 之间有什么区别?我假设 TwilioChatClientTwilioIPMessagingClient 的升级,但没有找到任何明确的文档。谁能给我一份迁移指南?

编辑

附言 我们确实在委托(delegate)方法中等待客户端被初始化;喜欢

extension ChatViewController: TwilioChatClientDelegate {
    func chatClient(_ client: TwilioChatClient!, synchronizationStatusChanged status: TCHClientSynchronizationStatus) {
         guard status != .completed else {
             print("Show failed alert")
             return
         }

         guard client.channelsList() != nil else {
             print("channel list is nil");
             return
         }

         // create and/or join channel
         joinChatChannel();
   }
}

但是流总是在第二个守卫处失败。

最佳答案

一旦客户端到达

client.channelsList() 应该是非零的。上面代码中的 completed 状态。这向我表明可能存在一些权限问题或发生其他错误。

要进一步诊断此问题,在您的 Twilio 帐户上下文中查看应用程序的完整日志会很有帮助。我可以问你打开一个包含日志(https://support.twilio.com/hc/en-us/requests/new)的 Twilio 支持票并引用这个 SO 帖子吗?这将有助于将其发送给我们的团队,我们可以在这个问题上与您进行 1:1 的合作。我们将在最后更新这篇文章,以帮助其他人的决议。

此外,关于 TCHClientSynchronizationStatus 的快速说明 - 除了 .completed 之外还有其他非错误状态,仅提及这一点以便您知道客户端将通过多个状态在 .completed 之前并不一定表示错误,就像今天在您的代码片段中打印()一样。

关于swift - Twilio 聊天 - 客户端 channel 列表始终为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41951743/

相关文章:

iOS 11-用户本地通知每 x 分钟重复一次

swift - CGContextSetLineDash 警告

android - JXMPP & smack Android 库,获取消息传递状态

twilio - 为 Twilio-Whatsapp 电话号码上的传入消息设置 Webhook

javascript - TwilioRestClient 和 Twilio.Device 之间有什么区别,为什么我可以使用 RestClient 调用但不能有现场语音?

ios - UIButton ImageView 内容模式不起作用

ios - 如何检查日期/时间是否在当前日期/时间的 1 分钟内

javascript - 使滚动开始的框滚动到底部

java - 客户端已连接,但无法向服务器发送消息。[控制台聊天]

ruby-on-rails - Twilio 仅针对我的本地计算机返回身份验证错误