tencent cloud

实时音视频

动态与公告
产品动态
产品近期公告
关于 TRTC Live 正式上线的公告
关于TRTC Conference 正式版上线的公告
Conference 商业化版本即将推出
关于多人音视频 Conference 开启内测公告
关于音视频通话 Call 正式版上线的公告
关于腾讯云音视频终端 SDK 播放升级及新增授权校验的公告
关于 TRTC 应用订阅套餐服务上线的相关说明
产品简介
产品概述
基本概念
产品功能
产品优势
应用场景
性能数据
购买指南
计费概述
免费时长说明
月订阅
现收现付
TRTC 逾期与暂停政策
常见问题解答
退款说明
新手指引
Demo 体验
视频通话 SDK
组件介绍
开通服务
跑通 Demo
快速接入
离线唤醒
会话聊天
云端录制
AI 降噪
界面定制
Chat 集成通话能力
更多特性
无 UI 集成
服务端 API
客户端 API
解决方案
错误码表
发布日志
常见问题
视频会议 SDK
组件介绍(TUIRoomKit)
开通服务(TUIRoomKit)
跑通 Demo(TUIRoomKit)
快速接入(TUIRoomKit)
屏幕共享(TUIRoomKit)
预定会议(TUIRoomKit)
会中呼叫(TUIRoomKit)
界面定制(TUIRoomKit)
虚拟背景(TUIRoomKit)
会议控制(TUIRoomKit)
云端录制(TUIRoomKit)
AI 降噪(TUIRoomKit)
会中聊天(TUIRoomKit)
机器人推流(TUIRoomKit)
更多特性(TUIRoomKit)
客户端 API(TUIRoomKit)
服务端 API(TUIRoomKit)
常见问题(TUIRoomKit)
错误码 (TUIRoomKit)
SDK更新日志(TUIRoomKit)
直播与语聊 SDK
Live 视频直播计费说明
组件介绍
开通服务(TUILiveKit)
跑通 Demo
无 UI 集成
UI 自定义
直播监播
视频直播
语聊房
高级功能
客户端 API
服务端 API
错误码
发布日志
常见问题
RTC Engine
开通服务
SDK 下载
API-Example
接入指引
API-参考手册
高级功能
AI 集成
概述
MCP 配置
Skills 配置
集成指南
常见问题
RTC RESTFUL API
History
Introduction
API Category
Room Management APIs
Stream mixing and relay APIs
On-cloud recording APIs
Data Monitoring APIs
Pull stream Relay Related interface
Web Record APIs
AI Service APIs
Cloud Slicing APIs
Cloud Moderation APIs
Making API Requests
Call Quality Monitoring APIs
Usage Statistics APIs
Data Types
Appendix
Error Codes
控制台指南
应用管理
套餐包管理
用量统计
监控仪表盘
开发辅助
解决方案
实时合唱
常见问题
迁移指南
计费相关
功能相关
UserSig 相关
应对防火墙限制相关
缩减安装包体积相关
Andriod 与 iOS 相关
Web 端相关
Flutter 相关
Electron 相关
TRTCCalling Web 相关
音视频质量相关
其他问题
旧版文档
RTC RoomEngine SDK(旧)
集成 TUIRoom (Web)
集成 TUIRoom (Android)
集成 TUIRoom (iOS)
集成 TUIRoom (Flutter)
集成 TUIRoom (Electron)
TUIRoom API 查询
实现云端录制与回放(旧)
监控仪表盘计费(旧)
协议与策略
安全合规认证
安全白皮书
信息安全说明
服务等级协议
苹果隐私策略:PrivacyInfo.xcprivacy
TRTC 政策
隐私协议
数据处理和安全协议
词汇表

CoGuestStore

PDF
聚焦模式
字号
最后更新时间: 2026-03-05 16:32:08

简介

