监听连接状态
SDK 提供了 IM 连接状态变化委托协议 RCConnectionStatusChangeDelegate
。通过监听 IM 连接状态的变化,App 可以进行不同业务处理,或在页面上给出提示。
连接状态变化委托协议
RCConnectionStatusChangeDelegate
协议定义如下:
@protocol RCConnectionStatusChangeDelegate <NSObject>
/*!
IMLib连接状态的监听器
@param status SDK与融云服务器的连接状态
@discussion 如果您设置了IMLib 连接监听之后,当SDK与融云服务器的连接状态发生变化时,会回调此方法。
*/
- (void)onConnectionStatusChanged:(RCConnectionStatus)status;
@end
提示
代理对象请设置给 AppDelegate 之类的单例对象,保证 APP 整个生命周期都可以监听到代理方法。
当连接状态发生变化时,SDK 会通过 - (void)onConnectionStatusChanged:(RCConnectionStatus)status;
方法,将当前的连接状态回调给开发者。RCConnectionStatus 中定义了连接过程中的可能的状态变化,下表具体说明了需要 App 处理的的状态码。
错误码 | 值 | 说明 |
---|---|---|
ConnectionStatus_KICKED_OFFLINE_BY_OTHER_CLIENT | 6 | 当前用户在其他设备上登录,此设备被踢下线 |
ConnectionStatus_Timeout | 14 | 自动连接超时,SDK 将不会继续连接,用户需要做超时处理,再自行调用 connectWithToken 接口进行连接 |
ConnectionStatus_TOKEN_INCORRECT | 15 | token 无效,请从 APP 服务重新获取 token。原因有两种: 一是 token 错误,请检查客户端初始化使用的 AppKey 和服务器获取 token 使用的 AppKey 是否一致; 二是 token 过期,是因为在控制台设置了 token 过期时间,需要请求开发者的服务器重新获取 token 并再次用新的 token 建立连接。 |
ConnectionStatus_DISCONN_EXCEPTION | 16 | 与服务器的连接已断开,用户被封禁 |
添加或移除代理委托
设置连接状态监听器,支持设置多个监听器。
为了避免内存泄露,请在不需要监听时,将设置的代理移除。
/// 添加代理委托
[[RCCoreClient sharedCoreClient] addConnectionStatusChangeDelegate:self];
/// 移除代理委托
[[RCCoreClient sharedCoreClient] removeConnectionStatusChangeDelegate:self];