Todos os produtos
Search
Central de documentação

Object Storage Service:Quick start (iOS SDK)

Última atualização: Jul 03, 2026

Este tópico descreve como usar o OSS SDK for iOS para fazer upload e baixe de objetos.

Pré-requisitos

Antes de começar, verifique se você:

Projetos de demonstração

Os projetos de demonstração a seguir mostram como crie um bucket, fazer upload de um arquivo local e baixar um objeto:

Para execute um projeto de demonstração:

  • Clone os projetos de demonstração com o comando git clone.

  • Configure os parâmetros necessários:

  • Inicie o Security Token Service (STS):

    • Execute o script de autenticação no diretório sts_local_server para iniciar o servidor de autenticação STS local. Em seguida, defina os parâmetros AccessKeyId, AccessKeySecret e RoleArn.

    • Inicie o serviço HTTP local com httpserver.py. O cliente obtém os valores StsToken.AccessKeyId, StsToken.SecretKey e StsToken.SecurityToken desse serviço HTTP local.

Após iniciar a demonstração iOS, o aplicativo oferece pontos de entrada para seleção de imagem (Select), uploads com assinatura personalizada (CustomSign), uploads (Put), downloads (Get), recuperação de miniaturas (GetResizeImage), marca d'água de texto (Watermark) e callbacks de upload (triggerCallback).

Código de exemplo

