Flutter
功能描述
关注功能允许用户选择他们感兴趣的其他用户,以便及时获取这些用户最新的动态、发布或活动信息,系统可以根据用户的关注列表提供个性化的内容推荐。
粉丝功能是指用户被其他人关注的状态,当用户 A 关注用户 B 时,A 就成为了 B 的粉丝。用户可以在自己的个人资料页面上查看粉丝数量、粉丝列表或者粉丝的资料信息等。
通过关注和粉丝功能,社交应用和网站能够创建一个活跃的、相互连接的用户网络,促进信息的传播和社区的构建。
功能演示
关注用户
您可以调用
followUser
接口来关注指定的用户。示例代码如下:
// 关注用户V2TimValueCallback<List<V2TimFollowOperationResult>> followResults = await friendshipManager.followUser(userIDList: ['user1']);if (followResults.code == 0) {// 关注成功followResults.data?.forEach((element) {element?.userID; // 被操作的用户 IDelement?.resultCode; // 操作的错误码element.resultInfo; // 操作结果描述});}
说明:
该接口一次最多支持关注 20 个用户(除了自己之外,其他用户都可以关注)。
每个用户的关注用户数量上限为 5000 人,粉丝用户数量无上限。
取消关注用户
您可以调用
unfollowUser
接口来取消关注指定的用户。示例代码如下:
// 取消关注用户V2TimValueCallback<List<V2TimFollowOperationResult>> unfollowResults = await friendshipManager.unFollowUser(userIDList: ['user1']);if (unfollowResults.code == 0) {// 取消关注成功unfollowResults.data?.forEach((element) {element?.userID; // 被操作的用户 IDelement?.resultCode; // 操作的错误码element?.resultInfo; // 操作结果描述});}
说明:
一次最多支持取消关注 20 个用户。
获取我的关注用户列表
您可以调用
getMyFollowingList
接口来拉取已经关注的用户列表。示例代码如下:
// 获取自己的关注列表V2TimValueCallback<V2TimUserInfoResult> userInfoListRes = await friendshipManager.getMyFollowingList(nextCursor: "");if (userInfoListRes.code == 0) {// 获取成功userInfoListRes.data?.nextCursor; // 分页拉取的游标,首次拉取为 "",回调成功如果 nextCursor 不为 "",可以传入该值再次拉取,直至 nextCursor 返回为 "",表示全部拉取完成。userInfoListRes.data?.userFullInfoList?.forEach((element) {element?.userID; // 用户 IDelement?.nickName; // 用户昵称element?.faceUrl; // 用户头像 urlelement?.selfSignature; // 用户签名element?.gender; // 用户性别element?.allowType; // 用户的好友验证方式element?.customInfo; // 用户自定义信息element?.role; // 用户角色element?.level; // 用户等级element?.birthday; // 用户生日});}
说明:
该接口每次最多返回 500 个用户。
首次拉取时,可以将接口的
nextCursor
参数填写为 ""
, 回调成功后如果返回的 nextCursor
不为 ""
,可以传入该值再次拉取,直至 nextCursor
返回为 ""
,表示全部拉取完成。获取我的粉丝用户列表
您可以调用
getMyFollowersList
接口来拉取自己的粉丝用户列表。示例代码如下:
// 获取自己的关注列表V2TimValueCallback<V2TimUserInfoResult> userInfoListRes = await friendshipManager.getMyFollowersList
(nextCursor: "");if (userInfoListRes.code == 0) {// 获取成功userInfoListRes.data?.nextCursor; // 分页拉取的游标,首次拉取为 "",回调成功如果 nextCursor 不为 "",可以传入该值再次拉取,直至 nextCursor 返回为 "",表示全部拉取完成。userInfoListRes.data?.userFullInfoList?.forEach((element) {element?.userID; // 用户 IDelement?.nickName; // 用户昵称element?.faceUrl; // 用户头像 urlelement?.selfSignature; // 用户签名element?.gender; // 用户性别element?.allowType; // 用户的好友验证方式element?.customInfo; // 用户自定义信息element?.role; // 用户角色element?.level; // 用户等级element?.birthday; // 用户生日});}
说明:
该接口每次最多返回 500 个用户。
首次拉取时,可以将接口的
nextCursor
参数填写为 ""
, 回调成功后如果返回的 nextCursor
不为 ""
,可以传入该值再次拉取,直至 nextCursor
返回为 ""
,表示全部拉取完成。获取与我互相关注的用户列表
您可以调用
getMutualFollowersList
接口来拉取与自己互相关注的用户列表(互相关注的用户都可以在彼此的关注用户列表和粉丝用户列表中找到对方)。示例代码如下:
// 获取自己的关注列表V2TimValueCallback<V2TimUserInfoResult> userInfoListRes = await friendshipManager.getMutualFollowersList(nextCursor: "");if (userInfoListRes.code == 0) {// 获取成功userInfoListRes.data?.nextCursor; // 分页拉取的游标,首次拉取为 "",回调成功如果 nextCursor 不为 "",可以传入该值再次拉取,直至 nextCursor 返回为 "",表示全部拉取完成。userInfoListRes.data?.userFullInfoList?.forEach((element) {element?.userID; // 用户 IDelement?.nickName; // 用户昵称element?.faceUrl; // 用户头像 urlelement?.selfSignature; // 用户签名element?.gender; // 用户性别element?.allowType; // 用户的好友验证方式element?.customInfo; // 用户自定义信息element?.role; // 用户角色element?.level; // 用户等级element?.birthday; // 用户生日});}
说明:
该接口每次最多返回 500 个用户。
首次拉取时,可以将接口的
nextCursor
参数填写为 ""
, 回调成功后如果返回的 nextCursor
不为 ""
,可以传入该值再次拉取,直至 nextCursor
返回为 ""
,表示全部拉取完成。获取用户的关注/粉丝/互关用户数量
您可以调用
getUserFollowInfo
接口来获取指定用户的关注/粉丝/互关用户的数量信息 。示例代码如下:
// 获取用户的关注/粉丝/互关用户数量V2TimValueCallback<List<V2TimFollowInfo>> userFollowInfoListRes = await friendshipManager.getUserFollowInfo(userIDList: ['user1']);if (userFollowInfoListRes.code == 0) {// 获取操作成功userFollowInfoListRes.data?.forEach((element) {element?.resultCode; // 结果码,0 表示本条记录获取成功,非 0 表示失败element?.resultInfo; // 结果描述信息element?.userID; // 用户 IDelement?.followingCount; // 该用户的关注数量element?.followersCount; // 该用户的粉丝数量element?.mutualFollowersCount; // 该用户的互关数量});}
检查关注关系
您可以调用
checkFollowType
接口用来检查自己与指定用户的关注关系。在回调信息中,您可以通过
V2TimFollowTypeCheckResult
的 followType
字段来获取自己与该用户的关系:V2TimFollowTypeCheckResult.followType | 与自己的关系 |
V2TIM_FOLLOW_TYPE_NONE = 0 | 无任何关系 |
V2TIM_FOLLOW_TYPE_IN_MY_FOLLOWING_LIST = 1 | 对方仅在我的关注列表中 |
V2TIM_FOLLOW_TYPE_IN_MY_FOLLOWERS_LIST = 2 | 对方仅在我的粉丝列表中 |
V2TIM_FOLLOW_TYPE_IN_BOTH_FOLLOWERS_LIST = 3 | 对方与我互相关注(对方既在我的关注列表,也在我的粉丝列表) |
示例代码如下:
// 检查与特定用户的关注关系V2TimValueCallback<List<V2TimFollowTypeCheckResult>> followTypeCheckRes = await friendshipManager.checkFollowType(userIDList: ['user1']);if (followTypeCheckRes.code == 0) {// 获取操作成功followTypeCheckRes.data?.forEach((element) {element?.resultCode; // 结果码,0 表示本条记录获取成功,非 0 表示失败element?.resultInfo; // 结果描述信息element?.userID; // 用户 IDelement?.followType; // 关注类型,0:无任何关系,1:对方仅在我的关注列表,2:对方仅在我的粉丝列表,3:互相关注});}
说明:
该接口限频为每 5s 内最多调用 20 次,且每次最多支持传入 100 个用户 。
关注/粉丝/互关列表变更通知
具体的列表变更通知如下:
列表变更通知 | 说明 |
关注列表变更通知 onMyFollowingListChanged | 当通知中的 isAdd 为 true 时,表示列表新增用户的通知,此时会返回完整的用户资料当通知中的 isAdd 为 false 时,表示列表删除用户的通知,此时返回的用户资料中仅有用户 ID |
粉丝列表变更通知 onMyFollowersListChanged | |
互关列表变更通知 onMutualFollowersListChanged | |
说明:
您需要预先调用
addFriendListener
添加关系链事件监听器,之后才能收到上述相关事件的通知。列表新增用户通知的场景示例
假设有两个没有任何关系用户
Alice
和 Bob
,这两个用户相互关注过程中,相关列表变更通知和关系变更如下:事件 | Alice | Bob | ||
| 收到的通知 | 与 Bob 的关系 | 收到的通知 | 与 Alice 的关系 |
Alice 关注 Bob | ||||
Bob 关注 Alice |
列表删除用户通知的场景示例
假设有两个已经互相关注的用户
Alice
和 Bob
, 这两个用户相互取消关注过程中,相关列表变更通知和关系变更如下:事件 | Alice | Bob | ||
| 收到的通知 | 与 Bob 的关系 | 收到的通知 | 与 Alice 的关系 |
Alice 取消关注 Bob | ||||
Bob 取消关注 Alice |
示例代码如下:
// 设置关系链监听器V2TimFriendshipListener listener = V2TimFriendshipListener(OnMyFollowingListChanged: (List<V2TimUserFullInfo> userInfoList, bool isAdd) async {if (isAdd) {// 关注列表新增用户的通知} else {// 关注列表删除用户的通知}},OnMyFollowersListChanged: (List<V2TimUserFullInfo> userInfoList, bool isAdd) async {if (isAdd) {// 粉丝列表新增用户的通知} else {// 粉丝列表删除用户的通知}},OnMutualFollowersListChanged: (List<V2TimUserFullInfo> userInfoList, bool isAdd) async {if (isAdd) {// 互关列表新增用户的通知} else {// 互关列表删除用户的通知}}// 其他事件监听...);// 添加关系链监听器TencentImSDKPlugin.v2TIMManager.getFriendshipManager().addFriendListener(listener: listener);// 移除关系链监听器friendshipManager.removeFriendListener(listener : friendshipListener);
联系我们