tencent cloud

直播 SDK

动态与公告
TUILiveKit 产品动态
云直播推拉流 SDK 产品动态
新手指引
产品简介
产品概述
产品优势
性能数据
基本概念
购买指南
TRTC Live 价格总览
Live 视频直播计费说明
开通服务(TUILiveKit)
Demo 体验
Demo 体验指引
跑通 Demo(TUILiveKit)
接入指南
视频直播
准备工作
主播开播
观众观看
直播列表
语聊房
准备工作
主播开播
观众观看
直播列表
推流助手
推流助手(Electron 桌面应用)
推流助手(Web 桌面浏览器)
直播监播
监播页面(Web 桌面浏览器 React 版)
监播页面(Web 桌面浏览器 Vue 版)
UI 自定义
直播视频组件
视频源编辑组件
观众列表组件
聊天弹幕组件
媒体源配置面板
连麦管理面板
直播送礼组件
无 UI 集成
搭建视频直播
搭建语聊房
功能指南
关注主播(TUILiveKit)
至臻画质(TUILiveKit)
输入媒体流进房(TUILiveKit)
礼物系统(TUILiveKit)
客户端 API
Android
iOS
Web
服务端 API(TUILiveKit)
账号系统
REST API
第三方回调
错误码(TUILiveKit)
常见问题
平台编译
用户鉴权
云直播推拉流 SDK
产品简介
购买指南
Demo 体验
免费测试
SDK 下载
License 管理
高级功能
客户端 API
常见问题
无 UI 集成方案
API 文档
OSS information
OSS Attribution Notice
文档直播 SDK功能指南关注主播(TUILiveKit)

关注主播(TUILiveKit)

PDF
聚焦模式
字号
最后更新时间: 2026-03-10 16:58:28

功能介绍

在直播场景下,关注主播功能是一种重要的互动方式,它允许观众选择关注特定的主播,从而在直播平台上建立长期的互动和关注关系。TUILiveKit 中已经通过即时通信 IM 实现了关注主播的功能。
关注 功能允许用户选择他们感兴趣的其他用户,以便及时获取这些用户最新的动态、发布或活动信息,您可以根据用户的关注列表提供个性化的内容推荐。
粉丝 功能是指用户被其他人关注的状态,当用户 A 关注用户 B 时,A 就成为了 B 的粉丝。
通过关注和粉丝功能,社交应用和网站能够创建一个活跃的、相互连接的用户网络,促进信息的传播和社区的构建。

使用说明

说明:
TUILiveKit 的关注主播功能依赖于即时通信 IM 的关注&粉丝相关的 API,所以需要开通即时通信 IM 相关的套餐包。具体可参见 关注&粉丝 文档。
未关注状态
关注状态
主播信息面板









关注主播:您可以在直播界面的左上角的直播间信息区域点击

按钮关注主播
取消关注:您可以在直播界面的左上角的直播间信息区域点击

按钮可以取消关注主播
查看主播粉丝数:您可以点击直播界面左上角的直播间信息区域弹出直播间详情面板,该面板会展示主播的粉丝数量

功能定制

如果当前的 UI 不满足您的需求,您可以通过修改如下目录中的源代码,来实现您满意的 UI 效果。为了您更方便的定制 UI,这里对关注功能相关的文件做了介绍。
Android
iOS
// 文件位置:Android/tuilivekit/src/Main/java/com/trtc/uikit/livekit/common/uicomponent/

roominfo // 直播间信息UI组件的实现目录
├── RoomInfoDetailView.java // 直播间信息详情面板视图的具体实现
└── RoomInfoView.java // 直播间信息视图的具体实现,点击该视图,会展示详情面板视图
// 文件位置:TUILiveKit/iOS/TUILiveKit/Sources/Component/LiveInfo/

LiveInfo // 直播间信息UI组件的实现目录
├── LiveInfoView.swift // 直播间信息视图的具体实现,点击该视图,会展示详情面板视图
└── View
└── LiveInfoPanelView.swift // 直播间信息详情面板视图的具体实现

关键代码

关注主播

Android
iOS
Java
// 文件位置:Android/tuilivekit/src/Main/java/com/trtc/uikit/livekit/service/impl/LiveServiceImpl.java

List<String> userIDList = new ArrayList<>();
userIDList.add("userId");

V2TIMManager.getFriendshipManager().followUser(userIDList,
new V2TIMValueCallback<List<V2TIMFollowOperationResult>>() {
@Override
public void onSuccess(List<V2TIMFollowOperationResult> results) {
}

@Override
public void onError(int code, String message) {
}
});
Swift
// 文件位置:TUILiveKit/iOS/TUILiveKit/Sources/Component/LiveInfo/RoomInfoService

