# iOS 云资源下载、上传SDK

# 简介

下载 iOS SDK支持下载视频音频(m3u8)文件下载。

上传iOS SDK 支持视频音频Word/PDF文档PPT 4种类型的资源上传。具体api参考ESUploadManager.hESUploadTask.h

# 开发环境

  • 支持iOS 9.0以上版本。
  • XCode 11以上版本。
  • 依赖库:Qiniu

# 快速集成

通过 CocoaPods (opens new window) 安装集成。

# 接入准备

请将下面代码加入到您的 Podfile 中:

pod 'ESCloudPlayerSDK'

在项目根目录下执行下列任意命令,集成最新的 SDK:

$ pod update

或者

$ pod install --repo-update

# 开发指南

# 云资源下载

单任务下载

ESM3U8DownloadInfo *downloadInfo = [[ESM3U8DownloadInfo alloc] initWithFileName:@"xxxxx" resNo:@"xxxxx" token:@"xxxxx" definition:ESCloudPlayerVideoDefinitionSD];
[self.m3u8Mgr downloadM3u8:downloadInfo handler:^(ESM3U8DownloadTask * _Nonnull task) {

}];

多任务下载

  NSArray<ESM3U8DownloadInfo *> *infos = @[...];
[self.m3u8Mgr multiDownloadM3u8:infos handler:^(NSArray<ESM3U8DownloadTask *> * _Nonnull tasks) {

    }];

# 下载管理

# - start:
  • 描述:开始(恢复)下载某个任务。
  • 参数:资源No。
# - startWithTask:
  • 描述:开始(恢复)下载某个任务。
  • 参数:ESM3U8DownloadTask
# - suspend:handler:
  • 描述:暂停下载某个任务。
  • 参数:资源No。
# - cancel:handler:
  • 描述:取消下载某个任务。
  • 参数:资源No。
# - remove:handler:
  • 描述:移除下载某个任务。
  • 参数:resNo:资源No,completely:删除沙盒文件

# 下载回调

# - progress:handler:
  • 描述:下载进度回调
# - success:handler:
  • 描述:下载成功回调
# - failure:handler:
  • 描述:下载失败回调

# 资源播放

# - preparePlayM3U8FileWithResNo:handler:
  • 描述:下载资源准备播放
  • resNo:资源No
# - stopPlayM3U8FileWithHandler
  • 描述:下载资源停止播放
  • resNo:资源No

# 云资源上传

初始化

    ESUploadManager *uploadMgr = [ESUploadManager defaultManager];
    //设置上传服务器域名
    uploadMgr.baseURL = [NSURL URLWithString:SCHOOL_HOST];
    //设置开始上传接口路径
    uploadMgr.startPath = START_UPLOAD;
    //设置完成上传接口路径
    uploadMgr.finishPath = FINISH_UPLOAD;

单任务上传

    ESUploadInfo *uploadInfo = [[ESUploadInfo alloc]initWithFileURL:[NSURL fileURLWithPath:filePath] fileName:fileName fileHash:fileHash];
    uploadInfo.extno = extno;
    ESUploadTask *task = [uploadMgr upload:info];
    [task progress:YES handler:^(ESUploadTask *t) {
    }];

    [task success:YES handler:^(ESUploadTask *t) {
    }];

    [task failure:YES handler:^(ESUploadTask *t) {
    }];

多任务上传

   NSArray<ESUploadInfo *>infos = @[...];
   NSArray<ESUploadTask *> *tasks = [self.uploadMgr multiUpload:infks];
   [tasks enumerateObjectsUsingBlock:^(ESUploadTask * _Nonnull task, NSUInteger idx, BOOL * _Nonnull stop) {
        [task progress:YES handler:^(ESUploadTask *t) {
        }];

        [task success:YES handler:^(ESUploadTask *t) {
        }];

        [task failure:YES handler:^(ESUploadTask *t) {
        }];

    }];

[ESUploadManager defaultManager]默认为单例模式,也可自行初始化。


# 上传任务管理

ESUploadManager可上次任意文件类型,但只支持视频音频Word/PDF文档PPT文件转码。

# 字段

# baseURL
  • 类型:NSURL
  • 描述:上传服务器域名。
  • 必需:是
# startPath
  • 类型:NSString
  • 描述:开始上传接口路径。
  • 必需:是
