tencent cloud

即时通信 IM

动态与公告
产品动态
公告
产品简介
产品概述
基本概念
应用场景
功能介绍
账号系统
用户资料与关系链
消息管理
群组相关
公众号系统
音视频通话 Call
使用限制
购买指南
计费概述
价格说明
购买指引
续费指引
停服说明
退费说明
开发指引
Demo 专区
开通服务
体验 Demo
快速跑通
下载中心
SDK & Demo 源码
更新日志
聊天互动(含 UI)
TUIKit 组件介绍
快速开始
全功能接入
单功能接入
AI 集成
构建基础界面
更多特性
定义外观
国际化界面语言
推送服务(Push)
服务概述
名词解释
开通服务
快速跑通
厂商通道
数据统计
排查工具
客户端 API
服务端 API
推送回调
高级功能
更新日志
错误码
常见问题
智能客服
功能概述
快速入门
集成指引
管理员操作手册
客服操作手册
更多实践
直播间搭建
AI 聊天机器人方案
超大娱乐协作社群
Discord 实现指南
游戏内集成 Chat 指南
类 WhatsApp Channel 搭建方案
发送红包
Chat 应对防火墙限制相关
无 UI 集成
快速开始
集成 SDK
初始化
登录登出
消息相关
会话相关
群组相关
社群话题
用户管理
离线推送
云端搜索
本地搜索
公众号
客户端 API
JavaScript
Android
iOS & macOS
Swift
Flutter
Electron
Unity
React Native
C 接口
C++
服务端 API
生成 UserSig
REST API
第三方回调
控制台指南
新版控制台介绍
创建并升级应用
基本配置
功能配置
账号管理
群组管理
公众号管理
回调配置
用量统计
资源包查看指南
实时监控
开发辅助工具
访问管理
高级功能
常见问题
uni-app 常见问题
购买相关问题
SDK 相关问题
账号鉴权相关问题
用户资料与关系链相关问题
消息相关问题
群组相关问题
直播群相关问题
昵称头像相关问题
协议与认证
服务等级协议
安全合规认证
IM 政策
隐私政策
数据隐私和安全协议
平滑迁移方案
平滑迁移完整版
平滑迁移简化版
错误码
联系我们

Flutter

PDF
聚焦模式
字号
最后更新时间: 2025-11-18 20:54:41

功能描述

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

功能演示



关注用户

您可以调用 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);

联系我们

如果您对本文有任何疑问,请随时加入 Telegram 技术交流群组,在这里您将获得可靠的技术支持。


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