PLVDownloadMediaManager

Objective-C

@interface PLVDownloadMediaManager : NSObject

Swift

class PLVDownloadMediaManager : NSObject

视频下载管理单例

[基础配置]

  • 注意!!!注意!!!注意!!!

    旧版本点播SDK ,支持单账号,多账号模式 。多账号模式,支持多个用户视频分开存储。 新版本点播SDK,只支持多账号模式。 旧版本点播SDK,如果是单账号下载模式,当升级到新版本SDK ,必须设置此属性,用于视频迁移。 旧版本视频数据,会迁移到第一次调用 【setAccountID:] 方法时,传递的 accountId ,作为此用户的缓存数据

    Declaration

    Objective-C

    @property (nonatomic, copy) NSString *previousDownloadDir;

    Swift

    var previousDownloadDir: String! { get set }
  • 是否允许使用蜂窝移动网络进行下载,默认 YES

    Declaration

    Objective-C

    @property (nonatomic) BOOL allowsCellularAccess;

    Swift

    var allowsCellularAccess: Bool { get set }
  • 添加任务后是否自动启动,默认 NO

    Declaration

    Objective-C

    @property (nonatomic) BOOL autoStart;

    Swift

    var autoStart: Bool { get set }
  • 允许同时下载的最大任务数,默认为1,最大为3

    Declaration

    Objective-C

    @property (nonatomic) NSUInteger maxRuningCount;

    Swift

    var maxRuningCount: UInt { get set }
  • TS 文件下载模式 。 默认CreateAllResumeOne初始化时创建所有ts片下载任务,然后逐个启动下载 设置CreateOneResumeOne 针对直播回放视频优化下载

    Declaration

    Objective-C

    @property (nonatomic) int taskCreateMode;

    Swift

    var taskCreateMode: PLVTaskCreateMode { get set }
  • 下载队列是否处于下载状态

    Declaration

    Objective-C

    @property (nonatomic, readonly) BOOL isDownloading;

    Swift

    var isDownloading: Bool { get }
  • 下载目录,可打印查看视频文件保存目录

    Declaration

    Objective-C

    @property (nonatomic, copy, readonly) NSString *downloadDir;

    Swift

    var downloadDir: String! { get }

[下载回调处理]

  • 保存的后台下载会话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 (^)(PLVDownloadInfo *) downloadCompleteBlock;

    Swift

    var downloadCompleteBlock: ((PLVDownloadInfo?) -> Void)! { get set }
  • 下载错误回调

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^)(PLVVodMediaVideo *, NSError *) downloadErrorHandler;

    Swift

    var downloadErrorHandler: ((PLVVodMediaVideo?, Error?) -> Void)! { get set }
  • PLVDownloadMediaManager 共享单例对象

    Declaration

    Objective-C

    + (instancetype)sharedManager;

    Swift

    class func shared() -> Self!

    Return Value

    PLVDownloadMediaManager 共享的静态对象

  • 设置具体的账号标识,必须调用此方法,才能开始下载 当切换不同的用户,同样调用此方法进行切换

    Declaration

    Objective-C

    - (void)setAccountID:(NSString *)accountId;

    Swift

    func setAccountID(_ accountId: String!)

    Parameters

    accountId

    终端用户的唯一标志,建议传递userId

[后台下载处理]

  • 处理后台下载完成回调的事件 必须在AppDelegate 中调用 具体参考demo

    Declaration

    Objective-C

    - (void)handleEventsForBackgroundURLSession:(NSString *)identifier
                              completionHandler:(void (^)(void))completionHandler;

    Swift

    func handleEvents(forBackgroundURLSession identifier: String!) async

【添加下载任务】

