浏览 SDKs · iOS
SDKsiOS

事件概览

注册 OpenIM iOS SDK listener,并按业务生命周期同步连接与数据状态。

复制

OpenIM iOS SDK 按领域定义 listener protocol。应用通过 [OIMManager callbacker] 添加和移除 listener,并由业务状态层强引用 listener 对象;callbacker 对这些对象使用弱引用。

注册生命周期

事件范围Protocol对应页面
连接和 token初始化时传入的连接 blocks认证与管理登录会话
用户、好友和黑名单OIMUserListenerOIMFriendshipListener用户概览
会话和同步OIMConversationListener获取会话列表
会话分组Open_im_sdk_callbackOnConversationGroupListener会话分组概览
群组和群成员OIMGroupListener群组概览
消息OIMAdvancedMsgListener接收消息
自定义业务通知OIMCustomBusinessListener接收自定义业务消息
音视频通话OIMSignalingListener通话事件

initSDK 成功后、login 前注册应用级 listener。不要在视图每次渲染或出现时重复添加;退出登录、切换账号或销毁状态层时,用同一实例调用对应的 remove...Listener:

会话分组是例外:它由 OpenIMCore 的 Open_im_sdkSetConversationGroupListener 设置单一 Open_im_sdk_callbackOnConversationGroupListener,不经过 [OIMManager callbacker],也不是可重复添加的 OIMCallbacker listener。应用应由会话状态层长期持有 callback 对象,并在 SDK 生命周期内只设置一次;完整 callback 与 JSON 载荷见会话分组概览

监听初始化同步

同步生命周期属于 OIMConversationListener。本页是四个同步 callback 的完整实现归属页:

@interface SDKSyncStore () <OIMConversationListener>
@end

@implementation SDKSyncStore

- (void)startListening {
    [[OIMManager callbacker] addConversationListener:self];
}

- (void)stopListening {
    [[OIMManager callbacker] removeConversationListener:self];
}

- (void)onSyncServerStart:(BOOL)reInstall {
    [self setSyncingWithProgress:0 reInstall:reInstall];
}

- (void)onSyncServerProgress:(NSInteger)progress {
    [self setSyncingWithProgress:progress reInstall:self.reInstallSync];
}

- (void)onSyncServerFinish:(BOOL)reInstall {
    [self setSyncReadyWithReInstall:reInstall];
    [self reloadVisibleSnapshots];
}

- (void)onSyncServerFailed:(BOOL)reInstall {
    [self setSyncFailedWithReInstall:reInstall];
}

@end

reInstallYES 表示本地数据库重建后的同步,通常需要更完整的加载状态;onSyncServerProgress: 提供当前进度。完成后重新查询当前界面所需快照,再继续合并各领域 listener 的后续增量。

同步事件不是某个查询 API 的成功 callback,也没有业务实体合并键。同步完成、重新查询与后续事件增量应分别处理,并按当前 SDK 实例和登录用户隔离状态。