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 需要使用者提供 useId、readtoken、writetoken、secretkey 這四個配置資訊,關於這四個參數的作用,詳見保利威雲點播-伺服器API使用手冊-名詞解釋。基於安全性考量,建議將這些參數儲存在伺服端,APP 在啟動時從伺服端取得並配置。
為防止 APP 端被嗅探這幾個參數,需要對傳輸的內容進行加密。因此,就有了 SDK加密串——在伺服器端對以上四個參數進行加密,APP端對應的進行解密。開發者應當設計自己的加解密方式,並且APP端應透過 https 協定請求伺服器端介面。
為方便快速整合和調試 SDK 的功能,保利威管理後台提供了一種固定加密方式的臨時SDK加密串,請勿直接在正式環境使用。
3.2.1 帳號配置
點播 SDK 中的類別 PLVVodSettings 提供了以下幾個方法進行 SDK 配置。
最推薦的方法,是使用 https 介面,從伺服器端取得加密串,APP 本地解密(開發者設計自己的加解密方式)得到 useId、readtoken、writetoken、secretkey ,再使用以下方法進行 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;
若 error 為 nil,可透過以上方法回傳的 PLVVodSettings 物件的唯讀屬性 userId、readtoken、writetoken、secretkey 讀取到保利威點播 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 物件的屬性 viewerId、viewerName,在日誌系統中加入終端使用者(App 使用者)的帳號 ID、帳號暱稱。日誌配置程式碼範例如下:
[PLVVodSettings sharedSettings].logLevel = PLVVodLogLevelAll; // 禁用日志输出
[PLVVodSettings sharedSettings].viewerId = @"账号ID";
[PLVVodSettings sharedSettings].viewerName = @"账号昵称";
建議在進行帳號配置之後就進行日誌配置。
