浏览 SDKs · iOS
平台
SDKsiOS

订阅用户在线状态

使用 iOS SDK 订阅可见用户的在线状态。

复制

向服务端订阅目标用户的在线状态,以便接收其后续的在线、离线及登录端状态变更:

参数说明

参数类型说明
userIDsNSArray<NSString *> *目标用户 ID 列表,建议去除空值和重复项,且仅订阅当前界面可见的用户。
[[OIMManager manager] subscribeUsersStatus:userIDs
                                 onSuccess:^(NSArray<OIMUserStatusInfo *> *states) {
    [presenceStore mergeStates:states];
}
                                 onFailure:^(NSInteger code, NSString *message) {
    NSLog(@"subscribeUsersStatus failed: %ld %@", (long)code, message);
}];

状态以 userID 为合并标识。离开列表或页面销毁时,建议调用取消用户状态订阅释放订阅额度。

返回结果

成功回调 onSuccess 返回所订阅用户的即时状态列表 NSArray<OIMUserStatusInfo *> *,包含当前在线状态与在线平台等。

监听在线状态变更

实现 OIMUserListener 协议的 onUserStatusChanged: 方法监听已订阅用户的增量状态变更:

@interface PresenceStore () <OIMUserListener>
@end

@implementation PresenceStore

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

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

- (void)onUserStatusChanged:(OIMUserStatusInfo *)status {
    [self updateUserStatus:status];
}

@end

在退出登录或切换账号时,使用注册时的同一个 listener 实例调用移除监听方法。需要主动校准当前已订阅用户的状态时,可调用查询已订阅用户状态。