@tcic/core-sdk-v1 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,325 @@
1
+ import { TCIC } from '../tcic';
2
+ import { TDeviceStatus } from './deviceStatus';
3
+ import { Av, ITRTC, RemoteVideoConfig, StopRemoteConfig } from './trtc';
4
+ /**
5
+ * 设备类型
6
+ * @enum {number}
7
+ * @readonly
8
+ * @property {number} Unknown 值为(-1),Device_Change 事件回调专用
9
+ * @property {0} Mic 麦克风,Device_Change 事件回调专用
10
+ * @property {1} Speaker 扬声器,Device_Change 事件回调专用
11
+ * @property {2} Camera 摄像头,Device_Change 事件回调专用
12
+ */
13
+ export declare enum TTrtcDeviceType {
14
+ Unknown = -1,
15
+ Mic = 0,
16
+ Speaker = 1,
17
+ Camera = 2
18
+ }
19
+ /**
20
+ * 设备信息
21
+ */
22
+ export interface TTrtcDeviceInfo {
23
+ /**
24
+ * 设备类型
25
+ */
26
+ type: TTrtcDeviceType;
27
+ /**
28
+ * 设备 ID
29
+ */
30
+ deviceId: string;
31
+ /**
32
+ * 设备名字
33
+ */
34
+ deviceName: string;
35
+ }
36
+ export interface TStreamStatus {
37
+ join?: boolean;
38
+ audio?: boolean;
39
+ video?: boolean;
40
+ screen?: boolean;
41
+ screenAudio?: boolean;
42
+ screenPaused?: boolean;
43
+ mirror?: boolean;
44
+ }
45
+ /**
46
+ * TRTC模式
47
+ */
48
+ export declare enum TTrtcMode {
49
+ /**
50
+ * 实时音视频模式
51
+ */
52
+ RTC = "rtc",
53
+ /**
54
+ * 直播模式
55
+ */
56
+ Live = "live"
57
+ }
58
+ export declare class TCIC_TRTCMobile implements ITRTC {
59
+ tcic: TCIC;
60
+ ready: Promise<boolean>;
61
+ private _info;
62
+ private _warn;
63
+ private _error;
64
+ private _innerStartLocalPreview;
65
+ protected _devices: TTrtcDeviceInfo[];
66
+ protected _micVolume: number;
67
+ protected _cameraTestStarted: boolean;
68
+ protected _micTestStarted: boolean;
69
+ protected _cameraStarted: boolean;
70
+ protected _micStarted: boolean;
71
+ private mSdkAppId;
72
+ private mRoomId;
73
+ private mUserId;
74
+ private mUserSig;
75
+ private mAppMode;
76
+ private mIsFrontCamera;
77
+ private mNeedSwitchCameraAfterJoin;
78
+ private mTrtcTimer;
79
+ private mEncodeParams;
80
+ private mRtcInfo;
81
+ private _volumeInfo;
82
+ private mRenderMap;
83
+ private mOpenCamera;
84
+ private mHasEnableMic;
85
+ private mIsSwitchRole;
86
+ private mHeartbeatTimer;
87
+ private mRenderTask;
88
+ private mCurRenderTask;
89
+ private mLastWarnCode;
90
+ private mLastWarnTimeStamp;
91
+ protected _publishStatus: TStreamStatus;
92
+ constructor(tcic: TCIC);
93
+ init(): Promise<boolean>;
94
+ /**
95
+ * 获取摄像头设备列表
96
+ */
97
+ getCameras(): Promise<TTrtcDeviceInfo[]>;
98
+ /**
99
+ * 切换使用的摄像头设备
100
+ * @param option.cameraId 要切换的设备ID
101
+ */
102
+ switchCamera(option: {
103
+ cameraId: string;
104
+ useFrontCamera?: boolean;
105
+ mirror?: string | boolean | undefined;
106
+ }): Promise<void>;
107
+ /**
108
+ * 获取正在使用的摄像头设备ID
109
+ */
110
+ getCameraDeviceId(): Promise<string>;
111
+ /**
112
+ * 获取麦克风设备列表
113
+ */
114
+ getMics(): Promise<TTrtcDeviceInfo[]>;
115
+ /**
116
+ * 切换使用的麦克风设备
117
+ * @param deviceId 要切换的设备ID
118
+ */
119
+ switchMic(_opts: {
120
+ micId: string;
121
+ }): Promise<void>;
122
+ /**
123
+ * 获取正在使用的麦克风设备ID
124
+ */
125
+ getMicDeviceId(): Promise<string>;
126
+ /**
127
+ * 设置正在使用的麦克风设备音量
128
+ * @param volume 要设置的音量大小
129
+ */
130
+ setMicVolume(volume: number): Promise<void>;
131
+ /**
132
+ * 获取正在使用的麦克风设备音量
133
+ */
134
+ getMicVolume(): Promise<number>;
135
+ /**
136
+ * 获取正在使用的麦克风设备音量
137
+ */
138
+ getRealMicVolume(): Promise<number>;
139
+ /**
140
+ * 获取扬声器设备列表
141
+ */
142
+ getSpeakers(): Promise<TTrtcDeviceInfo[]>;
143
+ /**
144
+ * 切换使用的扬声器设备
145
+ * @param _deviceId 要切换的设备ID
146
+ */
147
+ switchSpeaker(_deviceId: string): Promise<void>;
148
+ /**
149
+ * 获取正在使用的扬声器设备ID
150
+ */
151
+ getSpeakerDeviceId(): Promise<string>;
152
+ /**
153
+ * 设置正在使用的扬声器设备音量
154
+ * @param volume 要设置的音量大小
155
+ */
156
+ setSpeakerVolume(volume: number): Promise<unknown>;
157
+ /**
158
+ * 获取正在使用的扬声器设备音量
159
+ */
160
+ getSpeakerVolume(): Promise<number>;
161
+ private createNativeStyle;
162
+ private onAddRender;
163
+ private onRemoveRender;
164
+ enterRoom(isAnchor?: boolean): Promise<void>;
165
+ private innerGetViewType;
166
+ stopRemote(opts: StopRemoteConfig): Promise<void>;
167
+ /**
168
+ * 查看远端画面,声音
169
+ * @param opts - 传入希望查看的用户ID
170
+ */
171
+ startRemote(opts: RemoteVideoConfig & {
172
+ isFitMode?: boolean;
173
+ }): Promise<boolean>;
174
+ /**
175
+ * 开始播放本地音视频,默认不自动发布
176
+ */
177
+ localPreview(opts: {
178
+ view: string | HTMLDivElement;
179
+ publish?: boolean;
180
+ frameRate?: number;
181
+ }): Promise<void>;
182
+ /**
183
+ * 停止本地预览
184
+ */
185
+ stopLocalPreview(opts?: {
186
+ audio?: boolean;
187
+ video?: boolean;
188
+ }): Promise<void>;
189
+ startLocalVideo(dom: HTMLElement): void;
190
+ /**
191
+ * 关闭本地视频采集及渲染
192
+ */
193
+ stopLocalVideo(): Promise<void>;
194
+ startLocalAudio(highAudioQuality: boolean): Promise<void>;
195
+ /**
196
+ * 停止本地音频采集
197
+ */
198
+ stopLocalAudio(): Promise<unknown>;
199
+ /**
200
+ * 发布本地流
201
+ */
202
+ /**
203
+ * 取消发布本地流
204
+ */
205
+ unPublish(): Promise<void>;
206
+ /**
207
+ * 控制是否屏蔽自己的视频画面,屏蔽后不推流
208
+ * @param mute 是否屏蔽
209
+ */
210
+ muteLocalVideo(mute: boolean): Promise<unknown>;
211
+ /**
212
+ * 控制是否屏蔽自己的声音
213
+ * @param mute 是否屏蔽
214
+ */
215
+ muteLocalAudio(mute: boolean): Promise<unknown>;
216
+ /**
217
+ * 控制是否屏蔽远端的声音
218
+ * @param userId 要处理的用户ID
219
+ * @param mute 是否屏蔽
220
+ */
221
+ muteRemoteAudio(userId: string, mute: boolean): Promise<unknown>;
222
+ /**
223
+ * 开启音量大小回调,回调直接通过事件抛出
224
+ * @param interval 回调间隔(最小100ms,0为关闭)
225
+ */
226
+ enableVolumeEvaluation(interval: number): Promise<unknown>;
227
+ /**
228
+ * 恢复发布内容
229
+ */
230
+ resumePublish(opts: {
231
+ target: Av[];
232
+ }): Promise<void>;
233
+ /**
234
+ * 关闭音视频
235
+ */
236
+ mute(opts: {
237
+ target: Av[];
238
+ }): Promise<void>;
239
+ /**
240
+ * 开启音视频
241
+ */
242
+ unmute(opts: {
243
+ target: Av[];
244
+ }): Promise<void>;
245
+ leaveRoom(): Promise<void>;
246
+ destroy(): Promise<void>;
247
+ private onEnterRoom;
248
+ private onExitRoom;
249
+ private onUserAudioAvailable;
250
+ private onUserVideoAvailable;
251
+ private onUserSubStreamAvailable;
252
+ private onScreenCaptureStarted;
253
+ private onScreenCaptureStopped;
254
+ private onScreenCapturePaused;
255
+ private onScreenCaptureResumed;
256
+ private onScreenKitEvent;
257
+ /**
258
+ *
259
+ * @param _ret {
260
+ "head": {
261
+ "action": "onUserVoiceVolume",
262
+ "module": "trtccb",
263
+ "seqid": 55885307087936
264
+ },
265
+ "retval": {
266
+ "totalVolume": 6,
267
+ "userVolumes": [
268
+ {
269
+ "userId": "2ZhL49DDsM1DuZxNNaBQ3GPTyGt",
270
+ "volume": 1
271
+ },
272
+ {
273
+ "userId": "2XZAx7Rsencu9G7ggV8RVgkr5my",
274
+ "volume": 5
275
+ },
276
+ {
277
+ "userId": "tic_push_user_323777580_163004",
278
+ "volume": 0
279
+ },
280
+ {
281
+ "userId": "2a4Ym5YHbBaqbDLQJSVa0l4ZRZD",
282
+ "volume": 0
283
+ }
284
+ ]
285
+ }
286
+ }
287
+ */
288
+ private onUserVoiceVolume;
289
+ private onMicDidReady;
290
+ private onCameraDidReady;
291
+ private onNetworkQuality;
292
+ private onStatistics;
293
+ private onError;
294
+ private onWarning;
295
+ private onBackPressed;
296
+ private onConnectionLost;
297
+ private onConnectionRecovery;
298
+ private innerStartTrtcTimer;
299
+ private innerNativeCall;
300
+ private innerCreateAndroidDom;
301
+ private innerCreateIOSDom;
302
+ private innerRemoveNativeDom;
303
+ private innerStartLocalPreview;
304
+ private innerRenderUserView;
305
+ private innerGetStreamId;
306
+ private innerUpdateCameraStatus;
307
+ private innerUpdateMicStatus;
308
+ private innerStopLocalRender;
309
+ private innerStartLocalRender;
310
+ private innerStopRemoteRender;
311
+ private innerStartRemoteRender;
312
+ private innerAddRenderTask;
313
+ private innerRemoveRenderTask;
314
+ private innerProcessRenderTask;
315
+ private innerMoveOnTask;
316
+ }
317
+ /**
318
+ * 参考 https://cloud.tencent.com/document/product/647/38552
319
+ * @param errCode 错误码
320
+ * @returns 错误信息
321
+ */
322
+ export declare function getNativeErrorInfo(errCode: number): {
323
+ deviceStatus: TDeviceStatus.Fail | TDeviceStatus.Not_Found | TDeviceStatus.No_Permission | TDeviceStatus.Busy | TDeviceStatus.Error_1204;
324
+ errMsg: string;
325
+ };
@@ -0,0 +1,84 @@
1
+ export declare class TWebView {
2
+ private static _instance;
3
+ private _seqId;
4
+ private _clientInfo;
5
+ private whenReady;
6
+ private reportInstance;
7
+ constructor();
8
+ static get instance(): TWebView;
9
+ /**
10
+ * init
11
+ */
12
+ init(): Promise<boolean>;
13
+ generateStaticCb(prefix: string, callback: (params: any) => void, report?: boolean): string;
14
+ /**
15
+ * 调用Native接口
16
+ * @param module 模块名称
17
+ * @param action 接口名称
18
+ * @param params 参数
19
+ * @param callback 回调
20
+ * @param noreport 来上报日志
21
+ */
22
+ call(module: string, action: string, params?: any, callback?: (params: any, resolve: any, reject: any) => void, timeout?: number): Promise<unknown>;
23
+ /**
24
+ * 退出(移动端专用)
25
+ */
26
+ closeWebView(): void;
27
+ /**
28
+ * 显示弹窗
29
+ * @param url 网页地址
30
+ * @param rect 位置信息
31
+ * @param callback 回调
32
+ */
33
+ showSubWindow(url: string, rect: DOMRect, callback: (code: number, data: any) => void): void;
34
+ /**
35
+ * 关闭弹窗自己(由弹窗调用)
36
+ */
37
+ closeWebViewSelf(): void;
38
+ /**
39
+ * 发消息到webview
40
+ * @param event 事件名称
41
+ * @param message 消息内容
42
+ * @param webid webview标识
43
+ * @param fromWebId 源webviewId
44
+ */
45
+ sendMsgToWebView(event: string, message: any, webid: string, fromWebId: string): void;
46
+ /**
47
+ * 注册webview消息回调
48
+ * @param callback 回调方法
49
+ * 此方法robinwwang说已废弃, 用 registerNativeRecv 代替.
50
+ */
51
+ /**
52
+ * 发消息到native
53
+ * @param event 事件名称
54
+ * @param message 消息内容
55
+ */
56
+ sendCustomMessage(message: any): void;
57
+ /**
58
+ * 注册native消息回调
59
+ * @param callback 回调方法
60
+ */
61
+ registerNativeRecv(callback: (event: any) => void): void;
62
+ /**
63
+ * 注册软键盘监听事件
64
+ * @param callback 回调方法
65
+ */
66
+ registerKeyBoardEvent(callback: (event: any) => void): void;
67
+ setClientInfo(info: any): void;
68
+ getClientInfo(): any;
69
+ inTVList(): boolean;
70
+ private _generateSeqId;
71
+ private _generateFuncCallback;
72
+ /**
73
+ * isIOS
74
+ */
75
+ isIOS(): boolean;
76
+ isIOS8910(): boolean;
77
+ /**
78
+ * isAndroid
79
+ */
80
+ isAndroid(): boolean;
81
+ private _sendIOSChan;
82
+ private _sendAndroidChan;
83
+ private _sendChannel;
84
+ }
package/dist/tcic.d.ts ADDED
@@ -0,0 +1,319 @@
1
+ import { TCIC_Bussiness } from './business.d';
2
+ export interface CustomContent {
3
+ scene: string;
4
+ logo_url: string;
5
+ home_url: string;
6
+ js_url: string;
7
+ css_url: string;
8
+ }
9
+ export interface Member {
10
+ user_id: string;
11
+ user_name: string;
12
+ nickname: string;
13
+ camera: number;
14
+ mic: number;
15
+ silence: number;
16
+ hand_up: number;
17
+ board: number;
18
+ current_state: number;
19
+ platform: number;
20
+ mic_state: number;
21
+ camera_state: number;
22
+ classroom_code: string;
23
+ screen: number;
24
+ screen_state: number;
25
+ stage: number;
26
+ hand_up_times: number;
27
+ mute: number;
28
+ visible_state: number;
29
+ last_enter_time: number;
30
+ device: number;
31
+ join_classroom_time: number;
32
+ hand_up_timestamp: number;
33
+ hand_down_timestamp: number;
34
+ join_type: number;
35
+ avatar: string;
36
+ first_join_timestamp: number;
37
+ last_quit_timestamp: number;
38
+ trophy: number;
39
+ present_time: number;
40
+ answer_questions: number;
41
+ location: string;
42
+ ip_address: string;
43
+ coordinates: string;
44
+ mic_times: number;
45
+ im_count: number;
46
+ role: number;
47
+ }
48
+ export interface Stream {
49
+ user_id: string;
50
+ type: string;
51
+ url: string;
52
+ }
53
+ export interface RoomInfo {
54
+ name: string;
55
+ start_time: number;
56
+ end_time: number;
57
+ teacher_id: string;
58
+ school_id: number;
59
+ real_start_time: number;
60
+ real_end_time: number;
61
+ replay_url: string;
62
+ chat_group: string;
63
+ cmd_group: string;
64
+ status: number;
65
+ classroom_code: string;
66
+ resolution: number;
67
+ audience_type: number;
68
+ silence_all: number;
69
+ max_rtc_member: number;
70
+ forbid_visitor: number;
71
+ auto_open_mic: number;
72
+ live_url: string;
73
+ offstage_mic_control: number;
74
+ mute_all: number;
75
+ last_task_seq: number;
76
+ tasks: unknown[];
77
+ forbid_fill_in_mic: number;
78
+ updated_at: number;
79
+ disable_record: number;
80
+ audio_quality: number;
81
+ message_record_url: string;
82
+ mute_video_all: number;
83
+ layout: string;
84
+ rtc_audience_number: number;
85
+ max_member: number;
86
+ assistants: string[];
87
+ enable_direct_control: number;
88
+ interaction_mode: number;
89
+ video_orientation: number;
90
+ is_grading_required_post_class: number;
91
+ room_type: number;
92
+ video_duration: number;
93
+ end_delay_time: number;
94
+ }
95
+ export interface ClassInfo {
96
+ class_id: number;
97
+ class_type: number;
98
+ school_id: number;
99
+ custom_data: string;
100
+ class_sub_type: string;
101
+ rtc_class_info: unknown;
102
+ live_class_info: unknown;
103
+ room_info: RoomInfo;
104
+ }
105
+ export interface CommonResponse {
106
+ error_code: number;
107
+ error_msg: string;
108
+ request_id: string;
109
+ }
110
+ export interface MemberJoinedRes extends CommonResponse {
111
+ interval: number;
112
+ user_sig: string;
113
+ members: Member[];
114
+ timestamp: number;
115
+ streams: Stream[];
116
+ permission_list_seq: number;
117
+ stream_list_seq: number;
118
+ join_type: number;
119
+ sub_user_sig: string;
120
+ like: number;
121
+ online_number: number;
122
+ }
123
+ export interface SchoolInfoRes extends CommonResponse {
124
+ school_id: number;
125
+ name: string;
126
+ origin_id: string;
127
+ sdkappid: number;
128
+ custom_data: string;
129
+ callback_url: string;
130
+ feature_black_list: unknown[];
131
+ custom_content: CustomContent;
132
+ type: number;
133
+ callback_key: string;
134
+ available_terminals: number[];
135
+ }
136
+ export interface ClassInfoRes extends CommonResponse {
137
+ class_info: ClassInfo;
138
+ }
139
+ /**
140
+ * 成员类型
141
+ */
142
+ export declare enum TMemberType {
143
+ /**
144
+ * 全部成员
145
+ */
146
+ All = 0,
147
+ /**
148
+ * 受邀者
149
+ */
150
+ Inviter = 1,
151
+ /**
152
+ * 访客
153
+ */
154
+ Visitor = 2,
155
+ /**
156
+ * 离线成员
157
+ */
158
+ Offline = 3
159
+ }
160
+ /**
161
+ * 角色
162
+ */
163
+ export declare const enum RoleType {
164
+ student = 0,
165
+ teacher = 1,
166
+ assistant = 2,
167
+ parent = 3,
168
+ admin = 4
169
+ }
170
+ /**
171
+ * 房间类型
172
+ */
173
+ export declare const enum RoomType {
174
+ rtc = 0,
175
+ live = 1
176
+ }
177
+ /**
178
+ * 成员相关操作
179
+ */
180
+ /**
181
+ * 成员操作参数
182
+ */
183
+ export interface TMemberActionParam {
184
+ /**
185
+ * 课堂 ID
186
+ */
187
+ classId: string;
188
+ /**
189
+ * 要操作的用户 ID
190
+ */
191
+ userId: string;
192
+ /**
193
+ * 操作类型
194
+ */
195
+ actionType: TCIC_Bussiness.TMemberActionType;
196
+ }
197
+ export type MemberInfo = TCIC_Bussiness.Item<unknown>;
198
+ /**
199
+ * TCIC 实例类型,包含基础业务调用
200
+ * @alpha
201
+ */
202
+ export declare class TCIC {
203
+ token: string;
204
+ userId: string;
205
+ classId: number;
206
+ /**
207
+ * 当前台上用户信息
208
+ */
209
+ memberInfo: MemberJoinedRes;
210
+ /**
211
+ * 当前课堂信息
212
+ */
213
+ classInfo?: ClassInfoRes;
214
+ /**
215
+ * 应用信息,例如用户配置的自定义js/css等等
216
+ */
217
+ schoolInfo?: SchoolInfoRes;
218
+ _myInfo?: MemberInfo;
219
+ _hostInfo?: MemberInfo;
220
+ playerConf: any;
221
+ constructor(opts: {
222
+ token: string;
223
+ userId: string;
224
+ classId: number;
225
+ playerConf?: any;
226
+ });
227
+ trtc: any;
228
+ setTRTC(trtc: any): void;
229
+ /**
230
+ * 初始化业务必要信息,
231
+ * 例如当前房间状态,
232
+ * 当前应用信息,
233
+ * 台上用户等等
234
+ * @param ready - 初始化完成回调
235
+ */
236
+ init(opts?: {
237
+ ready?: () => void;
238
+ role?: RoleType;
239
+ }): Promise<void>;
240
+ private _heartBeatTimer;
241
+ /**
242
+ * 心跳启动
243
+ */
244
+ private heartBeat;
245
+ private _memberInfos;
246
+ /**
247
+ * 通过ID列表获取用户简要信息
248
+ * 只有nick和头像
249
+ * @param ids - 用户ID列表
250
+ */
251
+ getUserInfoByIds(ids: string[]): Promise<Member[]>;
252
+ /**
253
+ * 停止心跳
254
+ */
255
+ private stopHeartBeat;
256
+ /**
257
+ * 销毁实例,会结尝试结束房间
258
+ */
259
+ destroy(): void;
260
+ /**
261
+ * 获取当前登陆用户信息
262
+ */
263
+ myInfo(): MemberInfo;
264
+ /**
265
+ * 获取当前房主信息
266
+ */
267
+ hostInfo(): MemberInfo;
268
+ /**
269
+ * 业务流程开启,房间活动开始后
270
+ * 才可以进行录制,视频等等一系列活动
271
+ */
272
+ start(): Promise<unknown>;
273
+ /**
274
+ * 业务流程结束,将会通知所有房间内成员下线
275
+ */
276
+ end(): Promise<unknown>;
277
+ leaveRoom(): Promise<unknown>;
278
+ /**
279
+ * 获取成员列表详情
280
+ * @param classId - 课堂ID
281
+ * @param pager - 分页信息
282
+ */
283
+ getMembersDetail(classId: string, pager: Partial<{
284
+ page: number;
285
+ limit: number;
286
+ type: TMemberType;
287
+ keyword: string;
288
+ }>): Promise<TCIC_Bussiness.CGI['/v1/member/memberList']['Res']>;
289
+ /***
290
+ * 对用户操作,详情参见枚举类型
291
+ * TCIC_Bussiness.TMemberActionType
292
+ * @param args - 操作参数,例如踢出等等
293
+ */
294
+ memberAction(args: TMemberActionParam): Promise<unknown>;
295
+ /***
296
+ * 成员状态上报
297
+ * TCIC_Bussiness.TMemberActionType
298
+ * @param state - 操作参数,例如踢出等等
299
+ */
300
+ memberStateReport(state: TCIC_Bussiness.TMemberStateReportParam): Promise<unknown>;
301
+ /**
302
+ * @param path - 请求地址
303
+ * @param param - 请求参数
304
+ */
305
+ fetchData(path: string, param?: any): Promise<unknown>;
306
+ getStreamConfig(userId: string, streamType: string): Stream | undefined;
307
+ private streamConfigs;
308
+ setStreamConfigs(streamConfigs: Stream[], seq: number): void;
309
+ /**
310
+ * 答题接口
311
+ * @param questionId - 问题ID
312
+ * @param answer - 答案
313
+ */
314
+ answerQuestion(questionId: string, answer: string): Promise<unknown>;
315
+ /**
316
+ * 设置上报是否控制台打印
317
+ */
318
+ setReportShowConsole(showConsole: boolean): void;
319
+ }