如何使用 CallKit 和 EnableX API 创建 iOS 应用内通话
Skype、WhatsApp 和 Messenger 等 VOIP 应用为应用间通话的普及铺平了道路,而WebRTC无疑更进一步,将这些功能直接实现到您的浏览器或移动应用中。然而,如果没有丰富的用户界面和适当的通知机制,即使是非常有前途的技术也可能变得毫无用处。虽然VOIP或 WebRTC 可以处理实时通信会话的复杂问题,但用户只关心如何轻松拨打和接听电话,这就是为什么专注于用户体验的 Apple 推出了 CallKit 来实现这一点。在本博客中,您将学习如何利用基于 WebRTC 的 CPaaS平台(EnableX) 在 iOS 中开发原生拨号器界面,这将模拟应用间通话的类似体验。您可以使用 CallKit 和 EnableX视频 API来实现这一点。
什么是 CallKit?
CallKit 是一个苹果框架(随 iOS 10 推出),旨在通过允许其他 美国B2B清单 与通话相关的应用程序与原生电话 UI 集成来改善 VoIP 体验。这显著增强了用户体验,主要是消除了接听、挂断或阻止电话时打开应用程序的需要。CallKit 将允许您的应用程序:
- 在锁定和解锁状态下均在本地通话屏幕上显示来电/去电。
- 拨打任何第三方呼叫服务,如 iPhone 上的任何 VoIP 服务,例如 EnableX。
- 从本机手机应用程序的“联系人”、“收藏夹”或“最近”屏幕进行应用内语音呼叫。
在 CallKit 出现之前,发送通知是一个主要的痛点,因为在常规通知下出现 国家明智的电话号码数据 的呼叫很容易被忽略。CallKit 通过为 VoIP 应用提供 iOS 原生 UI 为软件开发人员提供了极大的帮助,因为如果没有丰富的内置呼叫 UI,这些应用就无法很好地集成。
注意:还需要注意的是,尽管 CallKit 提供了原生 UI,但它 7 个你必须看到的 Google 搜索排名文档 需要 Apple 推送通知服务 (APN) 或任何第三方通知服务来通知最终用户通话开始或结束时的情况。因此,在创建证书以通知最终用户通话时,请务必在其中启用 VoIP 通话选项。
如何在 iOS 上使用 CallKit?
· 对 swift/objective-c 和 xcode 有基本的了解。
· 在 EnableX 门户上创建一个免费的开发者帐户。
· 使用 CocoaPods 安装项目文件和依赖项。
· 创建 CX 提供程序。
· 使用 CallKit 发起和接听电话。接下来,将 EnableX API 与 CallKit 集成。
什么是 EnableX?
EnableX 是一个基于云的通信平台,用于将视频、语音、短信和聊天消息嵌入到任何应用程序和网站中。它基于运营商级平台构建,为开发人员提供全套通信 API 和开发创新且引人入胜的通信体验所需的所有工具包。
创建 iOS 应用内通话的先决条件
在我开始详细说明之前,您需要了解并设置以下内容
- 对 swift/objective-c 和 xcode 有基础到中级的了解。
- 您还需要 xcode 10 或更高版本以及 iOS 设备 12.0 或更高版本,因为 CallKit 功能无法在模拟器中使用。
- 在 EnableX 上创建一个免费的开发者账户。它是安全的,并且不需要信用卡信息。
- 使用 CocoaPods 安装项目文件和依赖项。有关安装 CocoaPods 的信息,请参阅CocoaPods 入门指南。
- 4.1. 打开终端,cd 到你的项目目录并输入 pod install。
- 4.2. 使用新的 *.xcworkspace 文件在 Xcode 中重新打开您的项目。
要开始使用 API,让我们首先看一下主要的 CallKit 和 EnableX 类,它们包含进行端到端视频通信所需的各种方法。
主要的 EnableX 类
- EnxRtc:此类包含连接房间和加入房间的方法。
- EnxRoom:此类包含处理房间内操作的方法。例如,将端点连接到 EnableX Room、发布和订阅流等。
- EnxStream:此类处理所有与媒体流相关的功能。例如,启动、配置和传输流到 EnableX 媒体服务器和从 EnableX 媒体服务器传输流,接收要播放的流等。
- EnxPlayerView:此类用于在 EnxPlayerview 上显示视频流。
在Enablex 官方开发者文档中了解有关 EnableX 基础知识的更多信息
主要的 CallKit 类
-
- CXProvider CXProvider 对象代表电话提供商。它负责向系统报告发生的带外通知。VoIP 应用程序应仅创建一个 CXProvider 实例并将其存储以供全局使用。CXProvider 对象使用 对象初始化,以指定呼叫的行为和功能。每个提供商都可以指定一个符合 CXProviderDelegate 协议的对象来响应事件,例如呼叫开始、呼叫被搁置或提供商的音频会话被激活。