在 iOS 系统上集成声网 SDK
使用声网全球网络同步视频、聊天等实时应用。

本教程将教大家创建一个实时应用。用户可以通过这个实时应用进行多人视频通话和聊天。我们用声网 RTM 的实时消息功能作为协调层,通过小的突破频道连接用户,用户使用声网实时通信引擎创建/加入当前视频通话。

声网 RTM SDK 适用于所有系统,但本教程主要讨论 iOS 系统(使用 Swift)。


应用程序的操作流程

该应用程序的操作流程如下:

  • 点击“加入(Join)”按钮
  • 可以看到多个用户在频道中进行视频直播
  • 点击屏幕上方的“主播(Host)”,成为主播
  • 相机和麦克风授权会弹出
  • 翻转摄像头(前/后摄像头)
  • 切换相机(开/关)
  • 切换麦克风(开/关)
  • 切换美颜滤镜,使图像更流畅,声音更清晰

点击下列链接,下载最新的视频/音频 SDK:

前期准备

  • 声网开发者账户
  • Xcode 11.0 或更高版本
  • iOS 13.0 或更高版本的 iOS 设备
  • 对 iOS 开发有基本了解
  • CocoaPods
注意:如果你想在更早的 iOS 版本上集成,可以改变示例项目中按钮的创建方式。


设置

首先,在 Xcode 中创建一个 iOS 或 macOS 项目。

Xcode 在下载大型库(如声网 SDK)时可能会出现故障。如果提示错误,可以按照下列方式添加 swift 包:在 Xcode 中选择 File>Swift Packages>Reset Package Caches。


CocoaPod

安装 CocoaPod 时,在你的 pod 文件 AgoraUIKit_iOS 中写 CocoaPod 的最新版本,如下:

target 'Agora-UIKit-Project' do
 pod 'AgoraUIKit_iOS', '~> 4.0.3'
end
注意:撰写本文时,声网 UIKit 的最新版本是 v4.0.3。

首先,运行 pod install,打开 .xcworkspace 文件。

打开 Xcode 项目根文件夹中的 Info.plist ,添加 NSCameraUsageDescriptionNSMicrophoneUsageDescription,为应用程序添加使用摄像头和麦克风的权限。

关于请求网页摄像头授权的信息,请查看 Apple 公司的这篇文章


添加视频推流

如果你想要 AgoraViewController,需要在控制器中加载下列 feed,整个 ViewController 如下所示:

import UIKit
import AgoraUIKit_iOS

class ViewController: UIViewController {
    var agoraView: AgoraVideoViewer?
    override func viewDidLoad() {
        super.viewDidLoad()
        self.agoraView? = AgoraVideoViewer(
            connectionData: AgoraConnectionData(
                appId: <#Agora App ID#>,
                appToken: <#Agora Token or nil#>
            )
        )
        // fill the view
        self.agoraView?.fills(self.view)
        // join the channel "test"
        agoraView?.join(channel: "test", as: .broadcaster)
    }
}

左边是网格布局,右边是浮动布局

以上就是使用声网 UIKit 时基本方法,但这个方法没有考虑到 token。为安全起见,建议生产应用使用 token。


集成 Token

大家可以通过这些博客和资料库来了解 token:2-Click 设置指南Golang 中的预置 token 服务器,以及在 Swift 应用中获取 token 的信息。

你需要定义一个 AgoraSettings 对象,在 token URL 中赋值,然后在创建 AgoraVideoViewer 对象时应用该设置对象。

let agoraSettings = AgoraSettings()
agSettings.tokenURL = "https://<heroku url>"
agoraView = AgoraVideoViewer(
  connectionData: AgoraConnectionData(
    appId: <#Agora App ID#>
  ),
  agoraSettings: agoraSettings
)

这样,每当你连接到一个新的频道时,该频道会要求一个布尔 fetchToken 值,并将其设置为 true:

agoraView.join(
  channel: "test", as: .broadcaster, fetchToken: true
)


总结

使用声网全球网络创建一个视频通话和实时聊天的生产型应用就是这么简单。同样的类和方法也适用于 macOS 应用程序。

欢迎大家访问高级声网 UIKit 博客,探索声网 UIKit iOS 和 macOS 版本的全部潜能。大家可以利用该库获得更多的自定义功能。


其他资源

如果想了解更多使用声网 SDK 创建应用程序的信息,请查看声网视频通话快速入门指南



原文作者:Pasi rahul
原文链接:https://medium.com/simform-engineering/agora-sdk-integration-in-ios-c811d5108b7c
推荐阅读
相关专栏
SDK 教程
164 文章
本专栏仅用于分享音视频相关的技术文章,与其他开发者和声网 研发团队交流、分享行业前沿技术、资讯。发帖前,请参考「社区发帖指南」,方便您更好的展示所发表的文章和内容。