tencent cloud

文档反馈

关注主播(TUILiveKit)

最后更新时间:2024-12-20 10:56:18

    功能介绍

    在直播场景下,关注主播功能是一种重要的互动方式,它允许观众选择关注特定的主播,从而在直播平台上建立长期的互动和关注关系。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))")
    }
    }
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持