Swift阿里云上传踩坑之旅
前言
??前段时间公司的项目迭代,加入了上传视频的功能,老大经过调研后决定采用阿里云上传。在集成阿里云上传的过程中踩了了很多坑,在这里做个记录。如果有幸能帮助到你那是极好的,如果没能帮助到你也请轻喷,小生在此谢过了。
文章图片
前期准备工作
- 导入第三方类库:
VODUpload.framework
、AliyunVideoCore.framework
、AliyunOSSiOS.framework
- SDK集成后,打开项目工程并修改以下配置:配置
Build Setting — Linking — Other Linker Flags
,添加-ObjC
。
文章图片
上传步骤
- 请求上传地址加凭证或STS,相关概念请参见相关文档。
- 初始化上传实例,实例化上传有两种方式:上传地址加凭证和STS方式。
- 回调设置,所有的上传状态包括进度,上传成功,上传失败,凭证过期都在这里进行处理。
- 添加上传文件进入上传列表,目前主要支持视频文件和图片文件的上传。
- 启动上传
- 回调处理
- 初始化SDK
??初始化SDK分三种模式:1.明文设置模式(不推荐),2.STS鉴权模式(推荐),3.自签名模式 - STS鉴权模式
【Swift阿里云上传踩坑之旅】
文章图片
STS流程图 - 上传方式
??VOD
(短视频上传),OSS
(文件上传) - 上传成功的返回数据
??VOD
上传返回视频id(字符串),OSS
上传返回文件名(字符串)
-
App
向AppServer
发起获取STSToken
请求 -
AppServer
通过上传SDK向阿里获取STS临时凭证 -
AppServer
给App
返回STS临时凭证(AccessKeyId
、AccessKeySecret
、SecurityToken
、ExpriedTime
) - 添加视频信息
- 通过添加好的视频信息和本地的视频路径去阿里云服务器添加视频,只有添加视频成功才能开始上传
- 通过获取到的临时凭证开始上传视频
- 处理回调
- 上传开始:
(^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为空
文章图片
推荐阅读
- 赠己诗
- 八、「料理风云」
- 西湖游
- 两短篇
- 9531
- NeuVector 会是下一个爆款云原生安全神器吗()
- S8大连侠盗勇士
- 走向天空,走向云(小说)3
- 2018年7月11日|2018年7月11日 星期三 多云转晴(18)
- (全员向连载)云间当铺(一)