开发准备
设备以及系统要求
- 设备要求:iPhone 5 及以上
- 系统要求:iOS 9.0 及以上
开发环境配置
- Xcode 开发工具。App Store 下载地址下载地址
- 安装 CocoaPods。了解 CocoaPods 使用方法
导入 SDK
通过 CocoaPods 导入
CocoaPods 是针对 Objective-C 的依赖管理工具,它能够将使用类似 QNRTCKit 的第三方库的安装过程变得非常简单和自动化,你能够用下面的命令来安装它:
$ sudo gem install cocoapods
Podfile
为了使用 CoacoaPods 集成 QNRTCKit 到你的 Xcode 工程当中,你需要编写你的 Podfile
target 'TargetName' do
pod 'QNRTCKit'
end
- 默认为真机版
- 若需要使用模拟器 + 真机版,则改用如下配置
pod "QNRTCKit", :podspec => 'https://raw.githubusercontent.com/pili-engineering/QNRTC-iOS/master/QNRTCKit-universal.podspec'
注意:鉴于目前上架 App Store 时只支持动态库真机版本,请在 App 上架前更换至真机版本
然后,运行如下的命令:
$ pod install
手动导入
点击这里下载相应版本的 SDK,将下载好的动态库文件 QNRTCKit.framework 导入到你的 Xcode 工程当中。
动态库 QNRTCKit.framework 链接到工程中的方式,见下图所示:
在需要使用的类中,引入后使用
#import <QNRTCKit/QNRTCKit.h>
添加权限说明
我们需要在 Info.plist 文件中添加相应权限的说明,否则程序在 iOS 10 及以上系统会出现崩溃。需要添加如下权限:
- 麦克风权限:Privacy - Microphone Usage Description 是否允许 App 使用麦克风
- 相机权限:Privacy - Camera Usage Description 是否允许 App 使用相机
Track 介绍
在一个简单的音视频通话的场景中,视频画面一般和发布这个视频画面的用户是一个一对一的关系,即一个用户发布一路流,其他用户订阅这个用户就等于订阅他发布的那一路流。
但是在某些特殊的业务场景中,是希望可以打破这个一对一关系的。一个用户应该可以发布多路不一样的流(比如来自不同的摄像头、屏幕、窗口等等),而用户在订阅他的时候也可以动态选择到底要订阅他的哪些流。在这种场景下,房间的用户和房间中用户发布的流就变成了一对多的关系,即每个用户都可以发布多路音视频流。
七牛实时音视频云 SDK 从 2.0.0
版本起正式支持了这个一个用户对应多路流的需求,但是在这种一对多的场景下,我们不再将这些音视频画面称之为流,在之后的叙述和介绍中,我们都会用 Track(音视频轨道) 这个词。
如果您对音视频开发有一定的了解可能会知道,Stream(流) 是由 Track(轨道) 组成的。默认情况下,一路 Stream 只会包含一个音频 Track 和一个视频 Track。在 2.0.0
后,我们取消了这个默认假设,一个 Stream 可以由任意多个 Track 来组成,并把用户可以操作的最小单元改为 Track, 以此来实现了这个一对多的对应关系。
如果您是正在使用我们
2.0.0
以下版本的老客户,可能会考虑这种对应关系的变化要如何向下兼容的问题。其实我们的解决思路很简单,在一个用户所发布的 Track 中,会有一个属性叫做master
,我们只允许一个用户发布至多一个 video master Track 和至多一个 audio master Track。master 属性为YES
的 Track 会被自动组合在一起映射成之前版本中的流。