事件回调

最近更新时间:2025-08-18 12:06:22

我的收藏

事件回调概览

TcrEvent 事件

下列事件通过 TcrSessionObserver 回调:
事件名称
描述
表示会话已初始化。关联数据为 NSString (client Session)。
表示会话已连接。无关联数据。
表示会话正在重连。无关联数据。
表示会话已关闭,无法再使用。关联数据为 NSInteger 类型。
表示性能数据已更新。关联数据为 NSDictionary 类型。
表示服务器的麦克风状态已改变。关联数据为 NSDictionary 类型,表示是否需要开启麦克风。
表示服务器的摄像头状态已改变。关联数据为 NSDictionary 类型,包含分辨率宽度、高度和摄像头状态。
IME_TYPE
表示连接到云设备时分配的输入法类型。关联数据为 NSDictionary 类型,包含服务器端的 IME 状态。
表示服务器的输入状态已改变。关联数据为 NSDictionary 类型,包含状态信息。
表示云手机屏幕配置已改变。关联数据为 NSDictionary 类型,包含屏幕方向、角度等信息。
表示云手机视频流配置已更新。关联数据为 NSDictionary 类型,包含屏幕宽度、高度等信息。
表示用户处于空闲状态。无关联数据。
表示帧率连续10秒保持低水平。无关联数据。
表示远程输入框状态已改变。关联数据为 NSDictionary 类型,包含输入框类型、文本内容等信息。
云端应用向客户端发送的透传消息事件。关联数据为 NSDictionary 类型,包含包名和消息内容。
云端应用向客户端发送的负载信息。关联数据为 NSDictionary 类型,包含 CPU、内存和 GPU 使用率。
云端剪贴板内容同步事件。关联数据为 NSDictionary 类型,包含剪贴板文本内容。
云端通知消息下发事件。关联数据为 NSDictionary 类型,包含应用包名、通知标题和正文。
定期回调云端实例的画面截图。关联数据为 NSDictionary 类型,包含实例 ID 和截图 URL。
每1秒云端应用通过 WebRTC 向客户端发送的系统状态。关联数据为 NSDictionary 类型,包含导航栏可见性和媒体音量。

事件详细说明

初始化成功事件

当 SDK 初始化成功时触发 STATE_INITED 事件。

返回值

NSString*:客户端会话标识符。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == STATE_INITED) {
NSString *clientSession = (NSString *)eventData;
// 处理初始化成功事件,使用clientSession初始化TcrSession
}
}

会话连接事件

当会话成功连接时触发 STATE_CONNECTED 事件。

返回值

无。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == STATE_CONNECTED) {
// 处理会话连接事件,例如更新UI状态
}
}

会话重连中事件

当会话正在重连时触发 STATE_RECONNECTING 事件,可用于提示用户。

返回值

无。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == STATE_RECONNECTING) {
// 处理重连中事件,例如显示加载提示
}
}

会话关闭事件

当会话关闭且无法再使用时触发 STATE_CLOSED 事件。

返回值

NSInteger:关闭代码。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == STATE_CLOSED) {
NSInteger closeCode = [(NSNumber *)eventData integerValue];
// 处理会话关闭事件,例如记录错误码
}
}

性能数据更新事件

当客户端性能数据更新时触发 CLIENT_STATS 事件。

返回值

NSDictionary:性能数据字典。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == CLIENT_STATS) {
NSDictionary *stats = eventData;
// 处理性能数据事件,例如分析性能指标
}
}

服务器麦克风状态改变事件

当服务器麦克风状态(如打开或关闭)改变时触发 MIC_STATUS_CHANGED 事件。

返回值

NSDictionary
值类型
描述
status
NSString
麦克风状态:open(打开)、close(关闭)。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == MIC_STATUS_CHANGED) {
NSDictionary *micStatus = eventData;
// 处理麦克风状态事件,例如打开/关闭音频上行
}
}

服务器摄像头状态改变事件

当服务器摄像头状态(如打开或关闭)改变时触发 CAMERA_STATUS_CHANGED 事件。

返回值

NSDictionary
值类型
描述
width
NSNumber
摄像头分辨率宽度。
height
NSNumber
摄像头分辨率高度。
status
NSString
摄像头状态:open_back(打开后置摄像头)、open_front(打开前置摄像头)、close(关闭)。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == CAMERA_STATUS_CHANGED) {
NSDictionary *cameraStatus = eventData;
// 处理摄像头状态事件,例如打开/关闭视频上行
}
}

输入法类型事件

当连接到云设备时,输入法类型(云端或客户端本地)确定时触发 IME_TYPE 事件。

返回值

NSDictionary
值类型
描述
ime_type
NSString
输入法类型:cloud(使用云端输入法)、local(使用客户端本地输入法)。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == IME_TYPE) {
NSDictionary *imeInfo = eventData;
// 处理输入法类型事件,例如切换输入法UI
}
}

输入状态改变事件

当服务器输入状态改变时触发 INPUT_STATUS_CHANGED 事件。

返回值

NSDictionary
值类型
描述
status
NSString
输入状态:disabled(输入被禁用)。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == INPUT_STATUS_CHANGED) {
NSDictionary *inputStatus = eventData;
// 处理输入状态事件,例如禁用用户输入控件
}
}

云手机屏幕配置改变事件

当云手机屏幕配置(如方向或尺寸)改变时触发 SCREEN_CONFIG_CHANGE 事件。

