Flutter

最近更新时间:2024-09-06 17:59:21

我的收藏

功能描述

关注功能允许用户选择他们感兴趣的其他用户,以便及时获取这些用户最新的动态、发布或活动信息,系统可以根据用户的关注列表提供个性化的内容推荐。
粉丝功能是指用户被其他人关注的状态,当用户 A 关注用户 B 时,A 就成为了 B 的粉丝。用户可以在自己的个人资料页面上查看粉丝数量、粉丝列表或者粉丝的资料信息等。
通过关注和粉丝功能,社交应用和网站能够创建一个活跃的、相互连接的用户网络,促进信息的传播和社区的构建。
说明:
SDK 7.8 及以上版本支持。
此功能为旗舰版功能,需要您购买 旗舰版套餐包

功能演示



关注用户

您可以调用 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; // 操作结果描述
});
}
说明:
该接口一次最多支持关注 20 个用户(除了自己之外,其他用户都可以关注)。
每个用户的关注用户数量上限为 5000 人,粉丝用户数量无上限。

取消关注用户

您可以调用 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; // 用户生日
});
}
说明:
该接口每次最多返回 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; // 用户 ID
element?.nickName; // 用户昵称
element?.faceUrl; // 用户头像 url
element?.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; // 用户 ID
element?.nickName; // 用户昵称
element?.faceUrl; // 用户头像 url
element?.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; // 用户 ID
element?.followingCount; // 该用户的关注数量
element?.followersCount; // 该用户的粉丝数量
element?.mutualFollowersCount; // 该用户的互关数量
});
}

检查关注关系

您可以调用 checkFollowType 接口用来检查自己与指定用户的关注关系。
在回调信息中,您可以通过 V2TimFollowTypeCheckResultfollowType 字段来获取自己与该用户的关系:
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
当通知中的isAddtrue 时,表示列表新增用户的通知,此时会返回完整的用户资料
当通知中的isAddfalse 时,表示列表删除用户的通知,此时返回的用户资料中仅有用户 ID
粉丝列表变更通知
onMyFollowersListChanged
互关列表变更通知
onMutualFollowersListChanged

说明:
您需要预先调用 addFriendListener 添加关系链事件监听器,之后才能收到上述相关事件的通知。

列表新增用户通知的场景示例

假设有两个没有任何关系用户 AliceBob,这两个用户相互关注过程中,相关列表变更通知和关系变更如下:
事件
Alice
Bob
收到的通知
Bob 的关系
收到的通知
Alice 的关系
Alice 关注 Bob
关注
粉丝
Bob 关注 Alice

列表删除用户通知的场景示例

假设有两个已经互相关注的用户 AliceBob, 这两个用户相互取消关注过程中,相关列表变更通知和关系变更如下:
事件
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);