使用场景
在实际业务需求中,您可能需要在特定事件发生时进行与业务相关的处理,例如:
当上课正式开始时,向业务后台进行一些上报处理。
当成员加入房间时,向成员展示弹窗。
您可以通过
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);