Este tópico apresenta um guia para integração e uso do SDK do Alibaba Cloud Drive and Photo Service (PDS) para iOS.
Guia de integração
Integrar o SDK
Para integrar o PDS SDK com CocoaPods, adicione pod 'PDS_SDK' ao Podfile e execute o comando pod update para concluir a integração do SDK.
Inicializar o SDK
Antes de inicializar o SDK, verifique se o PDS está ativado e se um domínio foi criado no console do PDS. Para mais informações, consulte Introdução ao PDS.
O código de exemplo a seguir demonstra como inicializar o SDK:
PDSClientConfig *clientConfig = [[PDSClientConfig alloc] init];
clientConfig.userAgent = config.userAgent;//The user agent of the current device
clientConfig.dbName = config.dbName;//Optional. The name of the database
clientConfig.host = config.apiHost;//The API Host. You can obtain it from the console
[PDSClientManager setupWithAccessToken:config.accessToken clientConfig:clientConfig];//The access token is obtained by the server through accessKeyId and accessKeySecret and then sent to the client
Atualização do Access Token:
Observe que, na versão atual, o SDK não gerencia a atualização do Access Token. O usuário do SDK precisa solicitar periodicamente a atualização do Access Token ao seu servidor e transmiti-la ao SDK.
[[PDSClientManager defaultClient] setAccessToken:accessToken];
Fazer upload de arquivos
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];
Fazer upload de arquivos com base em IDs de imagem
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];
Note que o uploadTask criado aqui é uma variável local. Você deve manter sua própria referência a ele. Caso contrário, os callbacks apresentarão problemas após a liberação deste objeto.
Callback para status e progresso da tarefa:
@weakify(self);
[uploadTask setResponseBlock:^(PDSFileMetadata *result, PDSRequestError *requestError, NSString *taskIdentifier) {
@strongify(self);
if (requestError) {//Upload failed
//TODO Error handling
} else {//Upload successful, remove temporary file
[[PDSClientManager defaultClient].file cleanUploadTaskWithTaskIdentifier:taskIdentifier force:YES];
}
} queue:self.transferQueue];
[uploadTask setProgressBlock:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
@strongify(self);
//TODO Progress callback
} queue:self.transferQueue];
Após a conclusão ou falha do upload, caso confirme que não continuará operações como upload retomável neste arquivo, chame o método cleanUploadTaskWithTaskIdentifer para excluir o cache relacionado a essa tarefa de upload.
Fazer download de arquivos
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];
Callback para progresso e status da tarefa:
@weakify(self);
[downloadTask setResponseBlock:^(PDSFileMetadata *_Nullable result, PDSRequestError *_Nullable requestError, NSString *_Nonnull taskIdentifier) {
@strongify(self);
if (result) {//Download successful
}
if (requestError) {//Download failed
}
} queue:self.transferQueue];
[downloadTask setProgressBlock:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
@strongify(self);
//Progress callback
} queue:self.transferQueue];
Operações de API em arquivos
Chame as interfaces comuns de arquivo por meio dos métodos de classe em [PDSClientManager defaultClient].file. As operações de arquivo suportadas atualmente são:
Complete
Crie
Move
Exclua
Copy
Atualize
GetDownloadUrl
GetUploadUrl
GetAsyncTask
Para descrições detalhadas dos parâmetros da interface, consulte Gerenciamento de arquivos.
Código open source
Notas de versão
0.0.2 2022-01-24
Adicionada a capacidade de fazer upload direto de ativos de fotos locais.
Incluída a API de interface de arquivo.
Correção aplicada ao upload e download retomáveis.
Resolvido o problema em que a verificação CRC64 falhava para alguns arquivos.
Ajustado o tratamento inadequado de alguns códigos de erro do servidor.
0.0.1 2021-12-01
Primeira versão, com suporte a upload/download de arquivos e operações básicas de arquivo.