本文介绍如何使用声网语音通话 SDK 快速实现语音通话。
打开 Xcode 并点击 Create a new Xcode project。
选择平台类型为 iOS、项目类型为 Single View App,并点击 Next。
输入项目名称(Product Name)、开发团队信息(Team)、组织名称(Organization Name)和语言(Language)等项目信息,并点击 Next。
选择项目存储路径,并点击 Create。
选择如下任意一种方式获取最新版声网iOS SDK。
开始前确保你已安装 Cocoapods。参考 Getting Started with CocoaPods 安装说明。
在终端里进入项目根目录,并运行 pod init
命令。项目文件夹下会生成一个 Podfile
文本文件。
打开 Podfile
文件,修改文件为如下内容。注意将 Your App
替换为你的 Target 名称。
# platform :ios, '9.0'
target 'Your App' do
pod 'AgoraAudio_iOS'
end
在终端内运行 pod install
命令安装 SDK。成功安装后,Terminal 中会显示 Pod installation complete!
,此时项目文件夹下会生成一个 xcworkspace
文件。
打开新生成的 xcworkspace
文件。
前往 SDK 下载页面,获取最新版的声网iOS SDK,然后解压。
根据你的需求,将 libs
文件夹中的动态库复制到项目的 ./project_name
文件夹下(project_name
为你的项目名称)。
打开 Xcode,进入 TARGETS > Project Name > General > Frameworks, Libraries, and Embedded Content 菜单。
点击 + > Add Other… > Add Files 添加对应动态库,并确保添加的动态库 Embed 属性设置为 Embed & Sign。
添加完成后,项目会自动链接所需系统库。
在 Xcode 中,进入 File > Swift Packages > Add Package Dependencies...,粘贴如下 URL:
https://github.com/AgoraIO/AgoraAudio_iOS
在 Choose Package Options 中指定你想集成的 SDK 版本。如果版本号为 x.y.z,你需要填入 x.y.z;如果版本号为 x.y.z.a,你需要填入 x.y.z-r.a。
现在,我们已经将声网iOS SDK 集成到项目中了。接下来我们要在 ViewController
中调用声网iOS SDK 提供的核心 API 实现基础的语音通话功能,API 调用时序见下图。
在调用声网 API 前,你需要在项目中导入 AgoraRtcKit 类,并定义一个 agoraKit 变量。
// Objective-C
// ViewController.h
// 如果获取的是 3.0.0 以下版本的 SDK,请改用 #import <AgoraRtcEngineKit/AgoraRtcEngineKit.h>
#import <AgoraRtcKit/AgoraRtcEngineKit.h>
// 声明 AgoraRtcEngineDelegate,用于监听回调
@interface ViewController : UIViewController <AgoraRtcEngineDelegate>
// 定义 agoraKit 变量
@property (strong, nonatomic) AgoraRtcEngineKit *agoraKit;
// Swift
// ViewController.swift
// 如果获取的是 3.0.0 以下版本的 SDK,请改用 import AgoraRtcEngineKit
import AgoraRtcKit
class ViewController: UIViewController {
...
// 定义 agoraKit 变量
var agoraKit: AgoraRtcEngineKit?
}
调用 sharedEngineWithAppId
创建并初始化 AgoraRtcEngineKit
对象。你需要将 YourAppID
替换为你的声网项目的 App ID。详见获取 App ID。
你还可以根据场景需要,在初始化时注册想要监听的回调事件。
// Objective-C
// ViewController.m
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 后续步骤调用声网 API 使用的函数
[self initializeAgoraEngine];
[self joinChannel];
}
- (void)initializeAgoraEngine {
// 初始化 AgoraRtcEngineKit 对象
self.agoraKit = [AgoraRtcEngineKit sharedEngineWithAppId:@"YourAppID" delegate:self];
}
// Swift
// ViewController.swift
class ViewController: UIViewController {
...
override func viewDidLoad() {
super.viewDidLoad()
// 后续步骤调用声网 API 使用的函数
initializeAgoraEngine()
joinChannel()
}
func initializeAgoraEngine() {
// 初始化 AgoraRtcEngineKit 对象
agoraKit = AgoraRtcEngineKit.sharedEngine(withAppId: "YourAPPID", delegate: self)
}
}
调用 joinChannelByToken
加入频道。
在 joinChannelByToken
中你需要将 YourToken
替换成你自己生成的 Token,并将 YourChannelName
替换为你生成 Token 时填入的频道名称。
mute
方法实现。// Objective-C
// ViewController.m
- (void)joinChannel {
// 频道内每个用户的 uid 必须是唯一的
[self.agoraKit joinChannelByToken:@"YourToken" channelId:@"YourChannelName" info:nil uid:0 joinSuccess:^(NSString * _Nonnull channel, NSUInteger uid, NSInteger elapsed) {
}];
}
// Swift
// ViewController.swift
func joinChannel(){
// 频道内每个用户的 uid 必须是唯一的
agoraKit?.joinChannel(byToken: "YourToken", channelId: "YourChannelName", info: nil, uid: 0, joinSuccess: { (channel, uid, elapsed) in
})
}
根据场景需要,如结束通话、关闭 app 或 app 切换至后台时,调用 leaveChannel
离开当前通话频道。
// Objective-C
// ViewController.m
// 将以下代码填入你定义的函数中
[self.agoraKit leaveChannel:nil];
// Swift
// ViewController.swift
// 将以下代码填入你定义的函数中
agoraKit?.leaveChannel(nil)
离开频道后,如果你想释放声网 SDK 使用的所有资源,需调用 destroy
销毁 AgoraRtcEngineKit
对象。
// Objective-C
// ViewController.m
// 将以下代码填入你定义的函数中
[AgoraRtcEngineKit destroy];
// Swift
// ViewController.swift
// 将以下代码填入你定义的函数中
AgoraRtcEngineKit.destroy()
在运行项目前,你需要设置签名和开发团队,并添加设备权限。
在 Xcode 中,打开 info.plist
文件。在右侧列表中添加如下内容,获取相应的设备权限:
Key | Type | Value |
---|---|---|
Privacy - Microphone Usage Description | String | 使用麦克风的目的,例如:for a call or live interactive streaming。 |
我们建议在 iOS 真机中运行你的项目。
你可以邀请一位朋友克隆 API-Examples-Web 项目到本地,在浏览器中打开 Demo/index.html
文件,并输入相同的 App ID、频道名和临时 Token,加入同一频道与 iOS 端互通。当成功开始语音通话时,你和远端用户可听到彼此的声音。
选择如下任意一种方式集成历史版本声网iOS SDK。
开始前确保你已安装 Cocoapods。参考 Getting Started with CocoaPods 安装说明。
在终端里进入项目根目录,并运行 pod init
命令。项目文件夹下会生成一个 Podfile
文本文件。
Podfile
文件,修改文件为如下内容。注意将 Your App
替换为你的 Target 名称,并将 version
替换为你需集成的 SDK 版本。如需了解 SDK 版本信息,查看发版说明。# platform :ios, '9.0'
target 'Your App' do
pod 'AgoraAudio_iOS', 'version'
end
在终端内运行 pod install
命令安装声网 SDK。成功安装后,Terminal 中会显示 Pod installation complete!
,此时项目文件夹下会生成一个 xcworkspace
文件。
打开新生成的 xcworkspace
文件。
不同版本的 SDK 集成方式不同,点击下列版本分类展开集成步骤。
根据你的需求,选择以下一种方法将 AgoraRtcKit.framework
、Agorafdkaac.framework
和 AgoraSoundTouch.framework
动态库复制到项目的 ./project_name
文件夹下(project_name
为你的项目名称)。
a. 如果无需使用模拟器运行项目,复制 SDK 包中 ./libs
路径下的上述动态库。
b. 如需使用模拟器运行项目,复制 SDK 包中 ./libs/ALL_ARCHITECTURE
路径下的上述动态库。该路径下的动态库包含 x86-64 架构,会影响 app 在 App Store 的发布,处理方法见发布注意事项。
AgoraRtcKit.framework
、Agorafdkaac.framework
和 AgoraSoundTouch.framework
动态库,并确保添加的动态库 Embed 属性设置为 Embed & Sign。根据你的需求,选择以下一种方法将 AgoraRtcKit.framework
动态库复制到项目的 ./project_name
文件夹下(project_name
为你的项目名称)。
a. 如果无需使用模拟器运行项目,复制 SDK 包中 ./libs
路径下的上述动态库。
b. 如需使用模拟器运行项目,复制 SDK 包中 ./libs/ALL_ARCHITECTURE
路径下的上述动态库。该路径下的动态库包含 x86-64 架构,会影响 app 在 App Store 的发布,处理方法见发布注意事项。
打开 Xcode,进入 TARGETS > Project Name > General > Frameworks, Libraries, and Embedded Content 菜单。
点击 + > Add Other… > Add Files 添加 AgoraRtcKit.framework
动态库,并确保添加的动态库 Embed 属性设置为 Embed & Sign。添加完成后,项目会自动链接所需系统库。
3.0.0 版 SDK 中包含一个 AgoraRtcKit.framework
动态库和一个 AgoraRtcKit.framework
静态库,你可以根据需要选择其中一个库添加。
两个库在 SDK 包中的路径如下:
./Agora_Native_SDK_for_iOS_..._Dynamic/libs
。./Agora_Native_SDK_for_iOS_.../libs
。动态库集成:
AgoraRtcKit.framework
动态库复制到项目的 ./project_name
文件夹下(project_name
为你的项目名称)。AgoraRtcKit.framework
动态库,并确保添加的动态库 Embed 属性设置为 Embed & Sign。静态库集成:
AgoraRtcKit.framework
静态库复制到项目的 ./project_name
文件夹下(project_name
为你的项目名称)。AgoraRtcKit.framework
时,还需在点击 + 后点击 Add Other… > Add Files,找到本地文件并打开。SDK | 库 |
---|---|
音频 SDK | AgoraRtcKit.framework Accelerate.framework AudioToolbox.framework AVFoundation.framework CoreMedia.framework libc++.tbd libresolv.tbd SystemConfiguration.framework CoreTelephony.framework |
视频 SDK | AgoraRtcKit.framework Accelerate.framework AudioToolbox.framework AVFoundation.framework CoreMedia.framework libc++.tbd libresolv.tbd SystemConfiguration.framework CoreML.framework VideoToolbox.framework |
AgoraRtcEngineKit.framework
静态库复制到项目的 ./project_name
文件夹下(project_name
为你的项目名称)。AgoraRtcEngineKit.framework
时,还需在点击 + 后点击 Add Other… > Add Files,找到本地文件并打开。SDK | 库 |
---|---|
音频 SDK | AgoraRtcEngineKit.framework Accelerate.framework AudioToolbox.framework AVFoundation.framework CoreMedia.framework libc++.tbd libresolv.tbd SystemConfiguration.framework CoreTelephony.framework |
视频 SDK | AgoraRtcEngineKit.framework Accelerate.framework AudioToolbox.framework AVFoundation.framework CoreMedia.framework libc++.tbd libresolv.tbd SystemConfiguration.framework CoreML.framework VideoToolbox.framework |
如果集成了 SDK 包中 ./libs/ALL_ARCHITECTURE
路径下的动态库,你需要在将 app 发布至 App Store 前移除 x86_64 架构。
在终端中运行如下命令,移除 x86_64 架构。注意将 ALL_ARCHITECTURE/AgoraRtcKit.framework/AgoraRtcKit
替换为动态库在你项目中的路径。
lipo -remove x86_64 ALL_ARCHITECTURE/AgoraRtcKit.framework/AgoraRtcKit -output ALL_ARCHITECTURE/AgoraRtcKit.framework/AgoraRtcKit
更多发布注意事项,可以参考 Preparing Your App for Distribution。
如果你需要实现一对多群聊场景,可以前往 GitHub 下载以下示例项目,或查看源代码。
使用声网语音通话 SDK 开发过程中,你还可以参考如下文档: