C

CNLiveUploadSDKDemo

 

北京中投视讯 iOS上传SDK1.1.2

产品概述

视讯云上传SDK为您提供基于网络的数据存取服务,使用本SDK,您可以通过网络方便地存储和获取图片、音频、视频、文本等各类数据文件。SDK会将您上传的数据文件以对象(object)的形式组织到存储空间(bucket)里。 您还可以通过此SDK获取上传资源的外链地址。

版本更新说明

2017/12/18(版本号:1.1.2_17/12/18)

  • 完善初始化时权限错误的逻辑
  • API移除BucketName的传入

2017/12/12(版本号:1.1.0_17/12/12)

  • 增加获取上传资源外链地址API
  • 增加获取SP对应的BucketName API
  • 增加获取版本号API

2017/8/20 (版本号:1.0.0)

  • 单块上传
  • 开始分块上传
  • 取消分块上传
SDK功能特性

上传文件,支持图片、音频、文本、视频等各类数据文件。云存储将文件保存在对应的Bucket里。 获取上传资源的外链路径。

系统要求

1、最低支持iOS版本:iOS 8.0 2、支持的CPU架构:armv7,arm64,x86_64

集成方式

在视讯云开放平台下载视讯云上传CNLiveUploadSDK导入SDK,由于是动态库使用的时候需要把Framework 同时添加到 ‘General’->‘Embedded Binaries’中。CNLiveUploadSDK依赖于KS3YunSDK(动态库),将Demo中的KS3YunSDK导入工程中,同时添加到 ‘General’->‘Embedded Binaries’中。

SDK基本使用
  • 初始化视讯云上传SDK
/**
 初始化上传云SDK

 @param appId               在open.cnlive.com网站申请得到的appId
 @param appKey              在open.cnlive.com网站申请得到的appKey
 @param isTestEnvironment   YES:测试环境  NO:正式环境
 */
+ (void)setAppId:(NSString *)appId appKey:(NSString *)appKey isTestEnvironment:(BOOL)isTestEnvironment;

代码示例: [CNLiveUpload setAppId:AppId appKey:AppKey isTestEnvironment:YES];

  • 单块上传 参考Demo中的beginSingleUpload:方法, 单块上传最小支持5M,最大支持为5G
/**
 单块上传

 @param putObjectRequest 指定上传单块的request信息
 @return 返回单块的response信息
 */
- (CNLivePutObjectResponse *)putObject:(CNLivePutObjectRequest *)putObjectRequest;
  • 分块上传

参考Demo中的beginMultipartUpload方法,分块上传最小为5M一块,小于5M请使用单块上传

/**
 上传分块

 @param uploadPartRequest 指定上传分块的request信息
 @return 返回resonse对象(里边有服务返回的数据(具体的参照demo))
 */
- (CNLiveUploadPartResponse *)uploadPart:(CNLiveUploadPartRequest *)uploadPartRequest;

调用这个接口会初始化一个分块上传,response会返回一个CNLiveMultipartUpload 对象,其属性有upload id, upload id 用来标识属于当前上传的具体的块,并且用来标识完成分块上传或者取消分块上传。

  • 取消分块上传

参考Demo中的取消分块上传的使用。

/**
 *  取消分块上传
 *
 *  @param abortMultipartRequest 设置分块文件属性
 *
 *  @return 返回resonse对象(里边有服务返回的数据(具体的参照demo))
 */
- (CNLiveAbortMultipartUploadResponse *)abortMultipartUpload:
(CNLiveAbortMultipartUploadRequest *)abortMultipartRequest;
  • 获取上传资源外链地址
/**
 获取上传资源外链地址
 如果失败回调,可以开辟子线程重新请求此API获取资源外链地址

 @param bucketKey    SP上传Bucket里文件的路径(包括扩展名)
 @param uploadType   上传文件类型:图片CNLiveYun_UploadType_Image和视频     CNLiveYun_UploadType_Video
 @param successBlock 成功回调,返回上传资源外链地址
 @param failureBlock 失败回调,返回错误信息
 */
+ (void)getUploadResourceUrlWithBucketKey:(NSString *)bucketKey uploadType:(CNLiveYun_UploadType)uploadType success:(void (^)(NSString *resUrl))successBlock failure:(void (^)(NSDictionary *error))failureBlock;
使用场景

使用方式 设置对应接口所需的request中相应的callbackUrl,callbackBody和callbackParams即可。 参数说明 callBackUrl: 回调url地址 callBackBody: 回调参数支持魔法变量、自定义参数以及常量 customParams:自定义参数,必须以前缀kss-开头

魔法变量说明:

参数 说明 备注
bucket 文件上传的Bucket Utf-8编码
key 文件的名称 Utf-8编码
etag 文件Md5值经过base64处理
objectSize 文件大小 以字节标识
mimeType 文件类型
createTime 文件创建时间 Unix时间戳表示,1420629372,精确到秒

Callback使用范例:

CNLivePutObjectRequest *putObjRequest = [[CNLivePutObjectRequest alloc] initWithName:kBucketName];
        NSString *fileName = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"jpg"];
        putObjRequest.data = [NSData dataWithContentsOfFile:fileName options:NSDataReadingMappedIfSafe error:nil];
        putObjRequest.filename = [fileName lastPathComponent];
        putObjRequest.callbackBody = @"objectKey=${key}&etag=${etag}&location=${kss-location}&name=${kss-price}";
        putObjRequest.callbackUrl = @"http://127.0.0.1:19090/";// success
        putObjRequest.callbackParams = [NSDictionary dictionaryWithObjectsAndKeys:
                                        @"BeiJing", @"kss-location",
                                        @"$Ten",    @"kss-price",
                                        @"error",   @"kss", nil];// **** last                                         key-value is test error
        [putObjRequest setCompleteRequest];                      
        CNLivePutObjectResponse *response = [[CNLiveClient initialize] putObject:putObjRequest];
常见错误提示

常见失败信息:

errorCode = "sys_1015";
errorMessage = "app \U5f02\U5e38”;   
//appid和bundleID不一致

errorCode = "sys_1002";
errorMessage = "sign error”;     
//appkey和appid不一致