public func followUser(userId: String) {
let userInfo = TUIUserInfo()
userInfo.userId = userId
V2TIMManager.sharedInstance().followUser([userId]) { [weak self] followResultList in
guard let self = self, let result = followResultList?.first else { return }
if result.resultCode == 0, !self.state.followingList.contains(where: { $0.userId == userId }) {
self.state.followingList.insert(userInfo)
self.getFansNumber()
}
} fail: { code, message in
debugPrint("[RoomInfo] followUser failed, error:\\(code), message:\\(String(describing: message))")
}
}

取消关注主播

Android
iOS
Java
// 文件位置:Android/tuilivekit/src/Main/java/com/trtc/uikit/livekit/service/impl/LiveServiceImpl.java

List<String> userIDList = new ArrayList<>();
userIDList.add("userId");

V2TIMManager.getFriendshipManager().unfollowUser(userIDList,
new V2TIMValueCallback<List<V2TIMFollowOperationResult>>() {
@Override
public void onSuccess(List<V2TIMFollowOperationResult> results) {
}

@Override
public void onError(int code, String message) {
}
});
Swift
// 文件位置:TUILiveKit/iOS/TUILiveKit/Sources/Component/LiveInfo/RoomInfoService

public func unfollowUser(userId: String) {
V2TIMManager.sharedInstance().unfollowUser([userId]) { [weak self] followResultList in
guard let self = self, let result = followResultList?.first else { return }
if result.resultCode == 0 {
self.state.followingList = state.followingList.filter { $0.userId != userId}
}
} fail: { code, message in
debugPrint("[RoomInfo] unfollowUser failed, error:\\(code), message:\\(String(describing: message))")
}
}

查看主播关注状态

Android
IOS
Java
// 文件位置:Android/tuilivekit/src/Main/java/com/trtc/uikit/livekit/service/impl/LiveServiceImpl.java

List<String> userIDList = new ArrayList<>();
userIDList.add("userId");

V2TIMManager.getFriendshipManager().checkFollowType(userIDList,
new V2TIMValueCallback<List<V2TIMFollowTypeCheckResult>>() {
@Override
public void onSuccess(List<V2TIMFollowTypeCheckResult> results) {
}

@Override
public void onError(int code, String message) {
}
});
// 文件位置:TUILiveKit/iOS/TUILiveKit/Sources/Component/LiveInfo/RoomInfoService

public func isFollow(userId: String) {
let userInfo = TUIUserInfo()
userInfo.userId = userId
V2TIMManager.sharedInstance().checkFollowType([state.ownerId]) { [weak self] checkResultList in
guard let self = self, let result = checkResultList?.first else { return }
if result.followType == .FOLLOW_TYPE_IN_BOTH_FOLLOWERS_LIST || result.followType == .FOLLOW_TYPE_IN_MY_FOLLOWING_LIST {
if !self.state.followingList.contains(where: { $0.userId == userId }) {
self.state.followingList.insert(userInfo)
}
} else {
self.state.followingList = state.followingList.filter { $0.userId != userId}
}
} fail: { code, message in
debugPrint("[RoomInfo] isFollow failed, error:\\(code), message:\\(String(describing: message))")
}
}

获取粉丝数量

Android
iOS
Java
// 文件位置:Android/tuilivekit/src/Main/java/com/trtc/uikit/livekit/service/impl/LiveServiceImpl.java

List<String> userIDList = new ArrayList<>();
userIDList.add("userId");

V2TIMManager.getFriendshipManager().getUserFollowInfo(userIDList,
new V2TIMValueCallback<List<V2TIMFollowInfo>>() {
@Override
public void onSuccess(List<V2TIMFollowInfo> results) {
}

@Override
public void onError(int code, String message) {
}
});
// 文件位置:TUILiveKit/iOS/TUILiveKit/Sources/Component/LiveInfo/RoomInfoService

public func getFansNumber() {
V2TIMManager.sharedInstance().getUserFollowInfo([state.ownerId]) { [weak self] followInfoList in
guard let self = self, let followInfo = followInfoList?.first else { return }
self.state.fansNumber = Int(followInfo.followersCount)
} fail: { code, message in
debugPrint("[RoomInfo] getFansNumber failed, error:\\(code), message:\\(String(describing: message))")
}
}


帮助和支持

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

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

文档反馈