随着数字通信的快速发展,应用间通话成为一项令人兴奋的尝试。虽然在 iOS 应用中添加音频/视频通话功能很诱人,但这并不是一件容易的事。这是因为从头开始构建它需要大量的编码和复杂的集成。
这正是 EnableX CallKit 框架发挥作用的地方。它使这个过程变得非常简单和容易,你不需要投入大量时间和精力来编写无数行代码!
本详细教程“如何构建 iOS 视频通话应用程序”介绍了如何利用基于WebRTC的EnableX V ideo框架和EnableX CallKit在您的应用程序上使用本机拨号器界面启用音频和视频功能。
什么是EnableX 调用 UI 框架?
它是一个 框架,可以帮助 开发人员仅用几行代码即可在应用程序中启用音频和视频功能,就是这样!该框架由两部分组成:
- EnableX UIKit – 基于原生 UI 组件构建
- EnableX iOS音频/视频 调用框架。
EnableX CallKit 框架:它解决的问题
在深入研究之前,让我们先了解一些你需要知道的事情。之前,我们引入了 iOS SDK,以便你可以构建具有音频/视频功能的 iOS 视频通话应用程序。但它仍然需要开发人员创建通话 UI。此外,所有与通话相关的事件也需要编码。最重要的是,它仍然需要开发人员进行大量编码。
为了使其变得简单快捷,EnableX 引入了 UIKit。一旦将其添加到项目中,它就会自动安装所需的 iOS SDK,并自动处理所有 UI 和呼叫相关事件。它还有助于创建 100% 原生 UI。因此,借助此功能,开发人员只需几行代码即可将音频/视频功能添加到应用程序中。UIKit 支持实时视频聊天,还可以管理所有与呼叫相关的事件。现在的问题是,当您进入房间并想要添加其他参与者/用户加入会议时,需要通知他们。这可以通过创建事件来向最终用户(或参与者)发送通知来实现。但为此,他们端需要一个呼叫 UI,否则他们无法加入通话。这是无缝音频或视频通话体验的基本功能。但是,这又需要大量的编码。
Apple 的 CallKit 试图通过处理 UI 部分来解决此问题,但管理通知相关事件的问题仍然存在。
EnableX 引入了 CallKit 框架来解决这些问题。它智能地复制了 CallKit 框架的所有原生类。它将所有类包装成一个统一的类,并在内部管理与调用相关的事件。借助 EnableX CallKit,开发人员现在只需编写 4-5 行代码,而不是通常的 800-1,000 行。
*通知可以由 APNS 或任何第三方通知提供商服务处理。
* 如果您想通过通知打开 CallKit,请在证书上启用 VoIP 服务。
注意:要试用此代码,请使用搭载 iOS 12.0 或更高版本的 iPhone。
注意:模拟器不支持CallKit。
构建 iOS 视频通话应用的先决条件
- 需要对 Swift/objective-C 和 Xcode 有基础到中级的理解。
- 需要在后台模式下的应用程序中启用 IP 语音功能。
- 要访问教程,请创建一个EnableX 开发者账户。
- 需要Xcode 10或更高版本。
- 您需要 iOS 12 或更高版本才能安装 EnableX CallKit。
现在让我们一步步了解如何构建简单、无缝的PP – to – PP呼叫机制。首先安装EnableX CallKi t :
- 使用 CocoaPods 安装项目文件和其他依赖项。
- 要安装 Cocoa Pods,请访问Cocoa Pods“入门”网页。
打开您的项目 podfile 并添加pod“Enx_CallKit_iOS”。
- 在终端中,转到您的项目目录并输入“pod install”。
- 使用新的 *.xcworkspace 文件在 Xcode 中重新打开您的项目。
就这样,您已经安装完毕 !但在继续之前,您需要了解有关EnableX CallKit框架的一些基本知识。
理解EnableX类
让我们 来看看E nable X Classes是什么以及它们的用途:
- EnxRtc:为开发人员提供一种连接会议室并加入的方式。
- EnxRoom:处理与 EnableX 媒体通信的各种房 国家明智的电话号码数据 间相关功能,例如连接到 EnableX 会议室的端点、发布自流以及订阅远程流。
- EnxStream:管理所有媒体流相关的功能,如发起、配置、传输流到 EnableX 媒体服务器等,还用于接收需要播放的流端点。
- EnxPlayerView:它在EnxPlayerview上显示视频流。
如果您想 了解更多信息,请查看Enable X 官方开发者文档。
EnableX Call K it 框架行为和回调
第一步是导入Enx_CallKit_iOS 。然后,创建EnxCallKit 类的对象。
例如:
var callManager = EnxCallKit(self)
首先,您需要传递接收事件回调的类的实例。您可以在应用上 CNB 目录 收到推送通知后打开 EnableX CallKit UI。
例如:
用户需要在调用UI加载之 Λαμαρίνα: 4 τομείς που επωφελούνται από τη διαδικασία μετασχηματισμού 前添加后台任务。一旦UI加载结束,后台任务应该关闭。这样做的原因很简单:当一个应用在另一个应用中打开时,前一个应用也在后台保持打开状态。
要结束通话,请使用以下 API:
调用管理器.endCall ()
用户接到电话后,EnableX CallKit开始通知用户 的行为。
例如:
- 接听电话:func callAnswer():当你接到电话时
- 呼叫被拒绝:func callReject():当你拒绝呼叫时
- 呼叫超时:func callTimeOut():当你在 45 秒内没有响应呼叫时
- 通话结束:func callEnd():当你结束通话时
- 呼叫保持:func callHold():当你保持通话时
要通过CallKit接到电话后加入EnableX房间,您必须创建一个访问令牌。
生成访问令牌
每个用户都需要一个唯一的访问令牌才能连接到房间。此步骤通常通过Rest API 的调用来完成。
要生成访问令牌和房间 ID,请使用下面提供的链接
要加入 EnableX 房间,用户必须拥有来自 EnableX 服务器和 EnableX iOS SDK 的访问令牌。
该令牌可以通过使用 EnableX UIKit 或 EnableX 音频/视频框架生成:
- 使用 EnableX UIKit 框架
通过 pod ‘Enx_UIKit_iOS’ 安装 EnableX UIKit。