Todos os produtos
Search
Central de documentação

Drive and Photo Service:SDK for iOS guide

Última atualização: Jun 28, 2026

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:

Nota

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];
Nota

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];
Nota

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

https://github.com/aliyun/aliyun-pds-objc-sdk

Notas de versão

0.0.2 2022-01-24

  1. Adicionada a capacidade de fazer upload direto de ativos de fotos locais.

  2. Incluída a API de interface de arquivo.

  3. Correção aplicada ao upload e download retomáveis.

  4. Resolvido o problema em que a verificação CRC64 falhava para alguns arquivos.

  5. 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.