Todos os produtos
Search
Central de documentação

Object Storage Service:Inicialização (iOS SDK)

Última atualização: Jul 03, 2026

O OSSClient é o cliente iOS do Object Storage Service (OSS). Ele fornece métodos para gerenciar recursos como buckets e objetos. Antes de usar o SDK para enviar solicitações ao OSS, inicialize e configure uma instância do OSSClient.

Nota

O ciclo de vida de uma instância do OSSClient deve corresponder ao ciclo de vida do aplicativo. Crie uma instância global do OSSClient na inicialização do aplicativo e destrua-a no encerramento.

Inicializar um OSSClient

Importante

Dispositivos móveis são ambientes não confiáveis. Armazenar seu AccessKeyId e AccessKeySecret diretamente no dispositivo para assinar solicitações gera alto risco de segurança. Para maior segurança, use a autenticação do Security Token Service (STS) ou o modo autoassinado.

Crie uma instância do OSSClient de uma das seguintes maneiras:

Criar um OSSClient usando STS

O código a seguir mostra como criar um OSSClient usando STS.

// Set yourEndpoint to the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
NSString *endpoint = @"yourEndpoint";
// The temporary AccessKey pair obtained from STS, which consists of an AccessKey ID and an AccessKey secret.
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// The security token obtained from STS.
NSString *securityToken = @"yourSecurityToken";
NSString *region = @"yourRegion";

id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
OSSClientConfiguration *configuration = [OSSClientConfiguration new];
configuration.signVersion = OSSSignVersionV4;
OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider clientConfiguration:configuration];
client.region = region;

Criar um OSSClient usando um nome de domínio personalizado

O exemplo abaixo ilustra a criação de um OSSClient com nome de domínio personalizado.

// Set yourEndpoint to a custom domain name.
NSString *endpoint = @"yourEndpoint";
// The temporary AccessKey pair obtained from STS, which consists of an AccessKey ID and an AccessKey secret.
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// The security token obtained from STS.
NSString *securityToken = @"yourSecurityToken";
NSString *region = @"yourRegion";

id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
OSSClientConfiguration *configuration = [OSSClientConfiguration new];
configuration.signVersion = OSSSignVersionV4;
OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider clientConfiguration:configuration];
client.region = region;

Criar um OSSClient em um ambiente Apsara Stack ou de domínio privado

Veja a seguir como criar um OSSClient em ambiente Apsara Stack ou de domínio privado.

// Set yourEndpoint to the endpoint of the region where the bucket is located.
NSString *endpoint = @"yourEndpoint";
// The temporary AccessKey pair obtained from STS, which consists of an AccessKey ID and an AccessKey secret.
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// The security token obtained from STS.
NSString *securityToken = @"yourSecurityToken";
NSString *region = @"yourRegion";

id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
OSSClientConfiguration *configuration = [OSSClientConfiguration new];
// Skip CNAME resolution.
configuration.cnameExcludeList = @[endpoint];
configuration.signVersion = OSSSignVersionV4;
OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider clientConfiguration:configuration];
client.region = region;

Configurar um OSSClient

ClientConfiguration é a classe de configuração do OSSClient. Use esta classe para definir parâmetros como proxy, tempo limite de conexão e número máximo de conexões.

Parâmetro

Descrição

Método

maxRetryCount

Número máximo de novas tentativas para solicitações com falha. Valor padrão: 3.

configuration.maxRetryCount

maxConcurrentRequestCount

Limite de solicitações simultâneas. Valor padrão: 5.

configuration.maxConcurrentRequestCount

enableBackgroundTransmitService

Ativa tarefas em segundo plano. Desativado por padrão.

configuration.enableBackgroundTransmitService

backgroundSesseionIdentifier

Identificador personalizado da sessão em segundo plano. Valor padrão: com.aliyun.oss.backgroundsession.

configuration.backgroundSesseionIdentifier

isHttpdnsEnable

Habilita o HttpDNS.

  • true: HttpDNS ativado por padrão nas versões 2.10.14 e anteriores.

  • false: HttpDNS desativado por padrão nas versões 2.10.14 e posteriores.

configuration.isHttpdnsEnable

timeoutIntervalForRequest

Tempo limite da solicitação. Valor padrão: 15 segundos.

configuration.timeoutIntervalForRequest

timeoutIntervalForResource

Tempo limite do recurso. Valor padrão: 7 dias.

configuration.timeoutIntervalForResource

proxyHost

Endereço do host do servidor proxy.

configuration.proxyHost

