3 初始化

3.1 项目配置

3.1.1 添加权限

由于点播项目中的播放器,在播放过程中进行截图后会直接保存到系统相册,用户上传视频前,也需要访问系统相册获取视频文件,因此需要在文件 Info.plist 中添加系统相册的读写权限。

另外,本项目支持后台播放,因此还需要开启后台播放权限。info.plist 文件新增内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    ……
    <key>NSPhotoLibraryUsageDescription</key>
    <string>允许App访问相册以保存截图或读取相册视频文件</string>
    <key>UIBackgroundModes</key>
    <array>
    <string>audio</string>
    </array>
    ……
</dict>
</plist>

3.1.2 支持横竖屏幕

本项目支持横竖屏播放,选择 Targets 的 General 菜单栏,在 Deployment Info 中按下图设置:

3.2 SDK 配置

保利威点播 SDK 需要用户提供 useIdreadtokenwritetokensecretkey 这四个配置信息,关于这四个参数的作用,详见保利威云点播-服务器API使用手册-名词解释。基于安全性考虑,建议将这些参数保存在服务端,APP 在启动时从服务端获取并配置。

为防止 APP 端被嗅探这几个参数,需要对传输的内容进行加密。因此,就有了 SDK加密串——在服务器端对以上四个参数进行加密,APP端对应的进行解密。开发者应当设计自己的加解密方式,并且APP端应通过 https 协议请求服务端接口。

为方便快速集成和调试 SDK 的功能,保利威管理后台提供了一种固定加密方式的临时SDK加密串,请勿直接在正式环境使用。

3.2.1 账号配置

点播 SDK 中的类 PLVVodSettings 提供了以下几个方法进行 SDK 配置。

最推荐的方法,是使用 https 接口,从服务端获取加密串,APP 本地解密(开发者设计自己的加解密方式)得到 useIdreadtokenwritetokensecretkey ,再使用以下方法进行 SDK 配置。

/// 通过 userid、readtoken、writetoken、secretkey 配置账号
+ (instancetype)settingsWithUserid:(NSString *)userid 
    					 readtoken:(NSString *)readtoken 
                        writetoken:(NSString *)writetoken 
                         secretkey:(NSString *)secretkey;

其次,点播 SDK 提供了一种固定的加密方式,开发者可在开发时使用,但由于安全性不如第一种方式,不推荐使用在正式环境。加密串、加密密钥、加密向量可在保利威视频云平台获取。注意:加密密钥、加密向量字符长度必须为16位。

/// 通过加密串 configString、加密密钥 key、加密向量 iv 配置账号
+ (instancetype)settingsWithConfigString:(NSString *)configString key:(NSString *)key iv:(NSString *)iv error:(NSError **)error;

errornil,可通过以上方法返回的 PLVVodSettings 对象的只读属性 userIdreadtokenwritetokensecretkey 读取到保利威点播 SDK 的四个配置信息。

对于安全性要求较高的公司,可对 APP 进行加固,防止 APP 在越狱设备上被破解、分析导致账号及用户隐私数据的泄漏。市面上有很多对 iOS 应用进行加固的产品可以使用。

3.2.2 日志配置

点播 SDK 内部使用自建的日志等级系统,日志等级使用位运算符定义,因此开发者可以根据自己需要使用 |(位运算符:或)进行组合使用,设置个性化的日志等级。通过修改 PLVVodSettings 对象的属性 logLevel 设置日志等级,日志等级默认为

/// 日志等级
typedef NS_OPTIONS(NSUInteger, PLVVodLogLevel) {
    PLVVodLogLevelSilent = 0,       // 禁用日志输出
    PLVVodLogLevelError  = 1 << 0,    // 只输出错误日志
    PLVVodLogLevelWarn   = 1 << 1,    // 只输出警告日志
    PLVVodLogLevelInfo   = 1 << 2,    // 只输出信息日志
    PLVVodLogLevelDebug  = 1 << 3,    // 只输出调试日志
    PLVVodLogLevelWithoutDebug = PLVVodLogLevelError | PLVVodLogLevelWarn | PLVVodLogLevelInfo,
    PLVVodLogLevelAll    = 0xFFFFFFFF,
};

其次,通过修改 PLVVodSettings 对象的属性 viewerIdviewerName,在日志系统中加入终端用户(App 使用者)的账号 ID、账号昵称。日志配置代码示例如下:

[PLVVodSettings sharedSettings].logLevel = PLVVodLogLevelAll; // 禁用日志输出
[PLVVodSettings sharedSettings].viewerId = @"账号ID";
[PLVVodSettings sharedSettings].viewerName = @"账号昵称";

建议在进行账号配置之后就进行日志配置。

Last updated