Last updated
Was this helpful?
Last updated
Was this helpful?
PLVVodUploadSDK 是易方信息科技股份有限公司提供的可集成于项目中用于 iOS 设备上传视频文件到服务器的 SDK,支持断点续传。使用本 SDK 需要在注册账号,并使用该账号进行登录,上传后的视频文件可在该视频平台上进行查看、剪辑、播放、删除等操作。
PLVVodUploadSDK 的文件目录如下,其中红色虚线方框里的是 SDK 的 public 文件::
上传 SDK 支持 iOS 8.0 以上 iOS 设备,需具备 Xcode 10.0 以上开发环境、CocoaPods 1.5.3 以上。关于如何安装 CocoaPods,文档 "2.快速集成" 的 2.2 有讲。
在 Podfile 文件中新增以下内容:
然后,使用终端工具切换到项目所在路径下,执行如下命令:
以在 AppDelegate
中进行 SDK 登录为例,示例代码如下:
登录失败、或者上传状态的变化,都会通过委托代理的方式通知,代理协议是 PLVUploadClientDelegate
。PLVUploadClient
支持多代理,允许多个类同时进行监听。使用 PLVUploadClient
的方法 -addDelegate:
新增代理,使用方法 -removeDelegate:
移除代理。代码示例如下:
设置 PLVUploadClient
的属性 enableLog
,可用于开启控制台的调试日志,默认 enableLog
为 NO。开启日志代码示例如下:
协议 PLVUploadClientDelegate
包含如下几个代理方法,均为 optional 方法,开发者可按需使用:
使用 PLVUploadClient
的方法 -uploadVideoAtFileURL:
初始化上传任务,参数 fileURL
是上传文件在本地的存储路径 URL。如果任务初始化成功,该方法会返回 nil
,否则会返回一个 NSError
对象。方法声明如下:
注意,文件上传之前必须先拷贝到想要集成上传 SDK 的 app 的沙盒文件夹中来,否则会因为 iOS 权限限制而导致无法访问,所以 fileURL 必须是 app 的沙盒文件夹路径。
如果任务初始化成功,该方法会返回 nil,否则会返回一个 NSError
对象。还可以通过 delegate 的方式获知初始化失败的原因,对应的 delegate 方法是 -prepareUploadError:fileURL:
,示例代码如下:
上传任务按照初始化的顺序,依次添加到上传任务队列中,任务队列最大并发数为 3,超过并发数的任务会进入等待状态,直到有别的任务完成。通过监听 delegate 方法 -waitingUploadTask:
和方法 -startUploadTask:
可以知道任务队列的变化:
PLVUploadVideo
是上传任务的数据模型,属性 vid
是 PLVUploadVideo
对象的唯一标识。通过 PLVUploadClient
的方法 -videoWithVid:
可获取到上传任务队列中某一个 vid 的 PLVUploadVideo
对象,如果该对象不存在,返回 nil。通过方法 -allUploadVideos
可获取到上传任务队列中的所有任务,这两个方法声明如下:
PLVUploadVideo
对象中包含一个 block
属性 uploadProgress
,可通过该属性监听每一个上传任务的上传进度。代码示例如下:
也可以通过 delegate 方法 -uploadTask:progressChange:
进行监听,示例代码如下:
想要中止上传中的任务,可以调用 PLVUploadClient
的方法 -abortUploadWithVid:
,方法声明如下:
调用结束后任务会同步中止,被中止的任务不能恢复,不可再续传,只能通过 6.6.1 的方法重新进行任务初始化。
上传结束,不管成功、失败还是被中止,都会收到 delegate 方法 -didUploadTask:error:
的通知。如果成功,error 为 nil。示例代码如下:
当所有加入队列的上传任务都完成时(成功与失败都算完成),delegate 方法 -didAllUploadTaskComplete
会被调用,示例代码如下:
上传失败时,如果错误码为 PLVClientErrorCodeOSSErrorCanResumeUpload
,可使用 PLVUploadClient
的方法 -retryUploadWithVid:fileURL:
进行续传,方法声明如下:
如果续传任务启动成功,会收到 delegate 方法 -waitingUploadTask:
或方法 -startUploadTask:
的通知,如 6.6.2。如果启动失败,会收到 delegate 方法 -startUploadTaskFailure:
通知。示例代码如下:
除了 6.6.1 中提到的 PLVUploadClient
的方法 -uploadVideoAtFileURL:
,我们还可以使用如下的方法,为上传任务定义更多的参数:
参数 uploadParameter
包含了上传任务的多个自定义参数,包括上传到哪个分类目录下,是否录屏、是否保持源文件、视频文件描述、视频文件标签。除了视频文件的本地存储路径是不可为空的属性,其他属性如果不被设置,都有默认值。PLVUploadParameter
类的各个属性声明如下:
若业务上不需要上传功能,可把上传模块从点播 demo 中移除。移除后,上传功能将无法使用。
将 Podfile 中以下两个库注释掉,然后重新执行 pod install
。
上传模块相关的开源代码位于 PolyvVodSDKDemo/Classes/Upload 文件夹中,将该文件夹中项目中移除。右键菜单选择【Delete】然后选择【Move to Trash】。
上传模块的入口位于首页导航栏右上角,打开 Main.storyboard 文件,将入口按钮删除,如下图:
将以下代码从 AppDelegate.m 文件的 -application:didFinishLaunchingWithOptions:
方法中移除:
并移除相关的头文件引入:
此时如果直接运行项目,会报一下错误:
打开 TARGETS,选择 Build Phases,在 Link Binary With Libraries 中,将 PLVVodUploadSDK.framework 删除即可:
PLVUploadClient
是进行登录、上传请求的操作类,使用 PLVUploadClient
的方法 -loginWithUserId:secretKey:
进行登录,方法声明如下(参数 userId
、secretKey
可登录获取):