即时通信 IM Flutter(关注&粉丝)

通过关注和粉丝功能,社交应用和网站能够创建一个活跃的、相互连接的用户网络,促进信息的传播和社区的构建。

相关产品
即时通信 IM 产品页,含版本规格、价格与购买入口。

一、功能描述

·关注功能允许用户选择他们感兴趣的其他用户,以便及时获取这些用户最新的动态、发布或活动信息,系统可以根据用户的关注列表提供个性化的内容推荐。

·粉丝功能是指用户被其他人关注的状态,当用户 A 关注用户 B 时,A 就成为了 B 的粉丝。用户可以在自己的个人资料页面上查看粉丝数量、粉丝列表或者粉丝的资料信息等。

注意:说明:

二、关注用户

你可以调用 followUser接口来关注指定的用户。

示例代码如下:

// 关注用户V2TimValueCallback<List<V2TimFollowOperationResult>> followResults = await friendshipManager.followUser(userIDList: ['user1']);if (followResults.code == 0) { // 关注成功 followResults.data?.forEach((element) { element?.userID; // 被操作的用户 ID element?.resultCode; // 操作的错误码 element.resultInfo; // 操作结果描述 });}

注意:说明:

三、取消关注用户

你可以调用 unfollowUser接口来取消关注指定的用户。

示例代码如下:

// 取消关注用户V2TimValueCallback<List<V2TimFollowOperationResult>> unfollowResults = await friendshipManager.unFollowUser(userIDList: ['user1']);if (unfollowResults.code == 0) { // 取消关注成功 unfollowResults.data?.forEach((element) { element?.userID; // 被操作的用户 ID element?.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; // 用户 ID element?.nickName; // 用户昵称 element?.faceUrl; // 用户头像 url element?.selfSignature; // 用户签名 element?.gender; // 用户性别 element?.allowType; // 用户的好友验证方式 element?.customInfo; // 用户自定义信息 element?.role; // 用户角色 element?.level; // 用户等级 element?.birthday; // 用户生日 });}

注意:说明:

五、获取我的粉丝用户列表

你可以调用getMyFollowersList 接口来拉取自己的粉丝用户列表。

示例代码如下:

// 获取自己的关注列表V2TimValueCallback<V2TimUserInfoResult> userInfoListRes = await friendshipManager.getMyFollowersList(nextCursor: "");if (userInfoListRes.code == 0) { // 获取成功 userInfoListRes.data?.nextCursor; // 分页拉取的游标,首次拉取为 "",回调成功如果 nextCursor 不为 "",可以传入该值再次拉取,直至 nextCursor 返回为 "",表示全部拉取完成。 userInfoListRes.data?.userFullInfoList?.forEach((element) { element?.userID; // 用户 ID element?.nickName; // 用户昵称 element?.faceUrl; // 用户头像 url element?.selfSignature; // 用户签名 element?.gender; // 用户性别 element?.allowType; // 用户的好友验证方式 element?.customInfo; // 用户自定义信息 element?.role; // 用户角色 element?.level; // 用户等级 element?.birthday; // 用户生日 });}

注意:说明:

六、获取与我互相关注的用户列表

你可以调用getMutualFollowersList 接口来拉取与自己互相关注的用户列表(互相关注的用户都可以在彼此的关注用户列表和粉丝用户列表中找到对方)。

示例代码如下:

// 获取自己的关注列表V2TimValueCallback<V2TimUserInfoResult> userInfoListRes = await friendshipManager.getMutualFollowersList(nextCursor: "");if (userInfoListRes.code == 0) { // 获取成功 userInfoListRes.data?.nextCursor; // 分页拉取的游标,首次拉取为 "",回调成功如果 nextCursor 不为 "",可以传入该值再次拉取,直至 nextCursor 返回为 "",表示全部拉取完成。 userInfoListRes.data?.userFullInfoList?.forEach((element) { element?.userID; // 用户 ID element?.nickName; // 用户昵称 element?.faceUrl; // 用户头像 url element?.selfSignature; // 用户签名 element?.gender; // 用户性别 element?.allowType; // 用户的好友验证方式 element?.customInfo; // 用户自定义信息 element?.role; // 用户角色 element?.level; // 用户等级 element?.birthday; // 用户生日 });}

注意:说明:

七、获取用户的关注/粉丝/互关用户数量

你可以调用 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; // 用户 ID element?.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; // 用户 ID element?.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);

赞 (0)
上一篇 4天前
下一篇 4天前