As etapas a seguir mostram como fazer upload e baixe de objetos no iOS e macOS.

  1. Importe o pacote do OSS.

    Importe o arquivo de cabeçalho necessário antes de chamar qualquer API do OSS:

    #import <AliyunOSSiOS/OSSService.h>
  1. Inicialize uma instância do OSSClient.

    1. Escolha um modo de autenticação.

      O OSS SDK for iOS oferece três modos de autenticação: texto simples, autoassinado e STS. Em aplicativos móveis, use a autenticação STS. Esse método emite credenciais de curta duração que limitam a exposição caso uma chave seja comprometida e permitem rotação sem atualize o aplicativo. Inserir um AccessKey ID e um AccessKey secret diretamente no binário do aplicativo expõe sua conta se houver engenharia reversa e impede a rotação de credenciais sem uma nova versão.

      Para mais informações, consulte Modo de autenticação STS.

      1. Obtenha as credenciais:

        1. Modo de texto simples: autentique-se usando seu AccessKey ID e AccessKey secret diretamente.

        2. Modo autoassinado: gere uma string de assinatura para autenticação. Para mais informações, consulte Modo autoassinado.

        3. Modo de autenticação STS: use credenciais de acesso temporárias emitidas pelo Security Token Service (STS). Chame a API AssumeRole ou utilize os SDKs do STS para obter credenciais temporárias. Para detalhes, consulte Acessar o OSS usando credenciais temporárias do STS.

      2. Use as credenciais para inicializar o OSS SDK for iOS.

    2. O código a seguir inicializa uma instância do OSSClient para todo o ciclo de vida do aplicativo. O OSSAuthCredentialProvider atualize automaticamente as credenciais STS do servidor quando elas expiram.

      @interface AppDelegate ()
      @property (nonatomic, strong) OSSClient *client;
      @end
      /**
       * The URL to obtain STS information. Configure this on your own server.
       */
      #define OSS_STS_URL                 @"oss_sts_url"
      /**
       * The endpoint of the region where the bucket is located.
       */
      #define OSS_ENDPOINT                @"your bucket's endpoint"
      /**
       * The region where the bucket is located.
       */
      #define OSS_REGION                	@"your bucket's region"
      @implementation AppDelegate
      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
          // Override point for customization after application launch.
          // Initialize the OSSClient instance.
          [self setupOSSClient];    
          return YES;
      }
      - (void)setupOSSClient {
          // Initialize a provider that automatically refreshes credentials.
          id<OSSCredentialProvider> credentialProvider = [[OSSAuthCredentialProvider alloc] initWithAuthServerUrl:OSS_STS_URL];   
          // Client-side configurations, such as timeout period and DNS pre-resolution.
          OSSClientConfiguration *cfg = [[OSSClientConfiguration alloc] init];
          cfg.signVersion = OSSSignVersionV4;
          client = [[OSSClient alloc] initWithEndpoint:OSS_ENDPOINT credentialProvider:credentialProvider clientConfiguration:cfg];
          client.region = OSS_REGION;
      }
      Nota

      Se o aplicativo usar um único bucket em uma região, defina o ciclo de vida do OSSClient para corresponder ao ciclo de vida do aplicativo. Consulte Regiões e Endpoints.

  2. Crie um bucket.

    O código a seguir cria um bucket chamado examplebucket:

    // Build a request to create a bucket.
    OSSCreateBucketRequest * create = [OSSCreateBucketRequest new];
    // Set the bucket name to examplebucket.
    create.bucketName = @"examplebucket";
    // Set the access control list (ACL) to private.
    create.xOssACL = @"private";
    // Set the storage class to Infrequent Access (IA).
    create.storageClass = OSSBucketStorageClassIA;
    OSSTask * createTask = [client createBucket:create];
    [createTask continueWithBlock:^id(OSSTask *task) {
        if (!task.error) {
            NSLog(@"create bucket success!");
        } else {
            NSLog(@"create bucket failed, error: %@", task.error);
        }
        return nil;
    }];
    // Wait for the task to complete synchronously.
    // [createTask waitUntilFinished];          
    Nota

    Todas as operações do SDK retornam um objeto OSSTask. Defina um bloco de continuação em um OSSTask para processar o resultado de forma assíncrona ou chame waitUntilFinished para bloquear até que a tarefa seja concluída.

  3. Faça upload de um arquivo local.

    O código a seguir faz upload de um arquivo local para o OSS:

    Parâmetro

    Descrição

    bucketName

    Nome do bucket de destino. Exemplo: examplebucket.

    objectKey

    Caminho completo do objeto, excluindo o nome do bucket. Exemplo: exampledir/testdir/exampleobject.txt.

    uploadingFileURL

    Caminho do arquivo local como um NSURL.

    uploadingData

    Alternativa ao uploadingFileURL: passe NSData diretamente.

    uploadProgress

    Bloco de callback que reporta bytes enviados, total de bytes enviados e total de bytes esperados.

    OSSPutObjectRequest * put = [OSSPutObjectRequest new];
    // Specify the bucket name. Example: examplebucket. 
    put.bucketName = @"examplebucket";
    // Specify the full path of the object. Do not include the bucket name. Example: exampledir/testdir/exampleobject.txt. 
    put.objectKey = @"exampledir/testdir/exampleobject.txt";
    put.uploadingFileURL = [NSURL fileURLWithPath:@"<filePath>"];
    // Alternatively, upload NSData directly. 
    // put.uploadingData = <NSData *>;
    put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
        NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
    };
    OSSTask * putTask = [client putObject:put];
    [putTask continueWithBlock:^id(OSSTask *task) {
        if (!task.error) {
            NSLog(@"upload object success!");
        } else {
            NSLog(@"upload object failed, error: %@" , task.error);
        }
        return nil;
    }];
    // Wait for the task to complete. 
    // [putTask waitUntilFinished];
  4. Baixe um objeto.

    O código a seguir baixa um objeto para o dispositivo local:

    Parâmetro

    Descrição

    bucketName

    Nome do bucket que contém o objeto. Exemplo: examplebucket.

    objectKey

    Caminho completo do objeto, excluindo o nome do bucket. Exemplo: exampledir/testdir/exampleobject.txt.

    downloadProgress

    Bloco de callback que reporta bytes gravados, total de bytes gravados e total de bytes esperados.

    OSSGetObjectRequest * request = [OSSGetObjectRequest new];
    // Specify the bucket name. Example: examplebucket. 
    request.bucketName = @"examplebucket";
    // Specify the full path of the object. Do not include the bucket name. Example: exampledir/testdir/exampleobject.txt. 
    request.objectKey = @"exampledir/testdir/exampleobject.txt";
    request.downloadProgress = ^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
        NSLog(@"%lld, %lld, %lld", bytesWritten, totalBytesWritten, totalBytesExpectedToWrite);
    };
    OSSTask * getTask = [client getObject:request];
    [getTask continueWithBlock:^id(OSSTask *task) {
        if (!task.error) {
            NSLog(@"download object success!");
            OSSGetObjectResult * getResult = task.result;
            NSLog(@"download result: %@", getResult.downloadedData);
        } else {
            NSLog(@"download object failed, error: %@" ,task.error);
        }
        return nil;
    }];
    // Wait for the task to complete. 
    // [task waitUntilFinished];