# finishPath
  • 类型:NSString
  • 描述:完成上传接口路径。
  • 必需:是
# status
  • 类型:枚举ESUploadStatus
  • 描述:上传状态,参考ESUploadCommon.h
# speed
  • 类型:int64_t
  • 描述:上传速度。
# autoRemoveWhenCompletion
  • 类型:BOOL
  • 描述:上传完成后是否自动删除上传记录,默认为NO。
# tasks
  • 类型:NSMutableArray
  • 描述:所有上传任务。
# progress
  • 类型:NSProgress
  • 描述:上传进度。

# 方法

# - upload:
  • 描述:单任务上传。
  • 参数:ESUploadInfo
  • 用法:
ESUploadInfo *uploadInfo = [[ESUploadInfo alloc]initWithFileURL:[NSURL fileURLWithPath:filePath] fileName:fileName fileHash:fileHash];
ESUploadTask *task = [uploadMgr upload:info];

ESUploadInfo对象的初始化,参考ESUploadInfo.h

# - multiUpload:
  • 描述:多任务上传。
  • 参数:ESUploadInfo数组
  • 用法:
   NSArray<ESUploadInfo *>infos = @[...];
   NSArray<ESUploadTask *> *tasks = [self.uploadMgr multiUpload:infos];
# - start:
  • 描述:开始(恢复)上传某个任务。
  • 参数:上传文件的hash值。
# - startWithTask:
  • 描述:开始(恢复)上传某个任务。
  • 参数:ESUploadTask
# - suspend:handler:
  • 描述:暂停上传某个任务。
  • 参数:上传文件的hash值。
# - cancel:handler:
  • 描述:取消上传某个任务。
  • 参数:上传文件的hash值。
# - remove:handler:
  • 描述:移除上传某个任务。
  • 参数:fileHash:上传文件的hash值,completely:删除沙盒文件
# - totalStart
  • 描述:开始(恢复)上传所有任务
# - totalSuspend:
  • 描述:暂停上传所有任务
# - totalCancel:
  • 描述:取消上传所有任务
# - totalRemove:
  • 描述:移除上传所有任务

# 事件

# - progress:handler:
  • 描述:上传进度回调
# - success:handler:
  • 描述:上传成功回调
# - failure:handler:
  • 描述:上传失败回调

# 上传任务

上传任务ESUploadTask

# 字段

# fileHash
  • 类型:NSString
  • 描述:文件hash值。
# fileName
  • 类型:NSString
  • 描述:文件名。
# fileURL
  • 类型:NSURL
  • 描述:文件沙盒路径。
# resp
  • 类型:NSDictionary
  • 描述:上传成功后的返回数据。
# status
  • 类型:ESUploadStatus
  • 描述:上传状态。
# startDate
  • 类型:NSTimeInterval
  • 描述:上传开始时间戳。
# endDate
  • 类型:NSTimeInterval
  • 描述:上传结束时间戳。
# speed
  • 类型:NSError
  • 描述:上传错误,当status为错误时,有值。
# error
  • 类型:NSError
  • 描述:上传速度。
# progress
  • 类型:NSProgress
  • 描述:上传进度。

# 方法

# - start
  • 描述:开始(恢复)上传任务
# - suspend:
  • 描述:暂停上传任务
# - cancel:
  • 描述:取消上传任务
# - remove:
  • 描述:移除上传任务

# 事件

# - progress:handler:
  • 描述:上传进度回调
# - success:handler:
  • 描述:上传成功回调
# - failure:handler:
  • 描述:上传失败回调

# 上传元数据

ESUploadInfo上传文件信息类。

# 字段

# fileURL
  • 类型:NSURL
  • 描述:文件沙盒路径。
# fileHash
  • 类型:NSString
  • 描述:文件hash值。
# name
  • 类型:NSString
  • 描述:文件名。
# name
  • 类型:NSString
  • 描述:业务系统内对应的资源编号,以便与云端资源关联。
# directives
  • 类型:ESUploadDirectivesInfo,
  • 描述:资源转转码参数,可选,参考ESUploadDirectivesInfo
# uploadType
  • 类型:NSString
  • 描述: (form表单,chunk分片)上传方式,默认是chunk形式。
# fileSize
  • 类型:int64_t
  • 描述: 文件总大小。