PLVVodDownloadManager
Objective-C
@interface PLVVodDownloadManager : NSObject
Swift
class PLVVodDownloadManager : NSObject
视频下载管理单例
-
下载目录,默认为 Library/Caches/PolyvVodCache。修改下载目录后,上一个目录的离线视频将无法索引。
Declaration
Objective-C
@property (nonatomic, copy) NSString *downloadDir;
Swift
var downloadDir: String! { get set }
-
是否允许使用蜂窝移动网络进行下载,默认 YES
Declaration
Objective-C
@property (nonatomic) BOOL allowsCellularAccess;
Swift
var allowsCellularAccess: Bool { get set }
-
是否启用后台下载,默认 YES
Declaration
Objective-C
@property (nonatomic) BOOL enableBackgroundDownload;
Swift
var enableBackgroundDownload: Bool { get set }
-
添加任务后是否自动启动,默认 NO
Declaration
Objective-C
@property (nonatomic) BOOL autoStart;
Swift
var autoStart: Bool { get set }
-
保存的后台下载会话block
Declaration
Objective-C
@property (nonatomic, copy) void (^)(void) backgroundCompletionHandler;
Swift
var backgroundCompletionHandler: (() -> Void)! { get set }
-
完成所有下载回调
Declaration
Objective-C
@property (nonatomic, copy) void (^)(void) completeBlock;
Swift
var completeBlock: (() -> Void)! { get set }
-
单个视频下载完成回调
Declaration
Objective-C
@property (nonatomic, copy) void (^)(PLVVodDownloadInfo *) downloadCompleteBlock;
Swift
var downloadCompleteBlock: ((PLVVodDownloadInfo?) -> Void)! { get set }
-
下载错误回调
Declaration
Objective-C
@property (nonatomic, copy) void (^)(PLVVodVideo *, NSError *) downloadErrorHandler;
Swift
var downloadErrorHandler: ((PLVVodVideo?, Error?) -> Void)! { get set }
-
是否正在下载中
Declaration
Objective-C
@property (nonatomic, readonly) BOOL isDownloading;
Swift
var isDownloading: Bool { get }
-
允许同时下载的最大任务数,默认为1,最大为3
Declaration
Objective-C
@property (nonatomic) NSUInteger maxRuningCount;
Swift
var maxRuningCount: UInt { get set }
-
Deprecated
Use: downloadType Instead
下载的文件类型,默认视频文件
Declaration
Objective-C
@property (nonatomic) int fileType;
Swift
var fileType: PLVDownloadFileType { get set }
-
下载模式类型,默认视频下载模式
Declaration
Objective-C
@property (nonatomic) int downloadType;
Swift
var downloadType: PLVDownloadModeType { get set }
-
多账号体系支持,默认NO
Declaration
Objective-C
@property (nonatomic) BOOL isMultiAccount;
Swift
var isMultiAccount: Bool { get set }
-
上一个版本视频存储目录,用于升级到多账号下载后,迁移单帐号本地视频到多账号系统的第一个下载账户
Declaration
Objective-C
@property (nonatomic, copy) NSString *previousDownloadDir;
Swift
var previousDownloadDir: String! { get set }
-
ts 文件下载模式 。 默认CreateAllResumeOne初始化时创建所有ts片下载任务,然后逐个启动下载 设置CreateOneResumeOne 针对直播回放视频优化下载
Declaration
Objective-C
@property (nonatomic) int taskCreateMode;
Swift
var taskCreateMode: PLVTaskCreateMode { get set }
-
PLVVodDownloadManager 共享的静态对象
Declaration
Objective-C
+ (instancetype)sharedManager;
Swift
class func shared() -> Self!
Return Value
PLVVodDownloadManager 共享的静态对象
-
设置下载目录
Declaration
Objective-C
- (BOOL)setDownloadDir:(NSString *)downloadDir skipBackup:(BOOL)skipBackup error:(NSError **)error;
Swift
func setDownloadDir(_ downloadDir: String!, skipBackup: Bool) throws
Parameters
downloadDir
设置的下载目录
skipBackup
是否忽略 iCloud 的备份
error
错误回调
Return Value
是否成功
-
迁移已经缓存的视频数据
Declaration
Objective-C
- (BOOL)moveDownloadVideoFromSourceDir:(NSString *)sourceDir toDestDir:(NSString *)destDir;
Swift
func moveDownloadVideo(fromSourceDir sourceDir: String!, toDestDir destDir: String!) -> Bool
Parameters
sourceDir
被迁移的视频下载目录
destDir
目标视频下载目录(新目录)
Return Value
是否迁移成功
-
添加至下载队列
添加下载器,仅当 video 错误时,才会报错,quality 错误时,只会警告,并切换到最近的质量进行下载。
Declaration
Objective-C
- (PLVVodDownloadInfo *)downloadVideo:(PLVVodVideo *)video quality:(id)quality;
Swift
func downloadVideo(_ video: PLVVodVideo!, quality: PLVVodQuality) -> PLVVodDownloadInfo!
Parameters
video
PLVVodVideo 视频对象
quality
视频画质
Return Value
下载信息
-
使用后台设置的默认画质添加至下载队列
Declaration
Objective-C
- (PLVVodDownloadInfo *)downloadVideo:(PLVVodVideo *)video;
Swift
func downloadVideo(_ video: PLVVodVideo!) -> PLVVodDownloadInfo!
Parameters
video
PLVVodVideo 视频对象
Return Value
下载信息
-
下载音频文件(开通视频转音频服务才有此功能)
Declaration
Objective-C
- (PLVVodDownloadInfo *)downloadAudio:(PLVVodVideo *)video;
Swift
func downloadAudio(_ video: PLVVodVideo!) -> PLVVodDownloadInfo!
Parameters
video
PLVVodVideo 视频对象
Return Value
下载信息
-
下载PPT 文件
Declaration
Objective-C
- (void)downloadPPTWithVideo:(PLVVodVideo *)video completion:(void (^)(PLVVodDownloadInfo *))completion;
Swift
func downloadPPT(with video: PLVVodVideo!, completion: ((PLVVodDownloadInfo?) -> Void)!)
Parameters
video
PLVVodVideo 视频对象
-
开始队列下载
Declaration
Objective-C
- (void)startDownload;
Swift
func startDownload()
-
停止队列下载
Declaration
Objective-C
- (void)stopDownload;
Swift
func stopDownload()
-
从指定视频开始下载,若达到并发数限制,则停止其他下载任务,优先下载指定视频
Declaration
Objective-C
- (void)startDownloadWithVid:(NSString *)vid;
Swift
func startDownload(withVid vid: String!)
Parameters
vid
视频vid
-
开始指定vid视频下载,根据priority 参数执行不同的下载策略
Declaration
Objective-C
- (void)startDownloadWithVid:(NSString *)vid highPriority:(BOOL)priority;
Swift
func startDownload(withVid vid: String!, highPriority priority: Bool)
Parameters
vid
视频vid
priority
YES 当达到并发数限制,优先下载此视频;NO,当达到并发数限制,处于Preparing 状态
-
从指定视频/音频文件开始下载 使用场景:同时下载视频/音频文件的客户
Declaration
Objective-C
- (void)startDownloadWithVideoParams:(PLVVodVideoParams *)videoParams;
Swift
func startDownload(with videoParams: PLVVodVideoParams!)
Parameters
videoParams
fileType 为音频,操作音频文件;为视频,操作视频文件
-
停止下载指定视频
Declaration
Objective-C
- (void)stopDownloadWithVid:(NSString *)vid;
Swift
func stopDownload(withVid vid: String!)
Parameters
vid
视频vid
-
停止下载指定视频
Declaration
Objective-C
- (void)stopDownloadWithVid:(NSString *)vid autoNext:(BOOL)autoNext;
Swift
func stopDownload(withVid vid: String!, autoNext: Bool)
Parameters
vid
视频vid
autoNext
是否自动开启下一个视频的下载
-
停止下载指定视频/音频
Declaration
Objective-C
- (void)stopDownloadWithVideoParams:(PLVVodVideoParams *)videoParams;
Swift
func stopDownload(with videoParams: PLVVodVideoParams!)
Parameters
videoParams
fileType 为音频,操作音频文件;为视频,操作视频文件
-
移除下载任务,并删除对应文件
Declaration
Objective-C
- (void)removeDownloadWithVid:(NSString *)vid error:(NSError **)error;
Swift
func removeDownload(withVid vid: String!, error: NSErrorPointer)
Parameters
vid
vid
error
错误回调
-
移除音频/视频下载任务,并删除对应文件
Declaration
Objective-C
- (void)removeDownloadWithVideoParams:(PLVVodVideoParams *)videoParams error:(NSError **)error;
Swift
func removeDownload(with videoParams: PLVVodVideoParams!, error: NSErrorPointer)
Parameters
videoParams
fileType 为音频,操作音频文件;为视频,操作视频文件
error
错误回调
-
移除所有下载任务,并删除对应文件,与已完成下载的视频无关
Declaration
Objective-C
- (void)removeAllDownloadWithComplete:(void (^)(void *))completion;
Swift
func removeAllDownload(complete completion: ((UnsafeMutableRawPointer?) -> Void)!)
Parameters
completion
删除任务后的回调
-
获取所有下载任务信息(缓冲中,已缓存)
Declaration
Objective-C
- (void)requestDownloadInfosWithCompletion: (void (^)(NSArray<PLVVodDownloadInfo *> *))completion;
Swift
func requestDownloadInfos(completion: (([PLVVodDownloadInfo]?) -> Void)!)
Parameters
completion
完成回调
-
获取所有缓存中视频信息(准备缓存,缓存中,缓存失败)
Declaration
Objective-C
- (void)requstDownloadProcessingListWithCompletion: (void (^)(NSArray<PLVVodDownloadInfo *> *))completion;
Swift
func requstDownloadProcessingList(completion: (([PLVVodDownloadInfo]?) -> Void)!)
Parameters
completion
完成回调,返回视频信息数组
-
获取所有已缓存成功视频信息
Declaration
Objective-C
- (NSArray<PLVVodDownloadInfo *> *)requestDownloadCompleteList;
Swift
func requestDownloadCompleteList() -> [PLVVodDownloadInfo]!
Return Value
下载完成的视频数组
-
根据vid 获取视频下载信息
Declaration
Objective-C
- (PLVVodDownloadInfo *)requestDownloadInfoWithVid:(NSString *)vid;
Swift
func requestDownloadInfo(withVid vid: String!) -> PLVVodDownloadInfo!
Parameters
vid
视频vid
-
根据videoParams 获取视频下载详细信息
Declaration
Objective-C
- (PLVVodDownloadInfo *)requestDownloadInfoWithVideoParams: (PLVVodVideoParams *)videoParams;
Swift
func requestDownloadInfo(with videoParams: PLVVodVideoParams!) -> PLVVodDownloadInfo!
Parameters
videoParams
视频/音频文件信息
-
删除指定视频 删除视频,会删除包含 vid 的所有离线资源(与下载任务无关)。
Declaration
Objective-C
+ (void)removeVideoWithVid:(NSString *)vid error:(NSError **)error;
Swift
class func removeVideo(withVid vid: String!, error: NSErrorPointer)
Parameters
vid
视频id
error
错误回调
-
删除本地ppt 数据 (与下载任务无关)
Declaration
Objective-C
+ (void)removePPTWithVid:(NSString *)vid error:(NSError **)error;
Swift
class func removePPT(withVid vid: String!, error: NSErrorPointer)
Parameters
vid
视频id
error
错误回调
-
删除指定视频/音频文件
删除视频/音频,会删除包含 vid 的所有离线资源(与下载任务无关)。
Declaration
Objective-C
+ (void)removeVideoWithVideoParams:(PLVVodVideoParams *)videoParams error:(NSError **)error;
Swift
class func removeVideo(with videoParams: PLVVodVideoParams!, error: NSErrorPointer)
Parameters
videoParams
fileType 为音频,操作音频文件;为视频,操作视频文件
error
错误回调
-
删除下载目录下所有资源
删除下载目录下所有离线资源(与下载任务无关)。
Declaration
Objective-C
+ (void)removeAllVideoWithError:(NSError **)error;
Swift
class func removeAllVideoWithError(_ error: NSErrorPointer)
Parameters
error
错误回调
-
删除下载目录下所有音频资源
删除下载目录下所有音频离线资源(与下载任务无关)。
Declaration
Objective-C
+ (void)removeAllAudioWithError:(NSError **)error;
Swift
class func removeAllAudioWithError(_ error: NSErrorPointer)
Parameters
error
错误回调
-
获取已下载的本地视频
Declaration
Objective-C
- (NSArray<PLVVodLocalVideo *> *)localVideos;
Swift
func localVideos() -> [PLVVodLocalVideo]!
Return Value
一组 PLVVodLocalVideo 对象
-
判断指定视频是否存在本地
指定 vid 视频是否已下载,返回指定 vid 的清晰度,返回 0 则不存在该视频。
Declaration
Objective-C
+ (id)videoExist:(NSString *)vid;
Swift
class func videoExist(_ vid: String!) -> PLVVodQuality
Parameters
vid
vid
Return Value
指定视频的画质
-
兼容 1.x.x 版本的离线视频
注意:
- 实现兼容的前提是使用相同的下载目录,必须保证与之前版本的下载目录一致;
- 该方法调用一次即可,多次调用也不会修改文件。
Declaration
Objective-C
- (void)compatibleWithPreviousVideos;
Swift
func compatibleWithPreviousVideos()
-
在AppDelegate 中调用,程序即将结束时,修改并保存下载中视频的下载状态,用于 程序下次启动后,恢复视频下载状态
Declaration
Objective-C
- (void)applicationWillTerminate;
Swift
func applicationWillTerminate()
-
在AppDelegate 中调用,app 回到前台模式,进行相关设置
Declaration
Objective-C
- (void)applicationWillEnterForeground;
Swift
func applicationWillEnterForeground()
-
在AppDelegate 中调用,app 退到后台模式,进行相关设置
Declaration
Objective-C
- (void)applicationDidEnterBackground;
Swift
func applicationDidEnterBackground()
-
处理后台下载完成回调的事件
Declaration
Objective-C
- (void)handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)(void))completionHandler;
Swift
func handleEvents(forBackgroundURLSession identifier: String!, completionHandler: (() -> Void)!)
-
当开启多账号支持时,可以切换当前下载帐号,各个帐号具有单独的存储目录
Declaration
Objective-C
- (void)switchDownloadAccount:(NSString *)accountId;
Swift
func switchDownloadAccount(_ accountId: String!)
Parameters
accountId
终端用户的唯一标志,建议传递userId
-
登出多账号,停止当前帐号下载中的视频,重新设置多账号下的默认帐号 登出后,会采用默认帐号进行下载相关操作
Declaration
Objective-C
- (void)logoutMultiAccount;
Swift
func logoutMultiAccount()