好友管理
本文档旨在指导开发者如何使用融云即时通讯 iOS IMLib SDK 实现添加好友、删除好友、查看好友列表、管理好友等功能。
提示
此功能在 5.12.0 版本开始支持。
开通服务
使用此功能前,您须在控制台开通信息托管服务。
好友事件监听
好友事件定义在 RCFriendEventDelegate 中,包含好友添加删除、好友申请状态、好友全部清理、好友信息变更多端回调。
您可以调用 addFriendEventDelegate
设置好友事件监听器。如果不想再接收好友事件,可调用 removeFriendEventDelegate
接口移除设置的监听。
提示
信息托管服务中,好友操作产生的 SDK 通知回调也是一种状态通知行为,不管应用中是否实现 SDK 的事件监听,服务端都会对 SDK 进行状态同步,确保本地最新的好友关系状态,所以会计入消息的分发、下行数据统计中。
代码示例
// 添加好友事件监听
[[RCCoreClient sharedCoreClient] addFriendEventDelegate:self];
// 移除好友事件监听
[[RCCoreClient sharedCoreClient] removeFriendEventDelegate:self];
// -------- 回调事件 ----------
// 好友添加回调
- (void)onFriendAdd:(NSString *)userId
name:(NSString *)name
portraitUri:(NSString *)portraitUri
directionType:(RCDirectionType)directionType
operationTime:(long long)operationTime {
}
// 好友删除回调
- (void)onFriendDelete:(NSArray<NSString *> *)userIds
directionType:(RCDirectionType)directionType
operationTime:(long long)operationTime {
}
// 好友申请状态回调事件
- (void)onFriendApplicationStatusChanged:(NSString *)userId
applicationType:(RCFriendApplicationType)applicationType
status:(RCFriendApplicationStatus)status
directionType:(RCDirectionType)directionType
operationTime:(long long)operationTime
extra:(NSString *)extra {
}
// 好友全部清理回调事件。注意:此操作只能由服务端发起
- (void)onFriendCleared:(long long)operationTime {
}
// 好友信息变更多端回调事件
- (void)onFriendInfoChangedSync:(NSString *)userId
remark:(NSString *)remark
extProfile:(NSDictionary<NSString *,NSString *> *)extProfile
operationTime:(long long)operationTime {
}
好友在线状态与资料变更
好友之间的在线状态和用户资料变更,无需调用 subscribeEvent
接口主动订阅。
若需要接收变更事件通知,您可以调用 addSubscribeEventDelegate
设置变更事件监听器。
监听器需要在 SDK 初始化之后,建立连接之前设置。
订阅事件的变更,需要根据 RCSubscribeType 订阅类型来处理对应的业务:
RCSubscribeTypeFriendOnlineStatus
代表好友在线状态。RCSubscribeTypeFriendUserProfile
代表好友用户资料。
提示
开发者需要通过开发者后台开启“客户端好友资料变更通知”和“客户端好友在线状态变更通知”功能后,才能使用此功能,实时接收好友之间的在线状态和用户资料变更通知,通知行为也会计入单聊消息的分发、下行数据统计。
// 添加监听代理
[[RCCoreClient sharedCoreClient] addSubscribeEventDelegate:self];
// 移除监听代理
// [[RCCoreClient sharedCoreClient] removeSubscribeEventDelegate:self];
// ---------- 事件回调 ----------
// 事件变更回调
- (void)onEventChange:(NSArray<RCSubscribeInfoEvent *> *)subscribeEvents {
// 需要判断 RCSubscribeInfoEvent 的 subscribeType,
// 等于 RCSubscribeTypeFriendOnlineStatus 时代表用户信息订阅事件。
// 等于 RCSubscribeTypeFriendUserProfile 时代表好友用户资料变更事件。
}
// 订阅数据同步完成
- (void)onSubscriptionSyncCompleted:(RCSubscribeType)type {
// 使用 type 区分不同的订阅类型:
// RCSubscribeTypeFriendOnlineStatus 代表好友在线状态。
// RCSubscribeTypeFriendUserProfile 代表好友用户资料。
}
好友操作
添加好友
您可使用融云提供的用户搜索功能或自行实现用户搜索功能,搜索后调用 addFriend
接口根据用户 ID 将指定用户添加为好友。
添加时可选择是否输入好友申请的附加信息,同步给目标用户。
提示
一个用户最多可以添加 3000 个好友。
代码示例
// 添加的好友用户Id
NSString *userId = @"userId1";
// 添加双向好友,目前仅支持双向好友,后续可能会支持其他类型
RCDirectionType directionType = RCDirectionTypeBoth;
// 发送好友请求时的附加信息,长度不超过 128 个字符
NSString *extra = @"请求添加好友";
[[RCCoreClient sharedCoreClient] addFriend:userId
directionType:directionType
extra:extra
success:^(RCErrorCode processCode) {
// 添加好友请求成功
if (processCode == RC_SUCCESS) {
// 好友添加成功
} else {
// 等待好友同意
}
} error:^(RCErrorCode errorCode) {
// 添加好友请求失败
}];
加好友权限说明
- AppKey 默认用户信息权限为 需要用户同意添加好友。
- 用户的权限设置将覆盖 AppKey 的权限设置,若用户未设定自己的权限,此时将采用 AppKey 的权限设置。