接入指南
接入SDK
通过cocoapods引入PDS SDK,只需要在Podfile中加入
pod 'PDS_SDK'
然后执行命令pod update
即可接入SDK
初始化SDK
使用SDK前提是您已经开通PDS服务, 并且在控制台创建了域实例。参见快速搭建云盘服务
SDK初始化代码
PDSClientConfig *clientConfig = [[PDSClientConfig alloc] init];
clientConfig.userAgent = config.userAgent;//当前设备的UA
clientConfig.dbName = config.dbName;//数据库名称,可选
clientConfig.host = config.apiHost;//API Host,需要从控制台中获取
[PDSClientManager setupWithAccessToken:config.accessToken clientConfig:clientConfig];//accessToken是服务端通过accessKeyId和accessKeySecret获取以后下发给客户端的
access token刷新
需要注意的是,在目前版本中SDK不负责刷新accessToken。需要SDK适用方从自己的服务端那边定时请求刷新accessToken并传给SDK。
[[PDSClientManager defaultClient] setAccessToken:accessToken];
上传普通文件
PDSDownloadUrlRequest *request = [[PDSDownloadUrlRequest alloc] initWithDownloadUrl:taskInfo.downloadUrl
destination:filePath
fileSize:[taskInfo.fileSize unsignedLongLongValue]
fileID:taskInfo.fileId
hashValue:taskInfo.hashValue
hashType:PDSFileHashTypeCrc64
driveID:taskInfo.driveId
shareID:taskInfo.shareId];
downloadTask = [[PDSClientManager defaultClient].file downloadUrl:request taskIdentifier:taskInfo.taskId];
直接通过照片ID上传文件
PDSUploadPhotoRequest *request = [[PDSUploadPhotoRequest alloc] initWithLocalIdentifier:localIdentifier
parentFileID:taskInfo.parentId
driveID:taskInfo.driveId
shareID:taskInfo.shareId
fileName:taskInfo.fileName];
uploadTask = [[PDSClientManager defaultClient].file uploadPhotoAsset:request taskIdentifier:taskInfo.taskId];
注意,这里创建的uploadTask是个局部变量,使用方需要自己持有对它的引用,不然这个对象被释放以后回调会出问题。
完成和进度回调
@weakify(self);
[uploadTask setResponseBlock:^(PDSFileMetadata *result, PDSRequestError *requestError, NSString *taskIdentifier) {
@strongify(self);
if (requestError) {//上传失败
//TODO 错误处理
} else {//上传成功,移除临时文件
[[PDSClientManager defaultClient].file cleanUploadTaskWithTaskIdentifier:taskIdentifier force:YES];
}
} queue:self.transferQueue];
[uploadTask setProgressBlock:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
@strongify(self);
//TODO 进度回调
} queue:self.transferQueue];
注意,上传完成或者失败以后,如果确认之后不会再继续对这个文件进行断点续传等操作,需要调用cleanUploadTaskWithTaskIdentifer方法删除这个上传任务的相关缓存。
下载文件
PDSDownloadTask *downloadTask = nil;
PDSDownloadUrlRequest *request = [[PDSDownloadUrlRequest alloc] initWithDownloadUrl:taskInfo.downloadUrl
destination:filePath
fileSize:[taskInfo.fileSize unsignedLongLongValue]
fileID:taskInfo.fileId
hashValue:taskInfo.hashValue
hashType:PDSFileHashTypeCrc64
driveID:taskInfo.driveId
shareID:taskInfo.shareId];
downloadTask = [[PDSClientManager defaultClient].file downloadUrl:request taskIdentifier:taskInfo.taskId];
进度和完成回调
@weakify(self);
[downloadTask setResponseBlock:^(PDSFileMetadata *_Nullable result, PDSRequestError *_Nullable requestError, NSString *_Nonnull taskIdentifier) {
@strongify(self);
if (result) {//下载成功
}
if (requestError) {//下载失败
}
} queue:self.transferQueue];
[downloadTask setProgressBlock:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
@strongify(self);
//进度回调
} queue:self.transferQueue];
文件操作API
常用的文件接口可以通过`[PDSClientManager defaultClient].file`下面的类方法进行调用。目前支持的文件操作包括
Complete
Create
Move
Delete
Copy
Update
GetDownloadUrl
GetUploadUrl
GetAsyncTask
具体的接口说明见[阿里云官方文档](https://help.aliyun.com/document_detail/440389.html)
开源地址
https://github.com/aliyun/aliyun-pds-objc-sdk
更新日志
0.0.2 2022-01-24
1. 增加直接上传本地照片asset的功能
2. 增加文件接口API
3. 修复上传下载断点续传
4. 修复部分文件CRC64校验失败的问题
5. 修复部分服务端错误代码没有正确处理的问题
0.0.1 2021-12-01
1. 第一版,支持文件上传下载/基本文件操作