API 概览

大约 5 分钟

API 概览

本文档详细介绍 CallKit 组件的所有属性、方法和回调事件。

组件属性 (Props)

基础配置

属性类型默认值描述
classNamestring-自定义 CSS 类名。
styleReact.CSSProperties-自定义内联样式。
prefixstringcuiCSS 类名前缀。
chatClientChatSDK.Connection-必须,环信 IM SDK 实例。
layoutModeLayoutModeMULTI_PARTY布局模式:PREVIEWONE_TO_ONEMULTI_PARTY
maxVideosnumber16最大显示视频数量。
aspectRationumber1视频窗口宽高比。
gapnumber6视频窗口间隙(像素)。
backgroundImagestring-多人通话背景图片 URL。
userSelectTitlestring-用户选择弹窗标题。

铃声配置

属性类型默认值描述
enableRingtonebooleantrue是否启用铃声。
outgoingRingtoneSrcstring-拨打电话铃声音频文件路径。
incomingRingtoneSrcstring-接听电话铃声音频文件路径。
ringtoneVolumenumber0.8铃声音量,范围 0-1。
ringtoneLoopbooleantrue是否循环播放铃声。

窗口大小和位置

属性类型默认值描述
resizablebooleanfalse是否允许调整大小。
minWidthnumber400最小宽度(像素)。
minHeightnumber300最小高度(像素)。
maxWidthnumber-最大宽度(像素)。
maxHeightnumber-最大高度(像素)。
draggablebooleantrue是否允许拖拽。
dragHandlestring-拖拽手柄 CSS 选择器。
managedPositionbooleantrue是否使用内置位置管理。
initialPosition{left: number, top: number}-初始位置。
initialSize{width: number, height: number}{width: 748, height: 523}初始大小。
minimizedSize{width: number, height: number}{width: 80, height: 64}最小化时的尺寸。

邀请界面配置

属性类型默认值描述
invitationCustomContentReact.ReactNode-自定义邀请内容。
acceptTextstring-接听按钮文本。
rejectTextstring-拒绝按钮文本。
showInvitationAvatarbooleantrue是否显示邀请者头像。
showInvitationTimerbooleantrue是否显示倒计时。
autoRejectTimenumber30自动拒绝时间(秒)。

信息提供者

属性类型默认值描述
userInfoProvider(userIds: string[]) => Promise<UserInfo[]>-用户信息提供者函数。
groupInfoProvider(groupIds: string[]) => Promise<GroupInfo[]>-群组信息提供者函数。

其他配置

属性类型默认值描述
speakingVolumeThresholdnumber60说话指示器音量阈值,范围 1-100。
customIconsCallKitIconMap-自定义图标映射。
encoderConfigVideoEncoderConfigurationPreset-自定义预设的视频编码配置。

组件方法

通过 ref 调用以下方法:

const callKitRef = useRef<CallKitRef>(null);

通话控制方法

方法参数返回值描述
startSingleCall{to: string, callType: 'video'|'audio', msg: string}Promise<ChatSDK.TextMsgBody | null>发起一对一通话。视频通话时摄像头默认开启。
startGroupCall{groupId: string, msg: string, ext?: Record<string, any>}Promise<ChatSDK.TextMsgBody | null>发起群组通话。群组通话时摄像头默认关闭,只创建音频轨道。
answerCallresult: booleanvoid接听/拒绝通话。
exitCallreason?: stringvoid退出通话。
adjustSizenewSize: {width: number, height: number}void动态调整窗口尺寸。

回调事件

通话状态回调

回调事件参数返回值触发时机
onCallStartvideos: VideoWindowProps[]void通话开始时。
onEndCallWithReasonreason: string, callInfo: CallInfovoid通话结束时(包含详细原因)。
onReceivedCallcallType: 'video'|'audio'|'group', userId: string, ext?: anyvoid收到通话邀请时。
onCallErrorerror: CallErrorvoid通话过程中发生错误时。

用户状态回调

回调事件参数返回值触发时机
onRemoteUserJoineduserId: string, callType: 'video'|'audio'|'group'void远程用户加入通话时。
onRemoteUserLeftuserId: string, callType: 'video'|'audio'|'group'void远程用户离开通话时。

邀请处理回调

回调事件参数返回值触发时机
onInvitationAcceptinvitation: InvitationInfovoid用户接受邀请时。
onInvitationRejectinvitation: InvitationInfovoid用户拒绝邀请时。

界面状态回调

回调事件参数返回值触发时机
onLayoutModeChangelayoutMode: 'grid' | 'main'void布局模式变化时。
onMinimizedChangeminimized: booleanvoid最小化状态变化时。
onMinimizedToggle-void最小化切换时。

窗口操作回调

回调事件参数返回值触发时机
onResizewidth: number, height: number, deltaX?: number, deltaY?: number, direction?: stringvoid窗口大小调整时。
onDragStartstartPosition: {x: number, y: number}void开始拖拽时。
onDragnewPosition: {x: number, y: number}, delta: {x: number, y: number}void拖拽过程中。
onDragEndfinalPosition: {x: number, y: number}void拖拽结束时。

技术回调

回调事件参数返回值触发时机
onRtcEngineCreatedrtc: anyvoidRTC 引擎创建完成时。

类型定义

UserInfo

interface UserInfo {
  userId: string;
  nickname?: string;
  avatarUrl?: string;
}

GroupInfo

interface GroupInfo {
  groupId: string;
  groupName?: string;
  groupAvatar?: string;
}

通话错误

通话错误(CallError)类型 errorType 分为声网 RTC 错误、IM 错误以及 CallKit 本身的错误。

通话错误类型描述
rtc音视频异常,详见 声网 RTC 错误码open in new window
chat即时通讯 IM 异常,详见 环信即时通讯 IM 错误码
callkitCallErrorCode 类中包含三种错误类型:
- CALL_STATE_ERROR:通话状态错误
- CALL_PARAM_ERROR:通话参数错误
- CALL_SIGNALING_ERROR:信令错误

通话结束原因

通话结束原因 HANGUP_REASON 如下表所示:

枚举值英文名称描述触发场景
hangupHANGUP挂断通话。用户主动挂断正在进行的通话。
cancelCANCEL取消呼叫。发起者在对方接听前取消通话。
remoteCancelREMOTE_CANCEL对方取消呼叫。对方发起者在接听前取消了通话。
refuseREFUSE自己拒绝呼叫。被叫方主动拒绝接听通话。
remoteRefuseREMOTE_REFUSE对方拒绝呼叫。对方被叫方拒绝接听通话。
busyBUSY忙碌。被叫方当前正在通话中,无法接听新通话。
noResponseNO_RESPONSE无响应。自己超时未处理通话邀请。
remoteNoResponseREMOTE_NO_RESPONSE对方无响应。对方超时未接听通话。
handleOnOtherDeviceHANDLE_ON_OTHER_DEVICE已在其他设备处理。通话已在其他设备上被接听或处理。
abnormalEndABNORMAL_END异常结束。由于网络异常、设备问题等导致通话异常结束。