Swift阿里云上传踩坑之旅

前言
??前段时间公司的项目迭代,加入了上传视频的功能,老大经过调研后决定采用阿里云上传。在集成阿里云上传的过程中踩了了很多坑,在这里做个记录。如果有幸能帮助到你那是极好的,如果没能帮助到你也请轻喷,小生在此谢过了。

Swift阿里云上传踩坑之旅
文章图片
前期准备工作

  • 导入第三方类库: VODUpload.frameworkAliyunVideoCore.frameworkAliyunOSSiOS.framework
  • SDK集成后,打开项目工程并修改以下配置:配置Build Setting — Linking — Other Linker Flags,添加-ObjC
上传流程
Swift阿里云上传踩坑之旅
文章图片
上传步骤
  1. 请求上传地址加凭证或STS,相关概念请参见相关文档。
  2. 初始化上传实例,实例化上传有两种方式:上传地址加凭证和STS方式。
  3. 回调设置,所有的上传状态包括进度,上传成功,上传失败,凭证过期都在这里进行处理。
  4. 添加上传文件进入上传列表,目前主要支持视频文件和图片文件的上传。
  5. 启动上传
  6. 回调处理
关键词解释
  • 初始化SDK
    ??初始化SDK分三种模式:1.明文设置模式(不推荐),2.STS鉴权模式(推荐),3.自签名模式
  • STS鉴权模式

    【Swift阿里云上传踩坑之旅】
    Swift阿里云上传踩坑之旅
    文章图片
    STS流程图
  • 上传方式
    ?? VOD(短视频上传),OSS(文件上传)
  • 上传成功的返回数据
    ??VOD上传返回视频id(字符串),OSS上传返回文件名(字符串)
具体上传流程(通过STS鉴权模式的VOD上传)
  1. AppAppServer发起获取STSToken请求
  2. AppServer通过上传SDK向阿里获取STS临时凭证
  3. AppServerApp返回STS临时凭证(AccessKeyIdAccessKeySecretSecurityTokenExpriedTime
  4. 添加视频信息
  5. 通过添加好的视频信息和本地的视频路径去阿里云服务器添加视频,只有添加视频成功才能开始上传
  6. 通过获取到的临时凭证开始上传视频
  7. 处理回调
阿里云上传回调
  • 上传开始:(^OnUploadStartedListener) (UploadFileInfo* fileInfo),fileInfo中存放的是视频信息
  • 上传进度:(^OnUploadProgressListener) (UploadFileInfo* fileInfo, long uploadedSize, long totalSize), uploadedSize为上传数据量, totalSize为总文件大小
  • 上传成功:(^OnUploadSucceedListener) (UploadFileInfo* fileInfo)
  • 上传完成: (^OnUploadFinishedListener) (UploadFileInfo* fileInfo, VodUploadResult* result), result存放了视频id或者文件(图片)的文件名
  • 上传失败: (^OnUploadFailedListener) (UploadFileInfo* fileInfo, NSString *code, NSString * message)code为错误码,messgae为错误信息
  • 上传凭证过期:(^OnUploadTokenExpiredListener) ()在这个回调中重新获取上传凭证
  • 重新获取凭证:(^OnUploadRertyResumeListener) ()这个回调表示重新获取上传凭证成功
  • 重新上传:(^OnUploadRertyListener) ()这个回调表示重新开始上传
注意
  • ExpriedTime表示的是临时凭证的过期时间,返回的是过期时间点的时间戳,不是有效时长
  • 视频信息中视频标题和视频介绍为必填项,不能为空且不能为空格
  • 上传视频有7个回调,swift中每个回调必须实现不然会crash
  • 视频信息中的封面图地址本地图片路径,否则返回的封面图URL为空
Swift阿里云上传踩坑之旅
文章图片

    推荐阅读