本文介绍如何使用声网语音通话 SDK 快速实现语音通话。
打开 Xcode 并点击 Create a new Xcode project。
选择平台类型为 macOS、项目类型为 App,并点击 Next。
输入项目名称(Product Name)、开发团队信息(Team)、组织名称(Organization Name)和语言(Language)等项目信息,并点击 Next。
选择项目存储路径,并点击 Create。
选择如下任意一种方式集成最新版声网macOS SDK。
开始前确保你已安装 Cocoapods。参考 Getting Started with CocoaPods 安装说明。
在终端里进入项目根目录,并运行 pod init
命令。项目文件夹下会生成一个 Podfile
文本文件。
打开 Podfile
文件,修改文件为如下内容。注意将 Your App
替换为你的 Target 名称。
# platform :macos, '10.11'
target 'Your App' do
pod 'AgoraRtcEngine_macOS'
end
在终端内运行 pod install
命令安装 SDK。成功安装后,Terminal 中会显示 Pod installation complete!
,此时项目文件夹下会生成一个 xcworkspace
文件。
打开新生成的 xcworkspace
文件。
前往 SDK 下载页面,获取最新版的声网macOS 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_macOS
在 Choose Package Options 中指定你想集成的 SDK 版本。如果版本号为 x.y.z,你需要填入 x.y.z;如果版本号为 x.y.z.a,你需要填入 x.y.z-r.a。
现在,我们已经将声网macOS SDK 集成到项目中了。接下来我们要在 ViewController
中调用声网macOS SDK 提供的核心 API 实现基础的语音通话功能,API 调用时序见下图。
在调用声网 API 前,你需要在项目中导入 AgoraRtcKit
类,并定义一个 agoraKit
变量。
// ViewController.h
// 导入 AgoraRtcKit 类
// 自 3.0.0 版本起,AgoraRtcEngineKit 类名更换为 AgoraRtcKit
// 如果获取的是 3.0.0 以下版本的 SDK,请改用 #import <AgoraRtcEngineKit/AgoraRtcEngineKit.h>
#import <AgoraRtcKit/AgoraRtcEngineKit.h>
// 声明 AgoraRtcEngineDelegate,用于监听回调
@interface ViewController : NSViewController <AgoraRtcEngineDelegate>
// 定义 agoraKit 变量
@property (strong, nonatomic) AgoraRtcEngineKit *agoraKit;
// ViewController.swift
// 导入 AgoraRtcKit 类
// 自 3.0.0 版本起,AgoraRtcEngineKit 类名更换为 AgoraRtcKit
// 如果获取的是 3.0.0 以下版本的 SDK,请改用 import AgoraRtcEngineKit
import AgoraRtcKit
class ViewController: NSViewController {
...
// 定义 agoraKit 变量
var agoraKit: AgoraRtcEngineKit?
}
调用 sharedEngineWithAppId
创建并初始化 AgoraRtcEngineKit
对象。你需要将 YourAppID
替换为你的声网项目的 App ID。详见获取 App ID。
你还可以根据场景需要,在初始化时注册想要监听的回调事件。
// ViewController.m
// 将以下代码填入你定义的函数中,例如 viewDidLoad()
self.agoraKit = [AgoraRtcEngineKit sharedEngineWithAppId:@"YourAppID" delegate:self];
// ViewController.swift
// 将以下代码填入你定义的函数中,例如 viewDidLoad()
agoraKit = AgoraRtcEngineKit.sharedEngine(withAppId: "YourAppID", delegate: self)
调用 setChannelProfile
方法,将频道场景设为直播。
一个 AgoraRtcEngineKit
只能使用一种频道场景。如果想切换为其他频道场景,需要先调用 destroy
方法销毁当前的 AgoraRtcEngineKit
对象,然后使用 sharedEngineWithAppId
方法创建一个新的对象,再调用 setChannelProfile
设置新的频道场景。
// ViewController.m
// 将以下代码填入你定义的函数中,例如 viewDidLoad()
[self.agoraKit setChannelProfile:AgoraChannelProfileLiveBroadcasting];
// ViewController.swift
// 将以下代码填入你定义的函数中,例如 viewDidLoad()
agoraKit?.setChannelProfile(.liveBroadcasting)
直播频道有两种用户角色:主播和观众,其中默认的角色为观众。设置频道场景为直播后,你可以在 app 中参考如下步骤设置用户角色:
setClientRole
方法,然后使用用户选择的角色进行传参注意,直播频道内的用户,只能听到主播的声音。加入频道后,如果你想切换用户角色,也可以调用 setClientRole
方法。
// ViewController.m
// 将以下代码填入你定义的函数中,例如 viewDidLoad()
// 设置用户角色为主播
[self.agoraKit setClientRole:AgoraClientRoleBroadcaster];
// ViewController.swift
// 将以下代码填入你定义的函数中,例如 viewDidLoad()
// 设置用户角色为主播
agoraKit?.setClientRole(.broadcaster)
调用 joinChannelByToken
加入频道。
在 joinChannelByToken
中你需要将 YourToken
替换成你自己生成的 Token,并将 YourChannelName
替换为你生成 Token 时填入的频道名称。
// ViewController.m
// 将以下代码填入你定义的函数中,例如 viewDidLoad()
// 频道内每个用户的 uid 必须是唯一的
[self.agoraKit joinChannelByToken:@"YourToken" channelId:@"YourChannelName" info:nil uid:0 joinSuccess:^(NSString * _Nonnull channel, NSUInteger uid, NSInteger elapsed) {
}];
// ViewController.swift
// 将以下代码填入你定义的函数中,例如 viewDidLoad()
// 频道内每个用户的 uid 必须是唯一的
agoraKit?.joinChannel(byToken: "YourToken", channelId: "YourChannelName", info: nil, uid: 0, joinSuccess: { (channel, uid, elapsed) in
})
根据场景需要,如结束通话、关闭 app 或 app 切换至后台时,调用 leaveChannel
离开当前通话频道。
// ViewController.m
// 将以下代码填入你定义的函数中
[self.agoraKit leaveChannel:nil];
// ViewController.swift
// 将以下代码填入你定义的函数中
agoraKit?.leaveChannel(nil)
离开频道后,如果你想释放声网 SDK 使用的所有资源,需调用 destroy
销毁 AgoraRtcEngineKit
对象。
// ViewController.m
// 将以下代码填入你定义的函数中
[AgoraRtcEngineKit destroy];
// ViewController.swift
// 将以下代码填入你定义的函数中
AgoraRtcEngineKit.destroy()
在运行项目前,你需要设置签名和开发团队,并添加设备权限。
info.plist
文件。在右侧列表中添加如下内容,获取相应的设备权限:Key | Type | Value |
---|---|---|
Privacy - Microphone Usage Description | String | 使用麦克风的目的,例如:for a call or live interactive streaming。 |
Capability | Category | Permission |
---|---|---|
App Sandbox | Network |
|
App Sandbox | Hardware | Audio Input |
Hardened Runtime | Resource Access | Audio Input |
我们建议在 macOS 真机中运行你的项目。
你可以邀请一位朋友克隆 API-Examples-Web 项目到本地,在浏览器中打开 Demo/index.html
文件,并输入相同的 App ID、频道名和临时 Token,加入同一频道与 macOS 端互通。当成功开始音频互动直播时,主播可以听到彼此的声音;观众可以听到主播的声音。
选择如下任意一种方式集成历史版本声网macOS SDK。
开始前确保你已安装 Cocoapods。参考 Getting Started with CocoaPods 安装说明。
在终端里进入项目根目录,并运行 pod init
命令。项目文件夹下会生成一个 Podfile
文本文件。
Podfile
文件,修改文件为如下内容。注意将 Your App
替换为你的 Target 名称,并将 version
替换为你需集成的 SDK 版本。如需了解 SDK 版本信息,查看发版说明。# platform :macos, '10.11'
target 'Your App' do
pod 'AgoraRtcEngine_macOS', 'version'
end
在终端内运行 pod install
命令安装声网 SDK。成功安装后,Terminal 中会显示 Pod installation complete!
,此时项目文件夹下会生成一个 xcworkspace
文件。
打开新生成的 xcworkspace
文件。
不同版本的 SDK 集成方式不同,点击下列版本分类展开集成步骤。
AgoraRtcKit.framework
、Agorafdkaac.framework
和 AgoraSoundTouch.framework
动态库到项目的 ./project_name
文件夹下(project_name
为你的项目名称)。AgoraRtcKit.framework
、Agorafdkaac.framework
和 AgoraSoundTouch.framework
动态库,并确保添加的动态库 Embed 属性设置为 Embed & Sign。复制 SDK 包中的 AgoraRtcKit.framework
动态库到项目的 ./project_name
文件夹下(project_name
为你的项目名称)。
打开 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_macOS_..._Dynamic/libs
。./Agora_Native_SDK_for_macOS_.../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 CoreWLAN.framework libc++.tbd libresolv.9.tbd SystemConfiguration.framework |
视频 SDK | AgoraRtcKit.framework Accelerate.framework CoreWLAN.framework libc++.tbd libresolv.9.tbd SystemConfiguration.framework VideoToolbox.framework |
AgoraRtcEngineKit.framework
静态库复制到项目的 ./project_name
文件夹下(project_name
为你的项目名称)。AgoraRtcEngineKit.framework
时,还需在点击 + 后点击 Add Other… > Add Files,找到本地文件并打开。SDK | 库 |
---|---|
音频 SDK | AgoraRtcEngineKit.framework Accelerate.framework CoreWLAN.framework libc++.tbd libresolv.9.tbd SystemConfiguration.framework |
视频 SDK | AgoraRtcEngineKit.framework Accelerate.framework CoreWLAN.framework libc++.tbd libresolv.9.tbd SystemConfiguration.framework VideoToolbox.framework |
使用声网音频 SDK 开发过程中,你还可以参考如下文档: