logo
当前页

集成 Apple VoIP


如需实现 Apple VoIP 通话,请参考本文档实现相关集成与配置。

前提条件

已参考 快速开始(包含呼叫邀请) 接入并跑通呼叫流程。

实现流程

1 配置 Apple 开发者中心和 ZEGO 控制台

  1. 参考 创建 VoIP 服务证书, 创建您的 VoIP 服务证书,并在您的Mac 设备上导出一个.p12 文件。如需了解具体操作,请参考 即时通讯 - Apple 推送集成指南

  2. ZEGO 控制台 上添加 VoIP 服务证书.p12文件,配置离线推送证书,详情请参考 控制台 - 离线推送配置

  3. 请自定义 resourceID 并联系 ZEGO 技术支持配置 VoIP 推送策略。

2 添加离线通知的依赖项

  1. 在您的项目的Podfile添加ZegoUIKitAppleCallKitPlugin做为依赖:

    Untitled
    pod 'ZegoUIKitPrebuiltCall'
    pod 'ZegoUIKitSignalingPlugin'
    pod 'ZegoUIKitAppleCallKitPlugin' # <- 增加这行依赖,用以实现离线通知
    
    1
    Copied!
  2. 在终端中运行以下命令,使用 Cocoapods 下载所需的所有依赖项和 SDK。

    Untitled
    pod install
    
    1
    Copied!

3 添加 iOS 环境配置

ZegoUIKitPrebuiltCallInvitationConfig添加isSandboxEnvironment参数:

  • 如需在本地调试,请将其设置为 true
  • 如需将应用程序发布到 TestFlight 或 App Store,请在开始构建之前将 isSandboxEnvironment 设置为 false
Untitled
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)
    }
}
1
Copied!

4 为呼叫邀请按钮配置 resourceID

在您的 ZegoSendCallInvitationButton 代码中,添加设置 resourceID 代码:sendVoiceCallButton.resourceID = "zegouikit_call",请在此处填写在 ZEGO 控制台中配置过的 resourceID名称。

Untitled
// ...
let sendVoiceCallButton: ZegoSendCallInvitationButton = ZegoSendCallInvitationButton(ZegoInvitationType.voiceCall.rawValue)
sendVoiceCallButton.resourceID = "" // 传入您自定义的 resouceID,且已联系 ZEGO 技术支持配置 VoIP 推送策略,用于通话的离线通知
1
Copied!

5 添加应用程序权限

打开 my_project/ios/my_project/Info.plist 文件,并添加以下内容:

Untitled
<key>NSCameraUsageDescription</key>
<string>我们需要使用摄像头</string>
<key>NSMicrophoneUsageDescription</key>
<string>我们需要使用麦克风</string>
1
Copied!

6 获取 APNs 设备 Token

  1. AppDelegate.swift 文件中,实现 Apple 的注册回调以接收 deviceToken

    Untitled
    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data){
    
    }
    
    1
    Copied!
  2. didRegisterForRemoteNotificationsWithDeviceToken 回调中,调用 setRemoteNotificationsDeviceToken 方法获取 deviceToken

    Untitled
    import ZegoUIKitPrebuiltCall
    
    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
      /// 必需 - 设置设备令牌
      ZegoUIKitPrebuiltCallInvitationService.setRemoteNotificationsDeviceToken(deviceToken)
    }
    
    1
    Copied!

7 添加推送通知配置

  1. 使用 Xcode 打开项目,并在 “Signing & Capabilities” 页面上点击 + Capability

  2. 双击Push Notifications以添加此功能。

8 添加 Background Modes

  1. 使用 Xcode 打开项目,并在 “Signing & Capabilities” 页面上再次点击 + Capability

  2. 在弹出窗口中双击 Background Modes。这将允许您在 “Signing & Capabilities” 中看到 Background Modes 配置。

9 检查并确保以下功能已启用

请检查图中功能是否启用。

10 导入 PushKit 和 CallKit 库

请参考图片,在您的项目中导入 PushKit 和 CallKit 库。

11 使用示例代码进行调试

考虑到配置离线呼叫邀请的复杂步骤,我们建议您在集成过程中下载 示例代码 进行调试。

Previous

计算通话时长

Next

实现悬浮窗