事件回调概览
TcrEvent 事件
下列事件通过 TcrSessionObserver 回调:
事件名称 | 描述 |
表示会话已初始化。关联数据为 NSString (client Session)。 | |
表示会话已连接。无关联数据。 | |
表示会话正在重连。无关联数据。 | |
表示会话已关闭,无法再使用。关联数据为 NSInteger 类型。 | |
表示性能数据已更新。关联数据为 NSDictionary 类型。 | |
表示服务器的麦克风状态已改变。关联数据为 NSDictionary 类型,表示是否需要开启麦克风。 | |
表示服务器的摄像头状态已改变。关联数据为 NSDictionary 类型,包含分辨率宽度、高度和摄像头状态。 | |
表示连接到云设备时分配的输入法类型。关联数据为 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_degree 、90_degree 、180_degree 、270_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];// 处理系统状态事件}}