监听连接状态
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_CLIENT | 6 | 当前用户在其他设备上登录,此设备被踢下线 |
ConnectionStatus_Timeout | 14 | 自动连接超时,SDK 将不会继续连接,用户需要做超时处理,再自行调用 connectWithToken 接口进行连接 |
ConnectionStatus_TOKEN_INCORRECT | 15 | Token 无效。
|
ConnectionStatus_DISCONN_EXCEPTION | 16 | 与服务器的连接已断开,用户被封禁 |
添加或移除代理委托
支持添加多个代理。请在初始化之后,连接之前设置连接监听代理委托。
为了避免内存泄露,请在不需要监听时,将设置的代理移除。
/// 添加代理委托
[[RCIM sharedRCIM] addConnectionStatusDelegate:self];
/// 移除代理委托
[[RCIM sharedRCIM] removeConnectionStatusDelegate:self];