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

SwiftUI集成Stream Chat SDK创建频道遇WaiterTimeout错误求助

SwiftUI集成Stream Chat SDK创建频道时出现WaiterTimeout错误

已成功集成Stream Chat SDK并完成用户登录,但创建硬编码"general"频道时反复触发WaiterTimeout错误,官方文档无法定位原因。

创建频道的代码:

class ChatManager: ObservableObject {

// vars and other methods

    public func createNewChannel(name: String) {
        
        do {
            let channelId = ChannelId(type: .messaging, id: "general")
            let channelController = try chatClient.channelController(
                createChannelWithId: channelId,
                name: name,
                members: [],
                isCurrentUserMember: true
            )
            channelController.synchronize { error in
                if let error = error {
                    print(error)
                }
            }
            
        } catch {
            print(error)
        }
    
    } 
}

频道列表视图代码:

struct ChannelListView: View {
    @EnvironmentObject var chatManager: ChatManager
    
    var body: some View {
        ChatChannelListView(
            viewFactory: CustomFactory.shared,
            channelListController: chatManager.customChannelListController
        )
    }
}

class CustomFactory: ViewFactory {

    @Injected(\.chatClient) public var chatClient

    private init() {}

    public static let shared = CustomFactory()

    func makeNoChannelsView() -> some View {
        VStack {
            Text("This is our own custom no channels view.")
        }
    }

}

触发按钮后输出的错误日志:

2023-08-31 09:28:09.799 [ERROR] [com.apple.root.default-qos] [APIClient.swift:223] [executeRequest(endpoint:completion:)] > Error WaiterTimeout in /Users/username/Library/Developer/Xcode/DerivedData/project_name/SourcePackages/checkouts/stream-chat-swift/Sources/StreamChat/Utils/Timers.swift:54

可能的解决方案:

  • 检查网络连接:确认设备能正常访问Stream的API服务,排除防火墙、代理或VPN的拦截,尝试切换网络(比如从WiFi到蜂窝数据)测试。
  • 验证ChatClient配置:确保初始化ChatClient时使用的API Key、用户Token完全正确,环境配置(生产/开发)与Stream控制台一致。
  • 修正频道创建参数:
    尝试将members参数从空数组改为包含当前用户ID的数组,即使isCurrentUserMember设为true,显式添加成员可能解决SDK内部的验证逻辑问题:
    members: [chatClient.currentUserId!]
    
  • 刷新频道列表控制器:创建频道后,调用customChannelListController.synchronize()触发列表刷新,避免因本地缓存未更新导致的重复请求超时。
  • 调整超时配置:初始化ChatClient时,尝试设置更长的超时时间,比如:
    let config = ChatClientConfig(apiKey: .init("YOUR_API_KEY"))
    config.urlSessionConfiguration.timeoutIntervalForRequest = 30
    let chatClient = ChatClient(config: config)
    
  • 清理缓存与重启:清理Xcode的DerivedData,卸载APP后重新安装,重启Xcode和设备,排除本地缓存或构建残留的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 07:15:16