跳到主要内容

监听连接状态

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

连接状态变化委托协议

RCIMConnectionStatusDelegate 协议定义如下:

@protocol RCIMConnectionStatusDelegate <NSObject>

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

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

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

@end
提示

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

当连接状态发生变化时,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与服务器的连接已断开,用户被封禁

添加或移除代理委托

支持添加多个代理。请在初始化之后,连接之前设置连接监听代理委托。

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

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


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