快速入门音频互动

最近更新时间:2022-09-20 05:17:40

前提条件

  • Xcode 10.0 或以上版本(本文 Xcode 的界面描述以 Xcode 12.0 为例)
  • iOS 9.0 或以上版本的设备
  • 有效的 anyRTC 开发者账号

创建 iOS 项目

  1. 打开 Xcode 并点击 Create a new Xcode project

  2. 选择平台类型为 iOS、项目类型为 Single View App,并点击 Next

  3. 输入项目名称(Product Name)、开发团队信息(Team)、组织名称(Organization Name)和语言(Language)等项目信息,并点击 Next

    如果你没有添加过开发团队信息,会看到 Add account… 按钮。点击该按钮并按照屏幕提示登入 Apple ID,完成后即可选择你的 Apple 账户作为开发团队。

  4. 选择项目存储路径,并点击 Create

获取 SDK

选择如下任意一种方式获取最新版 RTC SDK。

方法一:使用 CocoaPods 获取 SDK

  1. 开始前确保你已安装 Cocoapods。参考 Getting Started with CocoaPods 安装说明。
  2. 在终端里进入项目根目录,并运行 pod init 命令。项目文件夹下会生成一个 Podfile 文本文件。
  3. 打开 Podfile 文件,修改文件为如下内容。注意将 Your App 替换为你的 Target 名称。
# platform :ios, '9.0'
use_frameworks!
target 'Your App' do
    pod 'ARtcKit_iOS'
end
  1. 在终端内运行 pod install 命令安装 SDK。成功安装后,Terminal 中会显示 Pod installation complete!,此时项目文件夹下会生成一个 xcworkspace 文件。
  2. 打开新生成的 xcworkspace 文件。

方法二:从官网获取 SDK

  1. 前往 SDK 下载页面,获取最新版的 RTC SDK,然后解压。

  2. 根据你的需求,选择以下一种方法将 ARtcKit.framework动态库复制到项目的 ./project_name 文件夹下(project_name 为你的项目名称)。

  3. 打开 Xcode,进入 TARGETS > Project Name > General > Frameworks, Libraries, and Embedded Content菜单。

  4. 点击 + > Add Other… > Add Files 添加 ARtcKit.framework动态库,并确保添加的动态库 Embed 属性设置为 Embed & Sign。 添加完成后,项目会自动链接所需系统库。

根据 Apple 官方要求,app 的 Extension 中不允许包含动态库。如果项目中的 Extension 需要集成 SDK,则添加动态库时需将文件状态改为 Do Not Embed

基本流程

现在,我们已经将 RTC SDK 集成到项目中了。接下来我们要在 ViewController 中调用 anySDK 提供的核心 API 实现基础的语音通话功能,API 调用时序见下图。

img

1. 导入类

// Objective-C
// ViewController.h
#import <ARtcKit/ARtcKit.h>
// 声明 ARtcEngineDelegate,用于监听回调
@interface ViewController : UIViewController <ARtcEngineDelegate>
// 定义 rtcKit 变量
@property (strong, nonatomic) ARtcEngineKit *rtcKit;
// Swift
// ViewController.swift
import ARtcKit
class ViewController: UIViewController {
    ...
    // 定义 rtcKit 变量
    var rtcKit: ARtcEngineKit?
}

2. 初始化 ARtcEngineKit 对象

调用 sharedEngineWithAppId 创建并初始化 ARtcEngineKit 对象。你需要将 YourAppID 替换为你的 anyRTC 项目的 App ID。详见获取App ID

你还可以根据场景需要,在初始化时注册想要监听的回调事件。

// Objective-C
// ViewController.m
@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // 后续步骤调用 anyRTC API 使用的函数
    [self initializeRtcEngine];
    [self joinChannel];
}

- (void)initializeRtcEngine {
    // 初始化 ARtcEngineKit 对象
    self.rtcKit = [ARtcEngineKit sharedEngineWithAppId:@"YourAppID" delegate:self];
}
// Swift
// ViewController.swift
class ViewController: UIViewController {
    ...
     override func viewDidLoad() {
        super.viewDidLoad()
        // 后续步骤调用 anyRTC API 使用的函数
        initializeRtcEngine()
        joinChannel()
     }

    func initializeRtcEngine() {
        // 初始化 ARtcEngineKit 对象
        rtcKit = ARtcEngineKit.sharedEngine(withAppId: "YourAPPID", delegate: self)
    }
}

3. 加入频道

调用 joinChannelByToken 加入频道。 在 joinChannelByToken 中你需要将 YourToken 替换成你自己生成的 Token,并将 YourChannelName替换为你生成 Token 时填入的频道名称。

  • 在测试阶段,你可以直接在控制台生成临时 Token。加入频道时,请确保填入的频道名和生成临时 Token 时填入的频道名一致。
  • 在生产环境,我们推荐你在自己的服务端生成 Token,详见在服务端生成 Token。加入频道时,请确保填入的频道名和 uid 与生成临时 Token 时填入的频道名和 uid 一致。

用户成功加入频道后,会默认订阅频道内其他所有用户的音频流,因此产生用量并影响计费。如果想取消订阅,可以通过调用相应的mute方法实现。

// Objective-C
// ViewController.m
- (void)joinChannel {
    [self.rtcKit joinChannelByToken:@"YourToken" channelId:@"YourChannelName" info:nil uid:0 joinSuccess:^(NSString * _Nonnull channel, NSUInteger uid, NSInteger elapsed) {
        // Did join channel
    }];
}
// Swift
// ViewController.swift
func joinChannel(){
    rtcKit?.joinChannel(byToken: "YourToken", channelId: "YourChannelName", uid: nil, joinSuccess: { (channel, uid, elapsed) in
        // Did join channel
    })
}

4. 离开频道

根据场景需要,如结束通话、关闭 App 或 App 切换至后台时,调用 leaveChannel 离开当前通话频道。

// Objective-C
// ViewController.m
// 将以下代码填入你定义的函数中
[rtcKit leaveChannel:nil];
// Swift
// ViewController.swift
// 将以下代码填入你定义的函数中
rtcKit?.leaveChannel(nil)

5. 销毁 ARtcEngineKit 对象

离开频道后,如果你想释放 RTC SDK 使用的所有资源,需调用 destroy 销毁 ARtcEngineKit 对象。

// Objective-C
// ViewController.m
// 将以下代码填入你定义的函数中
[ARtcEngineKit destroy];
// Swift
// ViewController.swift
// 将以下代码填入你定义的函数中
ARtcEngineKit.destroy()

运行项目

在运行项目前,你需要设置签名和开发团队,并添加设备权限。

1. 设置签名和开发团队

  1. 在 Xcode 中,进入 TARGETS > Project Name > Signing & Capabilities > Signing 菜单,勾选 Automatically manage signing。
  2. 仔细阅读弹窗提示,并点击 Enable Automatic
  3. 成功设置签名后,在 Team 处选择你的开发团队。

2. 添加设备权限

在 Xcode 中,打开 info.plist 文件。在右侧列表中添加如下内容,获取相应的设备权限:

KeyTypeValue
Privacy - Microphone Usage DescriptionString使用麦克风的目的,例如:for a call or live interactive streaming。

iOS 14.0 版本新增了 Privacy - Local Network Usage Description 权限。