API 参考

大约 3 分钟

API 参考

主要方法

CallKitManager 中的主要方法如下表所示:

方法说明参数
setup(_ config)初始化 CallKit- config: 配置对象
call(userId, type, extensionInfo)发起一对一通话- type: 通话类型
- userId: 对方用户 ID
- (可选)extensionInfo: 扩展信息
groupCall(groupId, extensionInfo)发起群组通话- groupId: 群组 ID
- (可选)extensionInfo: 扩展信息
hangup()结束通话用户调用即可内部会自行根据状态判断
CallKitManager.shared.usersCache缓存属性可读可写
cleanUserDefaults()清理持久化资源,例如 Token 和 RTC UID 等
tearDown()销毁 CallKit 释放所有资源
CallKitManager.shared.currentUserInfo当前用户信息、可读写
CallKitManager.shared.callInfo当前通话信息、可读写
CallKitManager.shared.profileProvider = self信息提供代理
CallKitManager.shared.addListener(self)监听器listener: CallServiceListener 实现了 CallServiceListener 的对象

通话类型

通话类型 CallType 如下表所示:

类型说明
singleAudio一对一语音通话
singleVideo一对一视频通话
group群组通话

通话结束原因

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

原因说明
CallEndReasonHangup正常挂断
CallEndReasonCancel本地用户取消通话
CallEndReasonRemoteCancel对方取消通话
CallEndReasonRefuse本地用户拒绝接听
CallEndReasonRemoteRefuse对方拒绝接听
CallEndReasonBusy忙线中
CallEndReasonNoResponse本地用户无响应
CallEndReasonRemoteNoResponse对方无响应
CallEndReasonHandleOnOtherDevice在其他设备接听
CallEndReasonRemoteDrop通话中断

监听方法

环信 CallKit 提供 CallKitListener 监听通话过程。你可以设置监听器用于处理通话相关的回调。

所有回调方法都不在主线程执行,需要使用 runOnUiThread 来更新 UI。

方法描述参数
@objc optional func didUpdateCallEndReason(reason: CallEndReason,info: CallInfo)通话结束回调- reason: 结束原因
- callInfo: 通话信息
@objc optional func didOccurError(error: CallError)通话错误回调- error: 错误对象
@objc optional func onReceivedCall(callType: CallType, userId: String, extensionInfo: [String:Any]?)收到通话邀请- userId: 邀请方的用户 ID
- callType: 通话类型
- extensionInfo: 扩展信息
@objc optional func remoteUserDidJoined(userId: String, channelName: String, type: CallType)远端用户加入- userId: 用户 ID
- callType: 通话类型
- channelName: 频道名称
@objc optional func remoteUserDidLeft(userId: String, channelName: String, type: CallType)远端用户离开- userId: 用户ID
- callType: 通话类型
- channelName: 频道名称
@objc optional func onRtcEngineCreated(engine: AgoraRtcEngineKit)RTC 引擎创建engine: RTC 引擎实例

错误类型

通话错误类型

CallErrorModule 类中提供三类通话错误类型:

通话错误类型描述
business业务逻辑异常。
rtc音视频异常,详见 声网 RTC 错误码open in new window
im即时通讯 IM 异常,详见 环信即时通讯 IM 错误码
unknown未知错误。

业务错误类型

CallBusinessErrorCode 类中提供四类业务错误类型:

业务错误类型描述
state 通话状态错误:
- "A call is already in progress":当前已有通话在进行中。
- "MultiCallParticipantsController is already presented":多人通话邀请界面已展示,表示重复调用群组通话 API。
- "Call already in progress with different group ID":当前已有通话在进行中且群组 ID 不同,表示点击多人通话页面右上角时,呼叫的群组 ID 有误或者中途被其它地方改变。
param 参数错误:主要为呼叫 API 调用参数错误为空等。
signaling信令错误:大多为信令回复的方法中某些参数错误,例如,对方发的信令里缺少某种参数。
unknown未知错误。

获取日志

  • 日志中携带 EaseCallKit Log: 的所有内容均为 CallKit 日志。你可以通过查看日志进行代码问题排查。关于如何获取日志,详见 环信即时通讯 IM 文档
  • 线上获取 SDK 日志,需要设备在登录状态下联系环信技术支持。技术支持获取到线上设备的日志,排查线上用户的问题。