一、使用场景
在实际业务需求中,你可能需要在特定事件发生时进行与业务相关的处理,例如:
·当上课正式开始时,向业务后台进行一些上报处理。
·当成员加入房间时,向成员展示弹窗。
你可以通过TCIC.SDK.instance.on(eventName, handler)监听成员进入退出等课堂事件,或者通过TCIC.SDK.instance.subscribeState(stateName, handler)监听课堂状态变更。
二、事件列表(TCIC.TMainEvent)
| Event | 事件 |
| After_Enter | 已加入房间。 |
| Modify_Class | 房间信息已更改。 |
| Leave_Class | 离开房间。 |
| Kick_Out_By_Teacher | 被踢出房间。 |
| Kick_Out_By_Another | 多端登录被踢出房间。 |
| Kick_Out_By_Expire | 签名过期被踢出房间。 |
| Member_Join | 成员加入房间。 |
| Member_Exit | 成员退出房间。 |
| Member_Info_Update | 成员信息更新。 |
| Member_Hand_Up | 成员举手。 |
| Member_Hand_Up_Cancel | 成员取消举手。 |
| Question_Valid | 存在可用答题。 |
| Question_Begin | 答题开始。 |
| Question_End | 答题结束。 |
| Question_Abandon | 终止答题。 |
| Question_Close | 关闭答题。 |
| Question_Been_Answered | 有学生作答。 |
| App_Resized | 应用大小变化。 |
| Error | 发生错误(影响主线流程)。 |
| Recv_IM_Msgs | 收到 IM 消息。 |
| Recv_Custom_IM_Msg | 收到自定义 IM 消息。 |
使用示例:
function afterEnter() => { console.debug('You have joined this room');}// 监听TCIC.SDK.instance.on(TCIC.TMainEvent.After_Enter, afterEnter);// 取消监听TCIC.SDK.instance.off(TCIC.TMainEvent.After_Enter, afterEnter);
三、状态列表(TCIC.TMainState)
| Event | 事件 | 说明 |
| Class_Info_Ready | 课堂信息已加载。 | – |
| Joined_Class | 已加入课堂。 | – |
| Sub_Camera | 辅助摄像头状态。 | 0:开始 2:结束 |
| Screen_Share | 屏幕分享状态。 | 0:分享中1:暂停中2:未开始/已结束 |
| Video_Publish | 本地视频推流是否开启。 | – |
| Audio_Capture | 本地音频采集是否开启。 | – |
| Class_Duration | 课堂持续时间。 | 单位秒。< 0:未到上课时间,距离上课开始的时间。= 0:到上课时间未开始上课、课堂已结束、课堂已过期。> 0:上课中,已开始上课的时间。 |
| Member_Count | 课堂当前在线成员数量。 | 仅学生在线数,不包含老师、助教和巡课。 |
| Member_List_Total_Member_Count | 成员总数。 | 包括老师,助教在内,在线和离线的成员总数。 |
| Member_List_Offline_Member_Count | 离线成员总数。 | 包括老师,助教在内,离线的成员总数。 |
| Board_Permission | 白板操作权限。 | – |
| Chat_Permission | 文字聊天权限。 | – |
| Screen_Share_Permission | 屏幕分享权限。 | – |
| Hand_Up | 举手状态。 | – |
| Mute_All | 全员静音状态。 | – |
| Mute_Video_All | 全员视频状态。 | – |
| Silence_All | 全员禁言状态。 | – |
| Message_Unread_Count | 未读消息。 | – |
| HandUp_Count | 举手人数。 | – |
| Class_Status | 课堂状态。 | 0:未开始1:已开始2:已结束3:已过期 |
// promiseState 可以确保当前状态满足条件的时候立即执行一次TCIC.SDK.instance.promiseState(TCIC.TMainState.Joined_Class, true).then( () => { console.debug('You have joined this room');});function listener() { console.debug('You have joined this room');}// 监听TCIC.SDK.instance.subscribeState(TCIC.TMainState.Joined_Class, listener);// 取消监听TCIC.SDK.instance.unsubscribeState(TCIC.TMainState.Joined_Class, listener);