You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS Swift应用中Twilio Conversations API连接错误:网络连接丢失

iOS Twilio Conversations API 连接错误(NSURLErrorDomain Code=-1005)排查方案

问题场景

我在iOS Swift应用中使用Twilio Conversations API,从自有服务器获取token后,通过以下代码初始化TwilioConversationsClient:

func loginWithAccessToken(_ token: String) {
    // Set up Twilio Conversations client
    TwilioConversationsClient.conversationsClient(withToken: token,
                                                  properties: nil,
                                                  delegate: self) { (result, client) in
        self.client = client
    }
}

执行后收到错误日志:

2023-03-22 22:44:46.186396-0700 app[21875:865489] Connection not set before response is received, failing task
2023-03-22 22:44:46.194863-0700 app[21875:865489] Task <724658EF-E3D3-4554-83C5-0975EE6C738C>.<1> finished with error [-1005] Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo={NSErrorFailingURLStringKey=https://tsock.us1.twilio.com:443/v3/wsconnect, NSErrorFailingURLKey=https://tsock.us1.twilio.com:443/v3/wsconnect, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalWebSocketTask <724658EF-E3D3-4554-83C5-0975EE6C738C>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <724658EF-E3D3-4554-83C5-0975EE6C738C>.<1>, NSLocalizedDescription=The network connection was lost.}

排查与解决步骤

1. 检查App Transport Security(ATS)配置

iOS默认ATS会限制不符合安全标准的网络连接,虽然Twilio域名使用HTTPS,但需确保ATS未拦截该域名。在Info.plist中添加以下配置:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>twilio.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.2</string>
        </dict>
    </dict>
</dict>

注意:上架App Store时无需开启NSTemporaryExceptionAllowsInsecureHTTPLoads,Twilio域名符合苹果ATS安全标准。

2. 验证Access Token有效性

  • 检查token是否包含conversations:client权限,payload中的grants字段需包含chat(Conversations API的授权字段为chat)
  • 确认token未过期,查看exp字段的时间戳是否在有效期内
  • 可通过Twilio本地工具解析token payload,确认所有配置正确

3. 排查网络环境

  • 用测试设备的Safari访问https://tsock.us1.twilio.com:443/v3/wsconnect,若返回WebSocket upgrade required则说明网络可达
  • 关闭设备的代理或VPN后重试,这类工具可能拦截WebSocket连接

4. 更新Twilio Conversations SDK版本

旧版本SDK可能存在WebSocket连接bug,通过CocoaPods或Swift Package Manager更新至最新稳定版:

# CocoaPods更新命令
pod update TwilioConversationsClient

5. 实现代理方法获取详细错误

确保已实现TwilioConversationsClientDelegate的错误回调,获取更具体的Twilio侧错误信息:

func conversationsClient(_ client: TwilioConversationsClient, encounteredError error: Error) {
    print("Twilio Client Detailed Error: \(error.localizedDescription)")
}

6. 显式配置客户端属性

初始化时尝试设置WebSocket超时等属性,替换nil的properties参数:

let properties = TwilioConversationsClientProperties()
properties.webSocketTimeout = 30 // 设置30秒超时
TwilioConversationsClient.conversationsClient(withToken: token, properties: properties, delegate: self) { (result, client) in
    self.client = client
}

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 08:52:58