本文为您介绍如何集成iOS端短视频SDK,包括pod方式集成和手动方式集成的操作详情。
前提条件
开发前的环境要求如下表所示。
类别 | 说明 |
系统版本 | 支持iOS 9.0及以上版本。 |
macOS High Sierra版本 | 支持macOS High Sierra 10.13及以上版本。 |
Xcode版本 | 支持Xcode 9.0及以上版本,下载Xcode。 |
背景信息
短视频SDK分为专业版,标准版和基础版,三个版本使用的库名分别为专业版/标准版(AliyunVideoSDKPro.framework)和基础版(AliyunVideoSDKBasic.framework)。
基础版只包含录制与裁剪模块。
专业版和标准版包含全功能模块,标准版的高级接口需要单独授权才能调用。
pod方式集成(推荐)
在Podfile文件中添加依赖,各版本依赖如下表所示。
重要如果使用短视频SDK 3.24.0及以上版本,请务必使用FFmpeg 4.3.0及以上版本。
请确保网络环境可以访问更新pod仓库,并在pod install安装完成后检查framework版本号是否和官网最新版一致。
使用最少依赖集成方式集成短视频SDK时,如果需要上传媒资文件到视频点播,请集成上传SDK上传,具体内容请参见集成iOS SDK。
版本
Podfile文件对应依赖
专业版
默认集成(默认集成方式,包含主库、资源包和上传SDK)
# 默认的集成方式,除短视频SDK外,还会集成资源包和上传SDK。 pod 'AliyunVideoSDKPro', '~> 6.0.0'
最少依赖集成(仅集成短视频SDK,不会集成资源包和上传SDK)
# 仅集成短视频SDK,不会集成资源包和上传SDK pod 'AliyunVideoSDKPro/min', '~> 6.0.0'
说明如需使用拍摄模块的人脸贴纸功能,则必须引入资源包(AliyunVideoSDKPro.bundle),引入方式请参见设置资源包引入路径。
标准版
默认集成(默认集成方式,包含主库、资源包和上传SDK)
# 默认的集成方式,除短视频SDK外,还会集成上传SDK。 pod 'AliyunVideoSDKStd', '~> 6.0.0'
最少依赖集成(不包含资源包和上传SDK)
# 仅集成短视频SDK,不会集成上传SDK pod 'AliyunVideoSDKStd/min', '~> 6.0.0'
基础版
# 仅集成短视频SDK,不会集成上传SDK pod 'AliyunVideoSDKBasic', '~> 6.0.0'
更新pod repo。
pod repo update
安装pod。
pod install
手动方式集成(不推荐)
库和资源依赖说明
手动方式集成不提供上传库,如果需要上传媒资文件到视频点播,请集成上传SDK上传,具体内容请参见上传SDK。
专业版
需要手动下载集成相应版本的以下库和bundle资源包。
库名
描述
下载地址
AliyunVideoSDKPro.framework
动态库
AETemplateEngune.framework
动态库(非必须)
AliyunVideoSDKPro.bundle
资源包(非必须)
说明当需要使用拍摄模块的人脸贴纸功能时,则必须引入该资源包。
alivcffmpeg
动态库
标准版
需要手动下载集成相应版本的以下库。
库名
描述
下载地址
AliyunVideoSDKPro.framework
动态库
alivcffmpeg
动态库
基础版
需要手动下载集成相应版本的以下库。
库名
描述
下载地址
AliyunVideoSDKBasic.framework
动态库
alivcffmpeg
动态库
操作步骤
手动方式集成较为繁琐,并且提交到App Store时需要剥离模拟器版本(x86架构)的动态库,否则会被拒绝。因此推荐使用pod方式集成。剥离模拟器动态库的方式有如下两种:
使用命令行工具lipo剥离模拟器架构的framework。
通过pod方式集成,pod会在打包时自动剥离掉模拟器架构的framework。
编译报错时,请修改
,修改为Objective-C++。
添加动态库。
单击General,选择Frameworks, Libraries, and Embedded Content。单击+,然后单击Add Other…,导入上述动态库(例如AliyunVideoSDKPro.framework、alivcffmpeg.framework)。导入之后请选择Embed &Sign。
添加其他库依赖。
单击General,选择Frameworks, Libraries, and Embedded Content。单击+,分别添加MobileCoreServices.framework、SystemConfiguration.framework和libresolv.tbd依赖。
可选:将AliyunVideoSDKPro.bundle依赖导入到工程。
单击Build Phases,选择Copy Bundle Resources,单击+,然后单击Add Other…,导入AliyunVideoSDKPro.bundle。
配置项目
SDK集成后,打开项目工程并修改以下配置:
配置 ,添加-ObjC。
打开工程info.Plist,添加以下权限:
Privacy - Camera Usage Description Privacy - Microphone Usage Description Privacy - Photo Library Usage Description
配置License
获取到License后,需要按以下操作配置License文件。License的获取及详细信息请参见管理License。
把下载的License文件导入到App工程中,在Info.plist文件中添加两个key,第一个key为AlivcLicenseKey,value为LicenseKey的值;第二个key为AlivcLicenseFile,value为内置证书文件(相对于mainBundle)的路径。示例如下所示:
key | value |
AlivcLicenseKey | LicenseKey的值。取值示例:MoCTfuQ391Z01mNqG8f8745e23c8a457a8ff8d5faedc1**** |
AlivcLicenseFile | 内置证书文件(相对于mainBundle)的路径。 |
后续步骤:初始化SDK
集成完SDK后,需要初始化SDK。
引入头文件
SDK头文件主要说明使用短视频SDK时所需要遵循的接口使用规范,使用短视频SDK前需要先引入头文件。
专业版&标准版
#import <AliyunVideoSDKPro/AliyunVideoSDKPro.h>
基础版
#import <AliyunVideoSDKBasic/AliyunVideoSDKBasic.h>
注册SDK
从3.29.0版本开始,短视频SDK升级了License服务,在App启动后必须进行注册,否则无法使用短视频SDK的功能。具体如下:
// ≥ 3.30.0版本:
NSError *error = [AliyunVideoSDKInfo registerSDK]; // 返回error为nil表示注册成功。
// 因为注册失败基本属于接入错误,所以建议直接加上Assert就可以在接入调试时显示错误和修复建议。
NSAssert2(error == nil, @"注册SDK失败!%@;%@", error.localizedDescription, error.localizedRecoverySuggestion);
// 3.29.0版本:
// 请把获取到的LicenseFile改名为license.crt,加到您的App工程里,通过以下方式获取LicenseFile路径。
NSString *licenseFilePath = [NSBundle.mainBundle pathForResource:@"license" ofType:@"crt"];
// 使用获取到的LicenseKey和LicenseFilePath注册SDK。
[AliyunVideoSDKInfo registerSDKWithLicenseKey:LicenseKey licenseFile:licenseFilePath];
注册成功代表License已经注入到SDK内部,但是不代表鉴权结果成功。
您可以通过代码查询当前License状态信息。
AliyunVideoLicense *license = AliyunVideoLicenseManager.CurrentLicense;
在您使用具体功能或增值服务时,SDK内部会发生鉴权,如果鉴权失败会在对应的接口返回结果。您也可以在统一的地方监听鉴权结果。
// ≥ 3.30.0版本
AliyunVideoLicenseManager.EventDelegate = self; // 具体请参考AliyunVideoLicenseEventDelegate协议说明
您可以通过代码主动查询鉴权结果。
AliyunVideoLicenseResultCode code = [AliyunVideoLicenseManager check];
如果您续费了或者购买了增值服务也可以主动更新License(默认每15分钟检查更新一次)。
[AliyunVideoLicenseManager Refresh:^(AliyunVideoLicenseRefreshCode code){
// 更新结果: code
}];
设置资源包引入路径
通过pod方式的最少依赖方式集成短视频SDK时,如果需要引入资源包AliyunVideoSDKPro.bundle,且考虑到包大小问题,不想在工程中引入,那么可以通过以下方法,实现在APP运行时自动下载资源包,下载完成后引入到短视频SDK中。
把资源包上传到您的云空间上(例如OSS中)。
在APP启动时进行资源包判定,如果资源包不存在则进行下载,将资源包下载到本地。
本地已存在资源包或资源包下载完成后,设置短视频SDK引入资源包的路径,方法如下:
[AliyunVideoSDKInfo setSDKBundlePath:@"资源包的本地存储路径"];
日志输出
默认情况下,短视频SDK仅输出警告和出错日志(AlivcLogWarn)。用户可以设置日志输出级别以打印更多日志作为故障排查参考。
// 日志级别定义如下:
typedef NS_ENUM(NSInteger, AlivcLogLevel)
{
AlivcLogClose = 1,
AlivcLogVerbose,
AlivcLogDebug,
AlivcLogInfo,
AlivcLogWarn,
AlivcLogError,
AlivcLogFatal
};
// 设置日志输出级别
[AliyunVideoSDKInfo setLogLevel:AlivcLogDebug];
版本信息
您可以通过以下方式打印版本信息,以确保引入的SDK版本正确或帮助排查SDK使用过程中的问题。
[AliyunVideoSDKInfo printSDKInfo];
您还可以打印所需要的信息。
NSString *version = [AliyunVideoSDKInfo version]; // 版本号
NSString *module = [AliyunVideoSDKInfo module]; // 版本类型
int moduleCode =[AliyunVideoSDKInfo versionCode]; // 版本类型代码
NSString *buildId =[AliyunVideoSDKInfo videoSDKBuildId]; // 版本打包ID
NSLog(@"\n==============\nVERSION:%@\nBUILD_ID:%@\nMODULE:%@\nMODULE_CODE:%d\n==============", version, buildId, module, moduleCode);