
本文介绍基于 Agora SDK 在 macOS 端实现一对一视频通话。
前提条件
- Xcode 9.0 或以上版本 
- 支持 macOS 10.10 或以上版本的 macOS 设备 
- 有效的 Agora 账户(免费注册) 
- 注:如果你的网络环境部署了防火墙,请根据声网文档中心的「应用企业防火墙限制」打开相关端口。 
准备开发环境
本节介绍如何创建项目,并将 Agora SDK 集成至你的项目中。
创建 macOS 项目
参考以下步骤创建一个 macOS 项目。若已有 macOS 项目,可以跳脱这一步,直接查看本文「集成 SDK」小节。
- 打开 Xcode 并点击 Create a new Xcode project。 
- 选择项目类型为 Cocoa App,并点击 Next。 
- 输入项目信息,如项目名称、开发团队信息、组织名称和语言,并点击 Next。 
- 如果你没有添加过开发团队信息,会看到 Add account… 按钮。点击该按钮并按照屏幕提示登入 Apple ID,完成后即可选择你的账户作为开发团队。 
- 选择项目存储路径,并点击 Create。 
- 进入 TARGETS > Project Name > General > Signing 菜单,选择 Automatically manage signing,并在弹出菜单中点击 Enable Automatic。 
  
集成 SDK
选择如下任意一种方式将 Agora SDK 集成到你的项目中。
方法一:使用 CocoaPods 自动集成
- 开始前确保你已安装 Cocoapods。参考 Getting Started with CocoaPods 安装说明。 
- 在 Terminal 里进入项目根目录,并运行 pod init 命令。项目文件夹下会生成一个 Podfile 文本文件。 
- 打开 Podfile 文件,修改文件为如下内容。注意将 Your App 替换为你的 Target 名称。 
platform :macOS, ‘10.11’ use_frameworks!
target ‘Your App’ do
pod ‘AgoraRtcEngine_macOS’
end
4. 在 Terminal 内运行 pod update 命令更新本地库版本。
5. 运行 pod install 命令安装 Agora SDK。成功安装后,Terminal 中会显示 Pod installation complete!,此时项目文件夹下会生成一个 xcworkspace 文件。
6. 打开新生成的 xcworkspace 文件。
方法二:手动复制 SDK 文件
- 前往 SDK 下载页面,获取最新版的 Agora SDK,然后解压。 
- 将 libs 文件夹内的 AgoraRtcEngineKit.framework 文件复制到项目文件夹下。 
- 打开 Xcode,进入 TARGETS > Project Name > Build Phases > Link Binary with Libraries 菜单,点击 + 添加如下库。在添加 AgoraRtcEngineKit.framework 文件时,还需在点击 + 后点击 Add Other…,找到本地文件并打开。 
- 添加前: 
  
- 添加后: 
  
- AgoraRtcEngineKit.framework 
- Accelerate.framework 
- CoreWLAN.framework 
- libc++.dylib 
- libresolv.9.tbd 
- SystemConfiguration.framework 
- VideoToolbox.framework 
添加媒体设备权限
- 根据场景需要,打开 Xcode ,在 info.plist 文件中,点击 + 图标开始添加如下内容,获取相应的设备权限: 
  
- 添加前: 
 
 添加后:
 
 - 若你的项目已启用 App Sandbox 或 Hardened Runtime 设置,则需勾选如下内容,获取相应的设备权限: 
  
- 根据苹果官方要求: 
- 对于在 Mac App Store 发布的软件,需要启用 App Sandbox 设置。详见苹果官方声明。 
- 对于不在 Mac App Store 发布的软件,需要启用 Hardened Runtime 设置。详见苹果官方声明。 
实现音视频通话
本节介绍如何实现音视频通话。视频通话的 API 调用时序见下图:
 
 1. 创建用户界面
根据场景需要,为你的项目创建音视频通话的用户界面。若已有用户界面,可以直接查看导入类。
如果你想实现一个视频通话,我们推荐你添加如下 UI 元素:
- 本地视频窗口 
- 远端视频窗口 
- 结束通话按钮 
- 当你使用示例项目中的 UI 设计时,你将会看到如下界面: 
  
