实时语音通话能够拉近人与人之间的距离,为用户提供沉浸式的交流体验,帮助你的 app 提高用户黏性。
本文介绍如何通过少量代码集成 Agora 音频 SDK 并调用 API,在你的应用中实现高质量、低延迟的语音通话功能。
下图展示在 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。 |
将声网音频 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 'AgoraAudio_iOS', 'x.y.z'
end
在终端内运行 pod install
命令安装声网 SDK。成功安装后,Terminal 中会显示 Pod installation complete!
。
成功安装后,项目文件夹下会生成一个后缀为 .xcworkspace
的文件,通过 Xcode 打开该文件进行后续操作。
本节介绍如何使用声网音频 SDK 在你的 app 中实现语音通话功能。
参考以下代码创建一个基础的用户界面:
import UIKit
class ViewController: UIViewController{
...
// 定义 agoraKit
var agoraKit: AgoraRtcEngineKit!
}
下图展示了实现语音通话的 API 调用时序。
参考以下步骤来实现语音通话逻辑:
导入声网kit
打开 ViewController.swift
文件,将下列代码添加至 import UIKit
之后:
import AgoraRtcKit
初始化声网引擎
调用 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)
}
填入你的临时 token、频道名以及用户 ID 加入频道,并设置频道场景及用户角色
在 ViewController.swift
文件中,将下列代码添加至 initializeAgoraEngine
之后:
func joinChannel(){
let option = AgoraRtcChannelMediaOptions()
// 在语音通话场景下,将频道场景设置为 liveBroadcasting
option.channelProfile = .of((Int32)(AgoraChannelProfile.liveBroadcasting.rawValue))
// 关闭摄像头
option.publishCameraTrack = .of(false)
// 设置用户角色为主播
option.clientRoleType = .of((Int32)(AgoraClientRole.broadcaster.rawValue))
// 使用临时 token 加入频道,在这里传入你的项目的 token 和频道名。
agoraKit?.joinChannel(byToken: <#Your token#>, channelId: <#Your channel name#>, uid: 0, mediaOptions: option)
}
至此,你已经成功在你的 app 中添加了语音通话功能。当用户启动你的 app 时,语音通话开始;当用户关闭 app 时,语音通话结束。
当视图加载完成后,调用 viewDidLoad
加入频道。
打开 ViewController.swift
文件,将 viewDidLoad
添加至 UIViewController
中:
override func viewDidLoad() {
super.viewDidLoad()
// 当调用声网 API 时,以下函数会被调用
initializeAgoraEngine()
joinChannel()
}
离开频道
在 ViewController.swift
文件中,将 viewDidDisappear
添加至 joinChannel
函数之后:
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
agoraKit?.leaveChannel(nil)
}
参考以下步骤来测试你的 app:
在测试或生产环境中,为确保通信安全,声网推荐使用 token 服务器来生成 token,详见使用 Token 鉴权。
本节提供了额外的信息供参考。
声网在 Github 上提供一个开源的语音通话示例项目 JoinChannelAudio 供你参考。
前往 SDK 下载页面,获取最新版的 iOS 视频 SDK,然后解压。
将 SDK 包内 libs
路径下的文件,拷贝到你的项目路径下。
打开 Xcode,添加对应动态库,确保添加的动态库 Embed 属性设置为 Embed & Sign。
在 Xcode 中,进入 File > Swift Packages > Add Package Dependencies...,粘贴如下 URL:
https://github.com/AgoraIO/AgoraAudio_iOS.git
在 Choose Package Options 中指定你想集成的 SDK 版本。你也可以参考 Apple 官方文档进行设置。