[下载过程控制]

  • 开始队列下载

    Declaration

    Objective-C

    - (void)startDownload;

    Swift

    func startDownload()
  • 停止队列下载

    Declaration

    Objective-C

    - (void)stopDownload;

    Swift

    func stopDownload()
  • 开始指定vid视频下载,根据priority 参数执行不同的下载策略

    Declaration

    Objective-C

    - (void)startDownloadTask:(PLVDownloadInfo *)downloadInfo
                 highPriority:(BOOL)priority;

    Swift

    func startDownloadTask(_ downloadInfo: PLVDownloadInfo!, highPriority priority: Bool)

    Parameters

    downloadInfo

    视频下载对象

    priority

    YES 当达到并发数限制,优先下载此视频;NO,当达到并发数限制,处于Preparing 状态

  • 停止下载指定视频/音频

    Declaration

    Objective-C

    - (void)stopDownloadTask:(PLVDownloadInfo *)downloadInfo;

    Swift

    func stopDownloadTask(_ downloadInfo: PLVDownloadInfo!)

    Parameters

    downloadInfo

    视频下载对象

  • 移除音频/视频下载任务,并删除对应文件

    Declaration

    Objective-C

    - (void)removeDownloadTask:(PLVDownloadInfo *)downloadInfo
                         error:(NSError **)error;

    Swift

    func removeDownloadTask(_ downloadInfo: PLVDownloadInfo!, error: NSErrorPointer)

    Parameters

    downloadInfo

    fileType 为音频,操作音频文件;为视频,操作视频文件

    error

    错误回调

  • 获取未完成下载列表 并且创建下载器,恢复下载任务

    Declaration

    Objective-C

    - (void)getUnfinishedDownloadList:
        (void (^)(NSArray<PLVDownloadInfo *> *))completion;

    Swift

    func unfinishedDownloadList() async -> [PLVDownloadInfo]?

    Parameters

    completion

    完成回调,返回视频信息数组 可能异步返回

  • 获取未完成下载列表(不创建下载任务)

    Declaration

    Objective-C

    - (NSArray<PLVDownloadInfo *> *)getUnfinishedDownloadList;

    Swift

    func getUnfinishedDownloadList() -> [PLVDownloadInfo]!

    Return Value

    同步返回未完成下载列表

  • 获取已成功完成下载列表

    Declaration

    Objective-C

    - (NSArray<PLVDownloadInfo *> *)getFinishedDownloadList;

    Swift

    func getFinishedDownloadList() -> [PLVDownloadInfo]!

    Return Value

    下载完成的视频数组

  • 获取视频下载详细信息

    Declaration

    Objective-C

    - (PLVDownloadInfo *)getDownloadInfo:(NSString *)vid fileType:(id)fileType;

    Swift

    func getDownloadInfo(_ vid: String!, fileType: PLVDownloadFileType) -> PLVDownloadInfo!

    Parameters

    vid

    视频id

    fileType

    下载的文件类型

【本地文件管理】

  • 删除视频/音频,会删除包含 vid 的所有离线资源(与下载任务无关)。

    Declaration

    Objective-C

    + (void)removeCachedFile:(NSString *)vid
                    fileType:(id)fileType
                       error:(NSError **)error;

    Swift

    class func removeCachedFile(_ vid: String!, fileType: PLVDownloadFileType, error: NSErrorPointer)

    Parameters

    vid

    视频id

    fileType

    fileType 为音频,操作音频文件;为视频,操作视频文件

    error

    错误回调

  • 删除下载目录下所有离线资源(与下载任务无关)。

    Declaration

    Objective-C

    + (void)removeAllCachedFiles:(NSError **)error;

    Swift

    class func removeAllCachedFiles(_ error: NSErrorPointer)

    Parameters

    error

    错误回调

  • 判断指定视频是否存在本地 指定 vid 视频是否已下载,返回指定 vid 的清晰度,返回 0 则不存在该视频。

    Declaration

    Objective-C

    + (id)videoExist:(NSString *)vid;

    Swift

    class func videoExist(_ vid: String!) -> PLVVodMediaQuality

    Parameters

    vid

    vid

    Return Value

    指定视频的画质

[其他文件下载,管理]