连麦功能通过基于麦位的系统实现主播和观众成员之间的实时互动。CoGuestStore 提供了一套全面的 API 来管理整个连麦生命周期。
重要:
请始终使用工厂方法 CoGuestStore.create 并提供有效的直播间 ID 来创建 CoGuestStore 实例。不要尝试直接初始化。
说明:
连麦状态更新通过 coGuestState 发布者传递。订阅它以接收有关已连接用户、邀请和申请的实时更新。
警告:
如果连麦请求在指定的超时时间内未收到响应,将触发带有 NoResponseReason.timeout 的事件。请始终在 UI 中处理超时场景。

功能特性

双向邀请:主播可以邀请观众成员,观众成员也可以申请加入。
状态管理:实时跟踪已连接用户、邀请和申请。
事件驱动架构:为主播和观众角色提供独立的事件流。
超时处理:为邀请和申请提供内置超时机制。

可订阅数据

CoGuestState 的字段描述如下:
属性名
类型
描述
connected
ValueListenable<List<SeatUserInfo>>
已经在麦位上的用户列表。
invitees
ValueListenable<List<LiveUserInfo>>
主播发出邀请的用户列表。
applicants
ValueListenable<List<LiveUserInfo>>
主播收到申请连麦的用户列表。
candidates
ValueListenable<List<LiveUserInfo>>
候选连麦的用户列表。

API 列表

函数名
描述
创建对象实例。
主播端事件回调。
主播端事件回调。
观众端事件回调。
观众端事件回调。
观众申请连麦。
观众取消申请。
主播接受申请。
主播拒绝申请。
主播邀请观众连麦。
主播取消邀请。
观众接受邀请。
观众拒绝邀请。
结束连麦会话。

创建实例

CoGuestStore.create

创建对象实例。

观察状态和事件

addHostListener

添加主播侧事件回调监听器
void addHostListener(HostListener listener);
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
listener
必填
监听器。

removeHostListener

移除主播侧事件回调监听器
void removeHostListener(HostListener listener);
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
listener
必填
监听器。

addGuestListener

添加观众侧事件回调监听器
void addGuestListener(GuestListener listener);
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
listener
必填
监听器。

removeGuestListener

移除观众侧事件回调监听器
void removeGuestListener(GuestListener listener);
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
listener
必填
监听器。

观众操作

applyForSeat

申请上麦
Future<CompletionHandler> applyForSeat({
required int seatIndex,
required int timeout,
String? extraInfo,
});
以观众身份请求加入连麦会话。 调用此方法后,会向直播间内的所有主播发送连麦请求。请求将保持活动状态,直到: • 主播通过 acceptApplication 接受 • 主播通过 rejectApplication 拒绝 • 超时时间到期 • 您通过 cancelApplication 取消
版本信息
从 3.5 版本开始支持。
注意事项
说明:
如果在超时时间内没有主播响应,将触发带有 NoResponseReason.timeout 的 {ref2} 事件。
参数说明
参数名
类型
是否必填
描述
seatIndex
int
必填
麦位索引,-1 表示自动分配麦位。
timeout
int
必填
超时时间(单位:秒)。
extraInfo
String?
必填
额外信息。

cancelApplication

取消上麦申请
Future<CompletionHandler> cancelApplication();
取消之前发送的连麦申请。调用此方法后,所有主播将收到申请取消的通知。
版本信息
从 3.5 版本开始支持。
注意事项
说明:
如果申请已被主播处理,取消操作可能无效。

acceptApplication

接受上麦申请
Future<CompletionHandler> acceptApplication(String userID);
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
userID
String
必填
用户 ID。

rejectApplication

拒绝上麦申请
Future<CompletionHandler> rejectApplication(String userID);
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
userID
String
必填
用户 ID。

主播操作

inviteToSeat

邀请观众上麦
Future<CompletionHandler> inviteToSeat({
required String inviteeID,
required int seatIndex,
required int timeout,
String? extraInfo,
});
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
inviteeID
String
必填
被邀请用户 ID。
seatIndex
int
必填
麦位索引,-1 表示自动分配麦位。
timeout
int
必填
超时时间(单位:秒)。
extraInfo
String?
必填
额外信息。

