集成 Apple VoIP
如需实现 Apple VoIP 通话,请参考本文档实现相关集成与配置。
前提条件
已参考 快速开始(包含呼叫邀请) 接入并跑通呼叫流程。
实现流程
1 配置 Apple 开发者中心和 ZEGO 控制台
-
参考 创建 VoIP 服务证书, 创建您的 VoIP 服务证书,并在您的Mac 设备上导出一个.p12 文件。如需了解具体操作,请参考 即时通讯 - Apple 推送集成指南。
-
在 ZEGO 控制台 上添加 VoIP 服务证书.p12文件,配置离线推送证书,详情请参考 控制台 - 离线推送配置。
-
请自定义 resourceID 并联系 ZEGO 技术支持配置 VoIP 推送策略。
2 添加离线通知的依赖项
-
在您的项目的
Podfile
添加ZegoUIKitAppleCallKitPlugin
做为依赖:Untitledpod 'ZegoUIKitPrebuiltCall' pod 'ZegoUIKitSignalingPlugin' pod 'ZegoUIKitAppleCallKitPlugin' # <- 增加这行依赖,用以实现离线通知
1 -
在终端中运行以下命令,使用 Cocoapods 下载所需的所有依赖项和 SDK。
Untitledpod install
1
3 添加 iOS 环境配置
为ZegoUIKitPrebuiltCallInvitationConfig
添加isSandboxEnvironment
参数:
- 如需在本地调试,请将其设置为 true
- 如需将应用程序发布到 TestFlight 或 App Store,请在开始构建之前将
isSandboxEnvironment
设置为 false
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 如需在本地调试,请将`isSandboxEnvironment`设置为 true.
// 如需将应用程序发布到 TestFlight 或 App Store,请在开始构建之前将 `isSandboxEnvironment` 设置为 false.
let config = ZegoUIKitPrebuiltCallInvitationConfig(notifyWhenAppRunningInBackgroundOrQuit: true, isSandboxEnvironment: false)
ZegoUIKitPrebuiltCallInvitationService.shared.initWithAppID(YOUR_APPID, appSign: YOUR_APP_SIGN, userID:YOUR_USER_ID, userName:YOUR_USER_NAME, config: config)
}
}
4 为呼叫邀请按钮配置 resourceID
在您的 ZegoSendCallInvitationButton
代码中,添加设置 resourceID 代码:sendVoiceCallButton.resourceID = "zegouikit_call"
,请在此处填写在 ZEGO 控制台中配置过的 resourceID名称。
// ...
let sendVoiceCallButton: ZegoSendCallInvitationButton = ZegoSendCallInvitationButton(ZegoInvitationType.voiceCall.rawValue)
sendVoiceCallButton.resourceID = "" // 传入您自定义的 resouceID,且已联系 ZEGO 技术支持配置 VoIP 推送策略,用于通话的离线通知
5 添加应用程序权限
打开 my_project/ios/my_project/Info.plist
文件,并添加以下内容:
<key>NSCameraUsageDescription</key>
<string>我们需要使用摄像头</string>
<key>NSMicrophoneUsageDescription</key>
<string>我们需要使用麦克风</string>
6 获取 APNs 设备 Token
-
在
AppDelegate.swift
文件中,实现 Apple 的注册回调以接收deviceToken
:Untitledfunc application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data){ }
1 -
在
didRegisterForRemoteNotificationsWithDeviceToken
回调中,调用setRemoteNotificationsDeviceToken
方法获取deviceToken
:Untitledimport ZegoUIKitPrebuiltCall func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { /// 必需 - 设置设备令牌 ZegoUIKitPrebuiltCallInvitationService.setRemoteNotificationsDeviceToken(deviceToken) }
1
7 添加推送通知配置
-
使用 Xcode 打开项目,并在 “Signing & Capabilities” 页面上点击
+ Capability
。 -
双击
Push Notifications
以添加此功能。
8 添加 Background Modes
-
使用 Xcode 打开项目,并在 “Signing & Capabilities” 页面上再次点击
+ Capability
。 -
在弹出窗口中双击
Background Modes
。这将允许您在 “Signing & Capabilities” 中看到Background Modes
配置。
9 检查并确保以下功能已启用
请检查图中功能是否启用。
10 导入 PushKit 和 CallKit 库
请参考图片,在您的项目中导入 PushKit 和 CallKit 库。
11 使用示例代码进行调试
考虑到配置离线呼叫邀请的复杂步骤,我们建议您在集成过程中下载 示例代码 进行调试。