LiveCommunicationKit
大约 2 分钟
iOS 集成文档
LiveCommunicationKit
概述
环信 CallKit 中的 LiveCommunicationManager 是一个用于管理 iOS VoIP 通话的单例管理器类,集成了 Apple 的 PushKit 和 LiveCommunicationKit 框架,提供完整的 VoIP 通话解决方案,包括来电推送、通话管理和音频会话控制。如果用户要使用系统的 LiveCommunicationKit,建议设置环信即时通讯 IM 为自动登录。
VoIP 通话来电通知

VoIP 通话接通

APNs 来电通知

推荐环境
- iOS 17.4 或以上版本
 - Swift 5.0 或以上版本
 - 必需框架:Foundation、PushKit、AVFAudio 和 LiveCommunicationKit
 
前提条件
- 应用已获得 VoIP 推送权限。
 - 应用已启用 VoIP 后台模式。
 
设置推送证书
环信 CallKit 支持 APNs 推送和 VoIP 推送。若开启了 VoIP 功能,则使用 VoIP 推送。
- APNs 推送:VoIP 功能未开启时,使用 APNs 推送。详见 IM 的 APNs 离线推送文档。
 - VoIP 推送:环信 CallKit 集成了 PushKit,你只需要在 IM SDK 初始化时设置 VoIP 推送证书,在 CallKit 初始化时启用 VoIP 功能。关于如何创建 VoIP 推送证书以及上传至 环信控制台,详见 IM 的 APNs 离线推送文档。
 
    private func setupCallKit() {
        let options = EMOptions(appkey: appKey)
        #if DEBUG
        options.apnsCertName = "your_APNS_Developer"
        options.pushKitCertName = "yourVoipDev"
        #else
        options.apnsCertName = "your_APNS_Product"
        options.pushKitCertName = "yourVoipPro"
        #endif
        EMClient.shared().initializeSDK(with: options)
        //初始化环信 CallKit。
        let config = EaseCallUIKit.CallKitConfig()
        config.enableVOIP = true//开启 VoIP 功能后会自动开启 LiveCommunicationKit,需要在 develop.apple.com 申请证书时勾选。
        config.enablePIPOn1V1VideoScene = true//开启画中画,同时需要开启应用后台摄像头采集权限。
        CallKitManager.shared.setup(config)
    }
通话管理
环信 CallKit 通过 ConversationManager 进行通话管理,包括上报来电通知、管理通话生命周期,例如,接听、挂断、静音等,以及通话超时处理。
你可以创建 ConversationManager,进行如下配置:
- 铃声: 
notes_of_the_optimistic。 - 图标: 使用应用图标。
 - 限制: 最大会话组数 为 
1,每组最大会话数 为1。 
通话流程
1. 来电流程
- 接收 VoIP 推送通知。
 - 解析推送载荷提取通话信息。
 - 创建 
ConversationManager(如不存在)。 - 生成或使用现有呼叫 UUID。
 - 上报新的来电会话。
 - 更新 
CallKitManager状态。 
来电流程如下图所示:

推送通知载荷应包含以下字段:
{
  "e": {
    "callId": "通话ID",
    "callerNickname": "来电者昵称"
  },
  "f": "来电者ID",
  "m": "消息ID(可选)",
  "g": "群组ID(可选)"
}
2. 其他流程
接听流程

挂断流程

静音流程

错误处理
| 错误场景 | 描述 | 
|---|---|
| UUID 创建失败 | 自动生成新的呼叫 UUID。 | 
| 通话信息缺失 | 日志记录错误,拒绝接听呼叫。 | 
| 状态不匹配 | 验证通话状态后再执行操作。 | 
| 超时处理 | 无论主叫或被叫超时,通话都自动取消。 | 