cancelInvitation

取消上麦邀请
Future<CompletionHandler> cancelInvitation(String inviteeID);
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
inviteeID
String
必填
被邀请用户 ID。

acceptInvitation

接受上麦邀请
Future<CompletionHandler> acceptInvitation(String inviterID);
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
inviterID
String
必填
邀请者用户 ID。

rejectInvitation

拒绝上麦邀请
Future<CompletionHandler> rejectInvitation(String inviterID);
版本信息
从 3.5 版本开始支持。
参数说明
参数名
类型
是否必填
描述
inviterID
String
必填
邀请者用户 ID。

连接控制

disconnect

结束连麦会话。

数据结构

NoResponseReason

主播发出的连麦邀请或者观众发起连麦请求的无响应原因。
枚举值
说明
timeout
0
请求超时。
alreadySeated
1
用户已在麦位上。

HostListener

主播侧收到的回调事件。
方法
方法名
说明
onGuestApplicationReceived
当观众申请连麦时触发此回调。
onGuestApplicationCancelled
当观众取消连麦申请时触发此回调。
onGuestApplicationProcessedByOtherHost
当观众的连麦申请被其他主播处理时触发此回调。
onHostInvitationResponded
当主播发出的连麦邀请收到观众响应时触发此回调。
onHostInvitationNoResponse
当主播发出的连麦邀请无响应时触发此回调。

GuestListener

观众侧收到的回调事件。
方法
方法名
说明
onHostInvitationReceived
当收到主播的连麦邀请时触发此回调。
onHostInvitationCancelled
当主播取消连麦邀请时触发此回调。
onGuestApplicationResponded
当观众的连麦申请收到主播响应时触发此回调。
onGuestApplicationNoResponse
当观众的连麦申请无响应时触发此回调。
onKickedOffSeat
当观众被主播踢下麦位时触发此回调。

CoGuestState

CoGuestStore 对外提供的连麦相关状态数据。
属性
类型
说明
connected
ValueListenable<List<SeatUserInfo>>
已经在麦位上的用户列表。
invitees
ValueListenable<List<LiveUserInfo>>
主播发出邀请的用户列表。
applicants
ValueListenable<List<LiveUserInfo>>
主播收到申请连麦的用户列表。
candidates
ValueListenable<List<LiveUserInfo>>
候选连麦的用户列表。

使用示例

// 创建 store 实例
final store = CoGuestStore.create('live_room_123');

// 定义监听器
late final VoidCallback connectedListener = _onConnectedChanged;
late final VoidCallback applicantsListener = _onApplicantsChanged;

void _onConnectedChanged() {
print('已连接用户: ${store.coGuestState.connected.value.length}');
}

void _onApplicantsChanged() {
print('待处理申请: ${store.coGuestState.applicants.value.length}');
}

// 订阅状态变化
store.coGuestState.connected.addListener(connectedListener);
store.coGuestState.applicants.addListener(applicantsListener);

// 添加主播事件监听器(主播使用)
final hostListener = HostListener(
onGuestApplicationReceived: (guestUser) {
print('收到来自 ${guestUser.userName} 的申请');
// 显示接受/拒绝的 UI
},
onHostInvitationResponded: (isAccept, guestUser) {
print('观众 ${guestUser.userName} ${isAccept ? "接受了" : "拒绝了"}');
},
);
store.addHostListener(hostListener);

// 主播:接受申请
final result = await store.acceptApplication('user_456');
if (result.code == 0) {
print('申请接受成功');
}

// 完成后取消订阅
store.coGuestState.connected.removeListener(connectedListener);
store.coGuestState.applicants.removeListener(applicantsListener);
store.removeHostListener(hostListener);


帮助和支持

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

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

文档反馈