好友管理
本文档旨在指导开发者如何使用融云即时通讯 Android IMLib SDK 实现添加好友、删除好友、查看好友列表、管理好友等功能。
此功能从 5.12.0 版本开始支持。
开通服务
使用此功能前,您须在控制台开通信息托管服务。
好友事件监听
为了及时接收好友添加删除、好友申请状态、好友全部清理、好友信息变更多端回调变更通知,你需要在应用调用 IMLib SDK 的初始化之后,且在调用 IMLib SDK 的连接之前,设置订阅好友事件监听器 FriendEventListener。
您可以调用 setFriendEventListener
设置好友事件监听器,如果不想再接收好友事件,接口传 null
即可。
信息托管服务中,好友操作产生的 SDK 通知回调也是一种状态通知行为,不管应用中是否实现 SDK 的事件监听,服务端都会对 SDK 进行状态同步,确保本地最新的好友关系状态,所以会计入消息的分发、下行数据统计中。
示例代码
FriendEventListener friendEventListener = new FriendEventListener() {
@Override
public void onFriendAdd(DirectionType directionType, String userId, String name, String portraitUri, long operationTime) {
// 好友添加回调
}
@Override
public void onFriendDelete(DirectionType directionType, List<String> userIds, long operationTime) {
// 好友删除回调
}
@Override
public void onFriendApplicationStatusChanged(String userId, FriendApplicationType applicationType, FriendApplicationStatus status, DirectionType directionType, long operationTime, String extra) {
// 好友申请状态回调事件
}
@Override
public void onFriendCleared(long operationTime) {
// 好友全部清理回调事件。注意:此操作只能由服务端发起
}
@Override
public void onFriendInfoChangedSync(String userId, String remark, Map<String, String> extProfile, long operationTime) {
// 好友信息变更多端回调事件
}
};
RongCoreClient.getInstance().setFriendEventListener(friendEventListener);
好友在线状态与资料变更
IMLib SDK 会自动处理好友之间的在线状态和用户资料变更。
如果您需要接收变更事件通知,您可以在 SDK 初始化之后,建立连接之前调用 addSubscribeEventListener
设置变更事件监听器。
订阅事件的变更,需要根据 SubscribeType 订阅类型来处理对应的业务
FRIEND_ONLINE_STATUS(3)
时代表好友在线状态;FRIEND_USER_PROFILE(4)
代表好友资料。
您需要通过开发者后台开启“客户端好友资料变更通知”和“客户端好友在线状态变更通知”功能后,才能使用此功能,实时接收好友之间的在线状态和用户资料变更通知,通知行为也会计入单聊消息的分发、下行数据统计。
示例代码
RongCoreClient.getInstance().addSubscribeEventListener(new OnSubscribeEventListener() {
/**
* @param subscribeEvents 订阅事件的列表,包含所有发生变化的事件。
* 被订阅者发生状态变更时,SubscribeEvent.operationType 无值。
* 订阅过期没有通知, 开发者需自行关注过期时间。
* 注意:需要判断 SubscribeInfoEvent 的 SubscribeType, 等于 FRIEND_ONLINE_STATUS 代表好友在线状态,FRIEND_USER_PROFILE 代表好友资料
*/
@Override
public void onEventChange(List<SubscribeInfoEvent> subscribeEvents) {
}
/**
* 标记订阅数据同步完成。 该方法在订阅数据成功同步到设备或系统后调用,用于执行后续处理。
* 注意:需要判断 SubscribeType, 等于 FRIEND_ONLINE_STATUS 代表好友在线状态,FRIEND_USER_PROFILE 代表好友资料
*
* @param type 同步完成的类型。需要通过根据类型来判断具体是哪种业务同步完成。
* @since 5.10.0
*/
@Override
public void onSubscriptionSyncCompleted(SubscribeEvent.SubscribeType type) {
}
});
好友操作
添加好友
您可以通过调用 addFriend
接口根据用户 userId 将指定用户添加为好友,添加时可通过设置 extra 将好友申请的附加信息同步给被添加的用户。
用户 userId 的获取可以使用使用融云提供的用户搜索功能。
一个用户最多可以添加 3000 个好友。
示例代码
// 添加的好友用户Id
String userId = "user1";
// 添加双向好友
DirectionType directionType = DirectionType.Both;
// 发送好友请求时的附加信息,长度不超过 128 个字符
String extra = "请求添加好友";
RongCoreClient.getInstance().addFriend(userId, directionType, extra, new IRongCoreCallback.ResultCallback<IRongCoreEnum.CoreErrorCode>() {
@Override
public void onSuccess(IRongCoreEnum.CoreErrorCode processCode) {
// 添加好友请求成功
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode e) {
// 添加好友请求失败
}
});
设置加好友权限
您可以使用 setFriendAddPermission
设置当前用户的加好友权限,未设置时以 AppKey 默认的加好友权限为准。