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.
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
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: |
configuration.backgroundSesseionIdentifier |
|
isHttpdnsEnable |
Habilita o HttpDNS.
|
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:
|
configuration.crc64Verifiable |
|
isAllowUACarrySystemInfo |
Permite que o User-Agent inclua informações do sistema. Valores válidos:
|
configuration.isAllowUACarrySystemInfo |
|
isFollowRedirectsEnable |
Habilita o redirecionamento HTTP. Valores válidos:
|
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];
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
-
Todas as chamadas de API retornam um OSSTask.
OSSTask * task = [client getObject:get]; -
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];
-