返回值

NSDictionary
值类型
描述
orientation
NSString
屏幕方向:landscape(横屏)、portrait(竖屏)。
degree
NSString
旋转角度:0_degree90_degree180_degree270_degree
width
NSNumber
屏幕宽度。
height
NSNumber
屏幕高度。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == SCREEN_CONFIG_CHANGE) {
NSDictionary *screenConfig = eventData;
// 处理屏幕配置事件,例如调整渲染尺寸
}
}

云手机视频流配置改变事件

当云手机视频流配置(如分辨率)更新时触发 VIDEO_STREAM_CONFIG_CHANGED 事件。

返回值

NSDictionary
值类型
描述
width
NSNumber
视频流宽度。
height
NSNumber
视频流高度。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == VIDEO_STREAM_CONFIG_CHANGED) {
NSDictionary *videoConfig = eventData;
// 处理视频流配置事件,例如更新解码器
}
}

客户端空闲事件

当用户长时间未操作鼠标、键盘或屏幕时触发 CLIENT_IDLE 事件。

返回值

无关联数据。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == CLIENT_IDLE) {
// 处理空闲事件,例如显示节能提示
}
}

客户端低帧率事件

当帧率连续10秒保持低位时触发 CLIENT_LOW_FPS 事件。

返回值

无关联数据。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == CLIENT_LOW_FPS) {
// 处理低帧率事件,例如优化渲染性能
}
}

云端输入框状态改变事件

当云端输入框状态(如焦点)改变时触发 INPUT_STATE_CHANGE 事件。

返回值

NSDictionary
值类型
描述
field_type
NSString
输入框类型:normal_input(常规窗口焦点)、autologin_input(已弃用)、unfocused(焦点移出窗口)。
text
NSString
输入框文本内容(仅 Android 应用支持)。
status
NSString
输入状态(仅 Windows 系统):disable(禁用输入)、enable(启用输入)。
input_type
NSNumber
文本内容类型位定义(整数)。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == INPUT_STATE_CHANGE) {
NSDictionary *inputState = eventData;
// 处理输入框状态事件,例如同步文本内容
}
}

云端透传消息事件

当云端应用向客户端发送透传消息时触发 CAI_TRANS_MESSAGE 事件。

返回值

NSDictionary
值类型
描述
package_name
NSString
目标应用的包名(Android 应用标识)。
msg
NSString
透传的原始消息内容(字符串或 JSON 对象)。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == CAI_TRANS_MESSAGE) {
NSDictionary *transMessage = eventData;
// 处理透传消息事件
}
}

云端系统负载信息事件

当云端应用向客户端发送系统负载信息(如 CPU、内存、GPU 使用率)时触发 CAI_SYSTEM_USAGE 事件。

返回值

NSDictionary
值类型
描述
cpu_usage
NSNumber
CPU 使用率(百分比,浮点数)。
mem_usage
NSNumber
内存使用率(百分比,浮点数)。
gpu_usage
NSNumber
GPU 使用率(百分比,浮点数)。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == CAI_SYSTEM_USAGE) {
NSDictionary *systemUsage = eventData;
// 处理系统负载信息事件
}
}

云端剪贴板同步事件

当云端设备的剪贴板内容发生变化时触发 CAI_CLIPBOARD 事件,将最新文本同步至客户端。

返回值

NSDictionary
值类型
描述
text
NSString
剪贴板的最新文本内容。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == CAI_CLIPBOARD) {
NSDictionary *clipboardData = eventData;
NSString *text = clipboardData[@"text"];
// 处理剪贴板同步事件
}
}

云端通知消息事件

当云机上有新通知时,触发 CAI_NOTIFICATION 事件将通知消息下发至客户端。

返回值

NSDictionary
值类型
描述
package_name
NSString
发送通知的应用包名。
title
NSString
通知标题。
text
NSString
通知正文。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == CAI_NOTIFICATION) {
NSDictionary *notification = eventData;
// 处理通知消息事件
}
}

云端画面截图事件

CAI_IMAGE_EVENT 事件定期回调云端实例的画面截图 URL。

返回值

NSDictionary:键为实例 ID(NSString),值为截图 URL(NSString)。
键(实例 ID)
值类型
描述
instanceId1
NSString
实例1的截图 URL。
instanceId2
NSString
实例2的截图 URL。
...
...
...

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == CAI_IMAGE_EVENT) {
NSDictionary *imageEvents = eventData;
// 遍历处理每个实例的截图URL
[imageEvents enumerateKeysAndObjectsUsingBlock:^(NSString *instanceId, NSString *screenshotUrl, BOOL *stop) {
// 处理截图URL
}];
}
}

云端系统状态事件

CAI_SYSTEM_STATUS 事件回调云端应用每1秒通过 WebRTC 向客户端发送的系统状态信息。

返回值

NSDictionary
值类型
描述
nav_visible
NSNumber (BOOL)
导航栏是否可见。
music_volume
NSNumber
系统媒体音量(范围0-100)。

监听示例

- (void)onEvent:(TcrEvent)eventType eventData:(id _Nullable)eventData {
if (eventType == CAI_SYSTEM_STATUS) {
NSDictionary *systemStatus = eventData;
BOOL navVisible = [systemStatus[@"nav_visible"] boolValue];
NSInteger musicVolume = [systemStatus[@"music_volume"] integerValue];
// 处理系统状态事件
}
}