SDKsiOS
分页获取好友列表
分页获取 iOS 当前用户的好友列表。
通过分页接口分批获取好友列表,避免一次性加载过多数据造成界面卡顿:
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
offset | NSInteger | 分页起始偏移量,首屏传 0。 |
count | NSInteger | 每页拉取的数据条数。 |
filterBlack | BOOL | 是否自动过滤已被拉入黑名单的好友。 |
[[OIMManager manager] getFriendListPageWithOffset:0
count:50
filterBlack:YES
onSuccess:^(NSArray<OIMFriendInfo *> *friends) {
[friendStore replaceFirstPage:friends];
}
onFailure:^(NSInteger code, NSString *message) {
NSLog(@"getFriendListPage failed: %ld %@", (long)code, message);
}];状态以 userID 为合并标识。加载更多页时递增偏移量,并对列表进行去重合并。
返回结果
成功回调 onSuccess 返回当前分页的 NSArray<OIMFriendInfo *> * 数组。查询操作仅返回调用时刻的数据快照,不触发好友事件。
监听好友关系与资料变更
实现 OIMFriendshipListener 协议处理好友新增、资料更新与好友删除事件:
@interface FriendshipStore () <OIMFriendshipListener>
@end
@implementation FriendshipStore
- (void)startListening {
[[OIMManager callbacker] addFriendListener:self];
}
- (void)stopListening {
[[OIMManager callbacker] removeFriendListener:self];
}
- (void)onFriendAdded:(OIMFriendInfo *)info {
[friendStore mergeFriend:info];
}
- (void)onFriendInfoChanged:(OIMFriendInfo *)info {
[friendStore mergeFriend:info];
}
- (void)onFriendDeleted:(OIMFriendInfo *)info {
[friendStore removeUserID:info.userID];
}
@end分页查询与之后到达的 delegate 分别处理,并始终按 userID 合并。退出登录、切换账号或销毁联系人状态层时调用 stopListening。
这个页面有帮助吗?