订阅用户在线状态
本文档旨在指导开发者如何在融云即时通讯 Android 客户端 SDK 中实现用户在线状态的订阅、查询和监听。通过本文档, Android 开发者将了解如何获取和跟踪用户在线状态,以及如何在状态变更时接收通知。
提示
此功能在 5.8.1 版本开始支持。
开通服务
您可以通过控制台开通服务。在融云控制台,选择 IM 服务 > IM 服务管理 > 客户端用户在线状态订阅 ,开启服务。
订阅用户在线状态
为了跟踪特定用户的在线状态, 您需要使用 subscribeEvent
方法进行订阅。
- 定义订阅用户 ID 列表: 创建一个包含您希望订阅用户 ID 的
ArrayList
,即单聊的targetId
。一次订阅用户的上限为 200 个, 订阅的用户数最多为 1000 个,一个用户最多可以被 5000 个用户订阅。 - 设置订阅时间:定义一个整数值,该值表示订阅的持续时间,订阅时长的范围为 60 秒到 2592000 秒。
- 指定订阅类型: 使用
SubscribeEvent.SubscribeType.ONLINE_STATUS
来指定订阅的是用户在线状态。 - 使用
subscribeEvent
方法执行订阅操作。
示例代码
//设置订阅类型。
SubscribeEvent.SubscribeType type= SubscribeEvent.SubscribeType.ONLINE_STATUS;
//设置订阅时间,取值范围为[60,2592000](单位:秒)。
int expiry=180000;
//订阅用户userId,即单聊的 targetId (一次最多订阅 200 个)。
List<String> userList=new ArrayList<>();
userList.add("user1");
userList.add("user2");
userList.add("user3");
SubscribeEventRequest request = new SubscribeEventRequest(type,expiry,userList);
RongCoreClient.getInstance().subscribeEvent(request, new IRongCoreCallback.SubscribeEventCallback<List<String>>() {
@Override
public void onSuccess() {
//订阅成功。
}
@Override
public void onError(int errorCode, List<String> strings) {
//订阅失败。
}
});
取消订阅用户在线状态
当您不再需要跟踪用户的在线状态时,可以使用 unSubscribeEvent
方法取消订阅。
//设置取消订阅的类型。
SubscribeEvent.SubscribeType type= SubscribeEvent.SubscribeType.ONLINE_STATUS;
//取消订阅用户userId,即单聊的 targetId,一次最多取消订阅 200 个。
List<String> userList=new ArrayList<>();
userList.add("user1");
userList.add("user2");
userList.add("user3");
SubscribeEventRequest request = new SubscribeEventRequest(type,userList);
RongCoreClient.getInstance().unSubscribeEvent(request, new IRongCoreCallback.SubscribeEventCallback<List<String>>() {
@Override
public void onSuccess() {
//取消订阅成功。
}
@Override
public void onError(int errorCode, List<String> strings) {
//取消订阅失败。
}
});
指定用户查询订阅状态信息
您可以使用 querySubscribeEvent
方法查询指定用户和订阅类型的状态信息。一次最多查询200个用户的状态信息。
//设置查询类型。
SubscribeEvent.SubscribeType type= SubscribeEvent.SubscribeType.ONLINE_STATUS;
//查询用户在线状态。
List<String> userList=new ArrayList<>();
userList.add("user1");
userList.add("user2");
userList.add("user3");
SubscribeEventRequest request = new SubscribeEventRequest(type,userList);
RongCoreClient.getInstance().querySubscribeEvent(request, new IRongCoreCallback.ResultCallback<List<SubscribeInfoEvent>>() {
@Override
public void onSuccess(List<SubscribeInfoEvent> subscribeInfoEvents) {
//查询成功,返回查询用户信息。
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode e) {
//查询失败。
}
});