2. 导入类
在项目中导入 AgoraRtcEngineKit 类:
Agora Native SDK 默认使用 libc++ (LLVM),如需使用 libstdc++ (GNU),请联系 sales@agora.io。SDK 提供的库是 Fat Image,包含 32/64 位模拟器、32/64 位真机版本。
3. 初始化 AgoraRtcEngineKit
在调用其他 Agora API 前,需要创建并初始化 AgoraRtcEngineKit 对象。
你需要在该步骤中填入项目的 App ID。请参考如下步骤在控制台创建 Agora 项目并获取 App ID。
1.登录控制台,点击左侧导航栏的项目管理图标 。
2.点击创建,按照屏幕提示设置项目名,选择一种鉴权机制,然后点击提交。
3.在项目管理页面,你可以获取该项目的 App ID。
调用 sharedEngineWithAppId 方法,传入获取到的 App ID,即可初始化 AgoraRtcEngineKit。
你还可以根据场景需要,在初始化时注册想要监听的回调事件,如本地用户加入频道及解码远端用户视频首帧等。
4. 设置本地视图
如果你想实现一个语音通话,可以直接查看加入频道。
成功初始化 AgoraRtcEngineKit 对象后,需要在加入频道前设置本地视图,以便在通话中看到本地图像。参考以下步骤设置本地视图:
- 调用 enableVideo 方法启用视频模块。 
- 调用 setupLocalVideo 方法设置本地视图。 
5. 加入频道
完成初始化和设置本地视图后(视频通话场景),你就可以调用 joinChannelByToken 方法加入频道。你需要在该方法中传入如下参数:
- channelId: 传入能标识频道的频道 ID。输入频道 ID 相同的用户会进入同一个频道。 
- token:传入能标识用户角色和权限的 Token。可设为如下一个值: 
- 若项目已启用 App 证书,请使用 Token。 
- nil 
- 临时 Token。临时 Token 服务有效期为 24 小时。你可以在控制台里生成一个临时 Token,详见获取临时 Token。 
- 在你的服务器端生成的 Token。在安全要求高的场景下,我们推荐你使用此种方式生成的 Token,详见生成 Token。 
- uid: 本地用户的 ID。数据类型为整型,且频道内每个用户的 uid 必须是唯一的。若将 uid 设为 0,则 SDK 会自动分配一个 uid,并在 joinSuccessBlock 回调中报告。 
- joinSuccessBlock:成功加入频道回调。joinSuccessBlock 优先级高于 didJoinChannel,2 个同时存在时,didJoinChannel 会被忽略。需要有 didJoinChannel 回调时,请将 joinSuccessBlock 设置为 nil。 
- 更多的参数设置注意事项请参考 joinChannelByToken 接口中的参数描述。 
6. 设置远端视图
视频通话中,通常你也需要看到其他用户。在加入频道后,可通过调用 setupRemoteVideo 方法设置远端用户的视图。
远端用户成功加入频道后,SDK 会触发 firstRemoteVideoDecodedOfUid 回调,该回调中会包含这个远端用户的 uid 信息。在该回调中调用 setupRemoteVideo 方法,传入获取到的 uid,设置远端用户的视图。
7. 离开频道
根据场景需要,如结束通话、关闭 App 或 App 切换至后台时,调用 leaveChannel 离开当前通话频道。
示例代码
你可以在 Agora-macOS-Tutorial-Objective-C-1to1/Agora-macOS-Tutorial-Swift-1to1 示例项目的 VideoChatViewController.m/VideoChatViewController.swift 文件中查看完整的源码和代码逻辑。
运行项目
你可以在 macOS 设备中运行此项目。当成功开始视频通话时,你可以同时看到本地和远端的视图。
本文转载自声网 Agora 公众号。
原文链接:https://mp.weixin.qq.com/s/kjXG083VpM_a8Ky4WvvO7Q








 
    
评论