proxyPort

Porta do servidor proxy.

configuration.proxyPort

userAgentMark

Cabeçalho User-Agent nas solicitações HTTP.

configuration.userAgentMark

cnameExcludeList

Elementos nesta lista ignoram a resolução de CNAME.

configuration.cnameExcludeList

crc64Verifiable

Ativa a verificação CRC64 (verificação de redundância cíclica de 64 bits). Valores válidos:

  • YES: Ativa a verificação CRC64.

  • NO (padrão): Desativa a verificação CRC64.

configuration.crc64Verifiable

isAllowUACarrySystemInfo

Permite que o User-Agent inclua informações do sistema. Valores válidos:

  • YES: Inclui informações do sistema no User-Agent.

  • NO (padrão): Não inclui informações do sistema no User-Agent.

configuration.isAllowUACarrySystemInfo

isFollowRedirectsEnable

Habilita o redirecionamento HTTP. Valores válidos:

  • YES: Habilita o redirecionamento HTTP.

  • NO (padrão): Desabilita o redirecionamento HTTP.

configuration.isFollowRedirectsEnable

Use o ClientConfiguration para definir os parâmetros do OSSClient conforme o exemplo:

// Set yourEndpoint to the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
NSString *endpoint = @"yourEndpoint";
// The temporary AccessKey pair obtained from STS, which consists of an AccessKey ID and an AccessKey secret.
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// The security token obtained from STS.
NSString *securityToken = @"yourSecurityToken";
NSString *region = @"yourRegion";

id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
OSSClientConfiguration *configuration = [OSSClientConfiguration new];
// Use Signature V4.
configuration.signVersion = OSSSignVersionV4;
// The maximum number of retries for a failed request.
configuration.maxRetryCount = 3;
// The maximum number of concurrent requests.
configuration.maxConcurrentRequestCount = 3;
// Specifies whether to enable background tasks.
configuration.enableBackgroundTransmitService = YES;
// The custom identifier for the background session.
configuration.backgroundSesseionIdentifier = @"yourBackgroundSesseionIdentifier";
// Specifies whether to enable HttpDNS.
configuration.isHttpdnsEnable = YES;
// The request timeout interval.
configuration.timeoutIntervalForRequest = 15;
// The resource timeout interval.
configuration.timeoutIntervalForResource = 24 * 60 * 60;
// The host address of the proxy server.
configuration.proxyHost = @"yourProxyHost";
// The port of the proxy server.
configuration.proxyPort = @8080;
// The User-Agent header in HTTP requests.
configuration.userAgentMark = @"yourUserAgent";
// The elements in this list will skip CNAME resolution.
configuration.cnameExcludeList = @[@"yourCname"];
// Specifies whether to enable CRC64 verification.
configuration.crc64Verifiable = YES;
// Specifies whether to allow the User-Agent to carry system information.
configuration.isAllowUACarrySystemInfo = YES;
// Specifies whether to enable HTTP redirection.
configuration.isFollowRedirectsEnable = NO;

OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider clientConfiguration:configuration];
client.region = region;

Ativar log

Dispositivos móveis operam em ambientes complexos, onde o SDK do OSS pode ficar indisponível em certas regiões ou horários. Para facilitar o diagnóstico, o SDK registra informações de log localmente quando essa funcionalidade está ativa. Inicialize o OSSClient e chame o método abaixo para ativar o log antes de usá-lo.

// Log format.
//2017/10/25 11:05:43:863  [Debug]: 17th time: <NSThread: 0x7f8099108580>{number = 3, name = (null)}
//2017/10/25 11:05:43:863  [Debug]: 15th time: <NSThread: 0x7f80976052c0>
//2017/10/25 11:05:43:863  [Debug]: ----------TestDebug------------
// Enable logging.
[OSSLog enableLog];                
Nota
  • Os arquivos de log ficam armazenados na pasta Caches/OSSLogs do sandbox.

  • Envie os arquivos para seu próprio servidor ou use o Alibaba Cloud Simple Log Service para fazer upload dos logs.

OSSTask

  1. Todas as chamadas de API retornam um OSSTask.

    OSSTask * task = [client getObject:get];
  2. Configure o OSSTask conforme necessário:

    • Para implementar um callback assíncrono, defina uma continuação para o OSSTask.

      [task continueWithBlock: ^(OSSTask *task) {
          // do something
          ...
          return nil;
      }];
    • Para implementar um callback síncrono, aguarde a conclusão do OSSTask.

      [task waitUntilFinished];