产品
存储
视频服务
人工智能
物联网
基础PaaS
研发运维
企业应用
专有部署
存储
存储服务
对象存储 OBS
稳定、安全、可靠的云存储服务
视频服务
视频应用
视频直播 LIVE
大规模实时转码、低延时的直播服务
视频点播 VOD
视频流畅播放服务
音视频通话 RTC
便捷的跨平台实时音视频互动直播服务
媒体处理 MPC
简洁的云媒体转码及内容合成处理服务
视频工具
视频工具SDK
视频剪辑SDK | 播放SDK
人工智能
内容审核
内容审核
图片审核|文本审核|音频审核|视频审核
人脸与人体识别
人脸人体识别
人脸识别|人体识别|人脸比对|摔倒检测
OCR识别
OCR识别
卡证识别|通用文本识别|车牌识别
图像技术
图像技术
面向图片场景提供的多种人工智能技术
AI开发平台
零门槛AI开发平台
AI能力定制平台
AI市场
模型市场
图片、音频、视频等多场景的算法模型
物联网
物联网视频
帝视物联网视频 SDK
低延时、海量存储的物联网视频监控服务
物联网平台
企业物联网平台
设备管理|设备接入|规则引擎|应用开发
生活物联网平台
生活物联网平台
针对消费级智能设备的物联网平台
物联网边云融合
智能边缘
边云协同操作系统
基础PaaS
网络与CDN
内容分发网络 CDN
安全、稳定、低延时的分发加速服务
P2P内容分发网络 PCDN
利用闲置资源而构建的低成本高品质CDN
动态加速 DCDN
动态获取内容,提升加载速度的加速服务
主站加速WSA
动静混合站点的加速服务
应用开发
云短信 SMS
融合三网,安全可信的短信服务
360PAY
一站式支付解决方案
消息推送 360PUSH
高效、精确、实时的消息推送
研发运维
研发效能
兼容性测试
提供数百款TOP机型的云测服务
真机租用
远程真机租用,流畅体验如手机在手
ios预审
智能扫描、分析、筛查ios审核的被拒风险点
企业应用
视频应用
幕印企业学堂
企业培训|内容付费|知识营销
视图计算
云边融合 AI赋能的智能视图计算
易讲教室直播
视频技术与传统教室融合
企业工具
亿方云企业网盘
在线编辑、文件管理、知识管理
APIcloud
提供安全可靠的加固防护产品及服务
统一身份认证平台
API文档、调试、MOCK一体化协作平台
电子签章
无纸办公,远程签署各种电子合同
安全应用
SSL证书
一站式的 HTTPS 解决方案
三六零天御加固保
提供安全可靠的加固防护产品及服务
专有部署
云计算
360Stack云计算管理平台
规划、建设、运维一体的云计算解决方案
大数据
奇麟大数据
企业级一站式大数据平台
智能网关
奇盾Api网关
全托管的API网关服务
容器服务
360容器管理平台
可对外私有化的容器云平台
AI开发平台
360AI开发平台
全流程机器学习开发平台
更多产品,敬请期待
解决方案
产品解决方案
行业解决方案
产品解决方案
视频
通用直播解决方案
短视频解决方案
公共语音房聊天室解决方案
物联网
儿童手表音视频通话
云端NVR解决方案
数据上云
通用存储解决方案
IoT设备
AI+IPC解决方案
智能门锁解决方案
安防传感解决方案
智能网关解决方案
个护健康解决方案
账号体系
360用户帐号体系解决方案
行业解决方案
智慧城市
智慧社区解决方案
智慧交通解决方案
电商视频解决方案
电商视频解决方案
电商平台收款解决方案
教育
在线教育解决方案
互动课堂解决方案
全屋智能
智慧公寓解决方案
智慧酒店解决方案
家庭智能解决方案
智慧安防解决方案
医疗
健康看护解决方案
智能制造
工业物联网解决方案
游戏
游戏音视频解决方案
更多解决方案,敬请期待
帮助支持
技术社区
关于我们
控制台
登录
注册
SDK管理
云直播
产品文档
常见问题
API文档
云点播
产品文档
快速入门
API文档
CDN
产品文档
API文档
云存储
产品文档
SDK手册
API文档
互动直播
产品文档
API文档
操作指南
SDK管理
播放SDK
上传SDK
剪辑SDK
媒体处理
产品文档
API文档
帝视
产品文档
API文档
操作指南
支付平台
产品列表
产品文档
渠道接入解析
内容审核
产品文档
API文档
OCR识别
产品文档
API文档
人脸与人体识别
产品文档
API文档
SSL证书
产品说明
购买指南
电子签章
产品介绍
接入流程
云短信
接口文档
物联网平台
产品简介
快速入门
幕印
产品介绍
OBS使用教程
生活物联网平台
产品简介
快速入门
图片处理
产品介绍
接口文档
智能视频监控
产品介绍
快速入门
常见问题
易讲教学直播
产品介绍
帮助说明
Android互动直播
版本说明
Windows互动直播
开发文档
版本说明
iOS互动直播
Android推流
开发文档
版本说明
iOS推流
iOS推流SDK开发文档
Android上传SDK
Android上传SDK接入文档
Android上传SDK版本说明
IOS上传SDK
iOS上传sdk开发文档
IOS上传SDK版本说明
Net SDK
iOS
开发文档
版本说明
Android
开发文档
版本说明
IoT SDK
iOS
开发文档
版本说明
Android
开发文档
版本说明
Web
开发文档
版本说明
固件端
开发文档
WEB播放SDK
WEB播放器介绍
跨域请求媒体源失败
QHWW-Player
VCloudPlayer
拍摄SDK
iOS
开发文档
版本说明
Android
开发文档
版本说明
剪辑SDK
iOS
版本说明
开发文档
Android
开发文档
版本说明
投屏SDK
iOS
开发文档
Android
开发文档
播放SDK
iOS
开发文档
版本说明
Android
开发文档
版本说明
Web 上传SDK
首页
>
开发者中心
>
SDK管理
>
IOS上传SDK
>
iOS上传sdk开发文档
# iOS上传SDK开发文档 ## 介绍 视频云以SDK形式提供上传服务,可以帮助开发者快速上传文件并进行管理。SDK包含framework、开发文档。 ## 功能说明 上传SDK提供两种上传形式:本地文件、内存数据,根据实际业务情况使用,上传过程中可取消,设置代理接收进度、上传状态等信息 ## 系统范围 | 系统特性 | 支持范围 | | -------- | ------------ | | 系统版本 | iOS8+ | | 系统架构 | armv7、armv7s、arm64 | ## 业务流程  详细信息请参考:[云存储-产品手册-编程模型](https://zyun.360.cn/developer/doc?did=bcmx)。 ## SDK集成 ### 配置说明 1. 上传功能提供两个framework: QHVCUploadKit.framework该库为静态库(Build Phases->Link Binary With Libraries-> +) QHVCCommonKit.framework该库为动态库(Build Phases->Embed Frameworks-> +) 2. 实际开发中#import `<QHVCUploadKit/QHVCUploader.h>`头文件调用相关接口。 #### SDK初始化 需要调用`[QHVCCommonCoreEntry coreOnAppStart:appId appVer:version deviceId:deviceId model:model optionalParams:nil];`接口,说明如下: appId(也叫businessId)是为业务分配的业务ID(appId获取地址:登录[视频云官网](https://zyun.360.cn/)-控制台-SDK-应用管理-新建应用)【见下图】;version为业务端APP的版本号;deviceId为设备唯一标识;uid为业务方用户标识,只要保证唯一即可;options可选,通常传nil,如有特殊需求详见参数说明。  [点此查看应用ID](https://zyun.360.cn/console/sdk/application) > 对appId和channelID这两个参数的引入,在设计之初目的是为了每个业务有独立的ID,通过appId来获取云端的一些参数控制,特别是视频缓冲策略、P2P行为、硬解码黑白名单以及解码库类型;channelID更多的为数据统计打点的唯一标注,可以通过云点播和云直播的服务标识来获取,以此获取播放数据反馈。UserID的设计是为了业务方和视频云唯一的沟通桥梁,只要保持唯一即可,一般为用户ID的加密字符串,通过UserID可以排查到一个用户的级别的失败日志; #### APPID合法性验证 需要调用 `[QHVCCommonCoreEntry validityCheck:token randNum:randNum authTime:authTime callback:^(QHVCAuthStatus ret, NSString *detail) { }];,接口说明如下: 合法性验证需要用到appId, Access Key(简称AK)和Secret Key(简称SK)。AK、SK获取地址: 登录[视频云官网](https://zyun.360.cn/)-用户中心-秘钥管理【见下图】。 只有appId、Access Key以及Secret Key相匹配,才能通过鉴权,否则将无法正常使用SDK。  [点此查看秘钥](https://zyun.360.cn/console/usercenter/accesskey) ==注意:此接口必须在启动APP后120秒内调用,否则将无法正常使用SDK。== appId使用和SDK初始化时同样的内容,callback可以用来监听合法性验证结果。 计算authorization时需要使用AK、SK以及当前系统的时间戳和随机数。 **为了保证AK、SK的安全,请业务接入时,务必把AK和SK存储在服务端,并且把authorization的计算也放在服务端来做。** 计算authorization的示例代码如下: ``` NSString *randNum = [NSString stringWithFormat:@"%u", arc4random() + 1]; NSString *authTime = [NSString stringWithFormat:@"%lld", [QHVCToolUtils getCurrentDateByMilliscond]/1000]; QHVCGlobalConfig* globalConfig = [QHVCGlobalConfig sharedInstance];//参数配置 NSString *AK = globalConfig.appKey; NSString *SK = globalConfig.appSecret; NSString *paramsStr = [NSString stringWithFormat:@"appid=%@", [QHVCGlobalConfig sharedInstance].appId]; NSString *paramsSign = [QHVCToolUtils getMD5String:[NSString stringWithFormat:@"%@%@", [QHVCToolUtils getMD5String:paramsStr], randNum]]; NSString *authString = [NSString stringWithFormat:@"%@\n%@\n%@\n%@", AK, authTime, randNum, paramsSign]; NSString *sign = [QHVCToolUtils hmacSha1:SK data:authString]; NSString *token = [NSString stringWithFormat:@"%@:%@", AK, sign]; ``` 鉴权状态码: ``` typedef NS_ENUM(NSInteger, QHVCAuthStatus) { QHVCAuthStatus_OK = 1, //鉴权成功 QHVCAuthStatus_FAILED = -11001, //鉴权失败 QHVCAuthStatus_NOT_INVOKED = -11002 //未调用鉴权接口 }; ``` ## 接口说明 ### 上传相关 创建上传对象 ` _uploader = [[QHVCUploader alloc]init];` ` [_uploader setUploaderDelegate:self];` ``` /** * @功能 获取上传类型,目前有表单和分片两种形式,具体使用哪种形式由服务器返回的配置信息决定 * 如果是分片上传,需要调用parallelQueueNum获得队列数,用于计算token * 如果是表单上传,无需调用parallelQueueNum,计算token不需要此参数 * @参数 size 待上传任务数据大小,单位:字节 * @返回值 详见QHVCUploadTaskType */ - (QHVCUploadTaskType)uploadTaskType:(uint64_t)size; /** * @功能 获取分片上传队列数,用于业务计算token * @返回值 分片上传队列数 */ - (NSInteger)parallelQueueNum; /** * @功能 分片上传续传 * @参数 key 通过key管理上传信息 */ - (BOOL)setUploadRecorderKey:(NSString *)key; /** * @功能 两种上传方式,数据在本地uploadFile:,数据在内存中uploadData: * @参数 filePath 待上传文件本地路径 * @参数 data 待上传内存数据 * @参数 fileName 本地文件/内存数据上传到服务器后的文件名 * @参数 token 表单/分片任务计算规则略有差别 */ - (void)uploadFile:(NSString *)filePath fileName:(NSString *)fileName token:(NSString *)token; - (void)uploadData:(NSData *)data fileName:(NSString *)fileName token:(NSString *)token; /** * @功能 取消当前上传任务 */ - (void)cancel; /** * @功能 第三方设置上传域名,上传前设置(必填) * @参数 domain 有效的域名 * (bucket北京地区-上传地址:up-beijing.oss.yunpan.360.cn * bucket上海地区-上传地址:up-shanghai.oss.yunpan.360.cn) */ + (void)setUploadDomain:(NSString *)domain; /** * @功能 设置上传速度 默认不限速(根据实际业务需求选择使用) * @参数 speed kbps */ + (void)setUploadSpeed:(NSInteger)speed; ``` ### 日志相关 开发阶段辅助开发调试,根据实际情况使用 ``` /** * 打开上传日志 * @参数 level 日志等级 */ + (void)openLogWithLevel:(QHVCUploadLogLevel)level; /** * 设置日志输出callback * @参数 callback 回调block */ + (void)setLogOutputCallBack:(void(^)(int loggerID, QHVCUploadLogLevel level, const char *data))callback ``` ###统计相关 ``` //统计相关,请正确设置,利于排查线上问题,在上传前设置 /** * @功能 设置统计信息 * @参数 info @{@"channelId":@"", @"userId":@"" }; */ + (void)setStatisticsInfo:(NSDictionary *)info; ``` ###回调 ``` QHVCUploaderDelegate: /** * @功能 回调上传状态 成功、失败 * @参数 uploader * @参数 status 上传状态 */ - (void)didUpload:(QHVCUploader *)uploader status:(QHVCUploadStatus)status error:(nullable NSError *)error; @optional /** * @功能 上传进度 * @参数 uploader * @参数 progress 上传进度(0.0-1.0) */ - (void)didUpload:(QHVCUploader *)uploader progress:(float)progress; QHVCRecorderDelegate: /** * @功能 保存持久化上传信息 * @参数 key 持久化记录key * @参数 data 上传信息 */ - (void)setRecorder:(NSString *)key data:(NSData *)data; /** * @功能 获取上传信息 * @参数 key 持久化记录key * @返回值 存储的上传信息 */ - (NSData *)fetchRecorder:(NSString *)key; /** * @功能 删除上传信息(上传成功、信息过期) * @参数 key 持久化记录key */ - (void)deleteRecorder:(NSString *)key; ``` ## 错误码说明 |状态码|含义| |:--:|:--| |-105|文件不存在| |-108|不支持文件夹| |-111|Token为空| |-112|上传的内存数据为空| |-113|上传的文件是0字节|
即刻开始使用
只需完成注册与实名认证,即可体验我们的贴心服务
立即使用
请您联系我们
邮箱
g-zyun@360.cn
电话
010-56821952
小安提醒您
试用小安,请确保该账户已通过智汇云实名认证
前往认证中心>>
1对1免费
咨询智汇云专属顾问
为您量身定制产品解决方案
您的姓名 :
手机号 :
公司名称(选填) :
相关产品 :
留言内容 :
需求描述
产品建议
其他
提交
登录后才可以留言哦
立即登录
去注册账号