实时视频通话能够拉近人与人之间的距离,为用户提供沉浸式的交流体验,帮助你的 app 提高用户黏性。
本文介绍如何通过少量代码集成声网视频 SDK ,在你的 app 里实现高质量、低延迟的视频通话功能。
下图展示在 app 中实现声网视频通话的基本工作流程:
实现视频通话的步骤如下:
1. 设置角色
将用户角色均设置为主播。
2. 加入频道
调用 joinChannel
创建并加入频道。在 App ID 一致的前提下,传入相同频道名的用户会进入同一个频道。
3、4. 在频道内发布和订阅音视频
加入频道后,两位主播可以发布音视频并互相订阅。
在 Xcode 中进行以下操作,在你的 app 中实现视频通话功能:
创建一个新的项目,Application 选择 App,Interface 选择 Storyboard,Language 选择 Swift。
为你的项目设置自动签名。
设置部署你的 app 的目标设备。
添加项目的设备权限。
在项目导航栏中打开 info.plist
文件,编辑属性列表,添加以下属性:
key | type | value |
---|---|---|
Privacy - Microphone Usage Description | String | 使用麦克风的目的,例如:for a call or live interactive streaming。 |
Privacy - Camera Usage Description | String | 使用摄像头的目的,例如:for a call or live interactive streaming。 |
将声网视频 SDK 集成到你的项目。
开始前请确保你已安装 Cocoapods,如尚未安装 Cocoapods,参考 Getting Started with CocoaPods 安装说明。
pod init
命令。项目文件夹下会生成一个 Podfile
文本文件。Podfile
文件,修改文件为如下内容。注意将 Your App
替换为你的 Target 名称。platform :ios, '9.0'
target 'Your App' do
# x.y.z 请填写具体的 SDK 版本号,如 4.0.1 或 4.0.0.4。
# 可通过发版说明获取最新版本号。
pod 'AgoraRtcEngine_iOS', 'x.y.z'
end
在终端内运行 pod install
命令安装声网 SDK。成功安装后,Terminal 中会显示 Pod installation complete!
。
成功安装后,项目文件夹下会生成一个后缀为 .xcworkspace
的文件,通过 Xcode 打开该文件进行后续操作。
本节介绍如何使用声网视频 SDK 在你的 app 中实现视频通话功能。
为视频通话功能的创建基本的用户界面时,声网推荐你在项目中添加用户的视频窗口。参考以下代码创建一个基础的用户界面:
import UIKit
class ViewController: UIViewController{
...
// 定义 localView 变量
var localView: UIView!
// 定义 remoteView 变量
var remoteView: UIView!
// 定义 agoraKit
var agoraKit: AgoraRtcEngineKit!
// 设置视频窗口布局
override func viewDidLayoutSubviews(){
super.viewDidLayoutSubviews()
remoteView.frame = self.view.bounds
localView.frame = CGRect(x: self.view.bounds.width - 90, y: 0, width: 90, height: 160)
}
func initView(){
// 初始化远端视频窗口。
remoteView = UIView()
self.view.addSubview(remoteView)
// 初始化本地视频窗口。
localView = UIView()
self.view.addSubview(localView)
}
}
下图展示了实现视频通话的 API 调用时序。
参考以下步骤来实现视频通话逻辑:
导入声网kit
打开 ViewController.swift
文件,将下列代码添加至 import UIKit
之后:
import AgoraRtcKit
初始化声网引擎
一个 AgoraRtcEngineKit
对象只支持一个频道场景。如果你想切换频道场景,调用 destroy
来释放当前的 AgoraRtcEngineKit
对象,再调用 sharedEngineWithConfig
创建一个新的 AgoraRtcEngineKit
对象。
在 ViewController.swift
文件中,将下列代码添加至 initView
之后:
func initializeAgoraEngine(){
let config = AgoraRtcEngineConfig()
// 在这里输入你的 App ID.
config.appId = <#Your app Id#>
// 调用 AgoraRtcEngineDelegate
agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)
}
启用视频模块
在 ViewController.swift
文件,将下列代码添加至 initializeAgoraEngine
之后:
func setupLocalVideo(){
// 启用视频模块
agoraKit?.enableVideo()
// 开始本地预览
agoraKit?.startPreview()
let videoCanvas = AgoraRtcVideoCanvas()
videoCanvas.uid = 0
videoCanvas.renderMode = .hidden
videoCanvas.view = localView
// 设置本地视图
agoraKit?.setupLocalVideo(videoCanvas)
}
填入你的临时 token、频道名以及用户 ID 加入频道并设置频道场景及用户角色
在 ViewController.swift
文件中,将下列代码添加至 setupLocalVideo
之后:
func joinChannel(){
let option = AgoraRtcChannelMediaOptions()
// 在视频通话场景下,将频道场景设置为 liveBroadcasting
option.channelProfile = .of((Int32)(AgoraChannelProfile.liveBroadcasting.rawValue))
// 设置用户角色为主播
option.clientRoleType = .of((Int32)(AgoraClientRole.broadcaster.rawValue))
// 使用临时 token 加入频道,在这里传入你的项目的 token 和频道名。
agoraKit?.joinChannel(byToken: <#Your token#>, channelId: <#Your channel name#>, uid: 0, mediaOptions: option)
}
设置远端用户视图
在 ViewController.swift
文件中,将以下代码添加至 ViewController
类之后:
extension ViewController: AgoraRtcEngineDelegate{
func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinedOfUid uid: UInt, elapsed: Int){
let videoCanvas = AgoraRtcVideoCanvas()
videoCanvas.uid = uid
videoCanvas.renderMode = .hidden
videoCanvas.view = remoteView
agoraKit?.setupRemoteVideo(videoCanvas)
}
}
至此,你已经成功在你的 app 中添加了视频通话功能。当用户启动你的 app 时,视频通话开始;当用户关闭 app 时,视频通话结束。
当视图加载完成后,调用 viewDidLoad
加入频道。
打开 ViewController.swift
文件,将 viewDidLoad
添加至 UIViewController
中:
override func viewDidLoad() {
super.viewDidLoad()
// 当加载视图后,你可以进行其他其他设置。
// 初始化视频窗口
initView()
// 当调用声网 API 时,以下函数会被调用
initializeAgoraEngine()
setupLocalVideo()
joinChannel()
}
离开频道以清理所有会话相关的资源。
在 ViewController.swift
文件中,添加如下代码。
destroy
清理你在 initializeAgoraEngine
函数中创建的所有资源。 agoraKit?.stopPreview()
agoraKit?.leaveChannel(nil)
参考以下步骤来测试你的 app:
在测试或生产环境中,为确保通信安全,声网推荐使用 token 服务器来生成 token,详见使用 Token 鉴权。
本节提供了额外的信息供参考。
声网在 Github 上提供一个开源的视频通话示例项目 JoinChannelVideo 供你参考。
前往 SDK 下载页面,获取最新版的 iOS 视频 SDK,然后解压。
将 SDK 包内 libs
路径下的文件,拷贝到你的项目路径下。
打开 Xcode,添加对应动态库,确保添加的动态库 Embed 属性设置为 Embed & Sign。
在 Xcode 中,进入 File > Swift Packages > Add Package Dependencies...,粘贴如下 URL:
https://github.com/AgoraIO/AgoraRtcEngine_iOS.git
在 Choose Package Options 中指定你想集成的 SDK 版本。你也可以参考 Apple 官方文档进行设置。