跳到主要内容

监听连接状态

IMKit SDK 为 App 提供了 IM 连接状态变化委托协议 RCIMConnectionStatusDelegate。通过监听 IM 连接状态的变化,App 可以进行不同业务处理,或在页面上给出提示。

添加或移除代理委托

您可以在 IMKit SDK 初始化 AppKey 之后,连接 IM 之前设置连接状态监听器,支持设置多个监听器。

为了避免内存泄露,请在不需要监听时,将设置的代理移除。

提示

代理对象请设置给 AppDelegate 之类的单例对象,保证 APP 整个生命周期都可以监听到代理方法。

Objective C
/// 添加代理委托
[[RCIM sharedRCIM] addConnectionStatusDelegate:self];


/// 移除代理委托
[[RCIM sharedRCIM] removeConnectionStatusDelegate:self];

连接状态变化委托协议

RCIMConnectionStatusDelegate 协议定义如下:

Objective C
@protocol RCIMConnectionStatusDelegate <NSObject>

/*!
IMKit连接状态的监听器

@param status SDK与融云服务器的连接状态

@discussion 如果您设置了IMKit 连接监听之后,当SDK与融云服务器的连接状态发生变化时,会回调此方法。
*/
- (void)onRCIMConnectionStatusChanged:(RCConnectionStatus)status;

@end

当连接状态发生变化时,SDK 会通过 - (void)onRCIMConnectionStatusChanged:(RCConnectionStatus)status; 方法,将当前的连接状态回调给开发者。RCConnectionStatus 中定义了连接过程中的可能的状态变化,下表具体说明了需要 App 处理的的状态码。

错误码说明
ConnectionStatus_KICKED_OFFLINE_BY_OTHER_CLIENT6当前用户在其他设备上登录,此设备被踢下线
ConnectionStatus_Timeout14自动连接超时,SDK 将不会继续连接,用户需要做超时处理,再自行调用 connectWithToken 接口进行连接
ConnectionStatus_TOKEN_INCORRECT15Token 无效。
  • Token 错误:常见于客户端 SDK 与 App 服务器所使用的 App Key 不一致的错误情况。融云的每个应用都提供用于隔离生产和开发环境的两套独立 App Key / Secret。由测试环境切换到生产环境时,很容易发生应用客户端与应用服务端 App Key 不一致的问题。
  • Token 已过期:常见于控制台设置了 Token 过期时间。Token 过期之后需要由您的 App 服务器请求融云服务端重新获取 Token,并再次用新的 Token 建立连接
ConnectionStatus_DISCONN_EXCEPTION16与服务器的连接已断开,用户被封禁