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

Agora RTM登录返回错误码9超时,RTC正常令牌有效,Swift端如何排查?

Agora RTM Swift端登录超时排查方案

你提供的实现代码如下:

self.rtmKit?.login(byToken: self.tempToken[1], user: self.userForRTM) { (error) in
    if error != .ok {
        print("Error logging in: ", error.rawValue)
    } else {
        self.rtmChannel = self.rtmKit?.createChannel(withId: self.userName, delegate: self) 
        // 此处需正确实现AgoraRtmChannelDelegate,才能收到消息接收、成员进出频道回调
        self.rtmChannel?.join(completion: { (error) in
            if error != .channelErrorOk {
                print("Error joining channel: ", error.rawValue)
            }
        })
    }
}

在已确认token有效、RTC功能正常的前提下,可能引发登录超时的原因如下:

  • RTM实例初始化异常
    调用login前先判断rtmKit是否为nil,如果实例创建失败,登录请求根本不会发出,自然会触发超时。检查初始化时填入的App ID是否和生成token用的App ID完全一致,不要填错测试/生产环境的App ID。
  • 用户ID匹配错误
    检查你传入的userForRTM参数,必须和生成token时填入的用户ID完全一致,大小写、特殊字符都不能有差异,否则鉴权阶段会被拦截,最终返回超时错误。同时确认用户ID符合RTM规范,不能包含非法字符,长度不超过64位。
  • 网络端口限制
    RTC和RTM使用的端口协议有差异:RTC主要走UDP端口,RTM默认走TCP 443、8443端口。即使RTC能正常通信,也可能是防火墙、运营商网络或者应用权限封禁了RTM对应的端口,可以切换到其他WiFi或者移动网络验证。
  • 区域配置不匹配
    如果初始化RTM时手动指定了区域参数,确认你选的区域和你业务使用的区域一致,若填错了区域会导致请求路由到错误的接入点,引发超时。RTC默认是就近接入,所以可能出现RTC正常、RTM超时的情况。
  • SDK版本兼容性问题
    若你使用的RTM SDK版本过低,和当前Agora服务端协议不兼容也会导致握手失败超时,建议升级到和当前RTC SDK版本匹配的最新稳定版RTM SDK。
  • 重复登录冲突
    不要在上一次登录请求还未返回结果时重复调用login接口,多次并发登录请求会被服务端拦截,最终触发超时,建议添加登录状态标记,仅在未登录状态下发起登录请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:39:04