本文教大家基于环信 CallKit 如何快速实现音视频实时通话能力。
推荐开发环境
前提条件
集成步骤
dependencies {
...
implementation("io.hyphenate:chat-call-kit:4.16.0")
}
步骤二 初始化 CallKit
//初始化环信IM SDK
val options =ChatOptions().apply{
this.appKey = appkey
autoLogin =false
}
ChatClient.getInstance().init(this, options)
//开启debug模式
ChatClient.getInstance().setDebugMode(true)
// 初始化CallKit
val config =CallKitConfig()
CallKitClient.init(this, config)
//CallKit监听器
privateval callKitListener =object: CallKitListener {
// 通话结束
overridefunonEndCallWithReason(reason: CallEndReason, callInfo: CallInfo?){
runOnUiThread {
when(reason){
CallEndReason.CallEndReasonHangup ->{
showToast("通话已挂断")
}
CallEndReason.CallEndReasonCancel ->{
showToast("通话已取消")
}
CallEndReason.CallEndReasonRemoteRefuse ->{
showToast("对方拒绝通话")
}
CallEndReason.CallEndReasonRemoteNoResponse ->{
showToast("对方无响应")
}
// ... 其他结束原因
}
}
}
// 通话错误
overridefunonCallError(
errorType: CallKitClient.CallErrorType,
errorCode: Int,
description: String?
){
runOnUiThread {
showToast("通话错误: $description")
}
步骤四 登录IM
ChatClient.getInstance().loginWithToken(username, token,object: ChatCallback {
overridefunonSuccess(){
runOnUiThread {
showToast("登录成功")
}
}
overridefunonError(code: Int, error: String?){
runOnUiThread {
showToast("登录失败: $error")
}
}
})
步骤五 发起通话
CallKitClient.startSingleCall(
CallType.SINGLE_VOICE_CALL,
环信id,
ext //可传null
)
CallKitClient.startSingleCall(
CallType.SINGLE_VIDEO_CALL,
环信id,
ext // 可传 null
)


