OSSClient es el cliente de iOS para Object Storage Service (OSS). Proporciona métodos para gestionar recursos como buckets y objetos. Antes de usar el SDK para enviar solicitudes a OSS, inicialice y configure una instancia de OSSClient.
El ciclo de vida de una instancia de OSSClient debe coincidir con el ciclo de vida de su aplicación. Cree una instancia global de OSSClient cuando inicie la aplicación y destruya la instancia cuando la aplicación finalice.
Inicializar un OSSClient
Un dispositivo móvil es un entorno no confiable. Almacenar su AccessKeyId y AccessKeySecret directamente en el dispositivo para firmar solicitudes genera un alto riesgo de seguridad. Para mayor seguridad, utilice la autenticación de Security Token Service (STS) o el modo autofirmado.
Cree una instancia de OSSClient mediante uno de los siguientes métodos.
Crear un OSSClient mediante STS
A continuación se muestra cómo crear un OSSClient mediante 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;
Crear un OSSClient con un nombre de dominio personalizado
A continuación se muestra cómo crear un OSSClient con un nombre de dominio 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;
Crear un OSSClient en un entorno de Apsara Stack o de dominio privado
A continuación se muestra cómo crear un OSSClient en un entorno de Apsara Stack o de dominio 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 un OSSClient
ClientConfiguration es la clase de configuración para OSSClient. Utilice esta clase para configurar parámetros como el proxy, el tiempo de espera de conexión y el número máximo de conexiones.
|
Parámetro |
Descripción |
Método |
|
maxRetryCount |
Número máximo de reintentos para una solicitud con errores. El valor predeterminado es 3. |
configuration.maxRetryCount |
|
maxConcurrentRequestCount |
Número máximo de solicitudes simultáneas. El valor predeterminado es 5. |
configuration.maxConcurrentRequestCount |
|
enableBackgroundTransmitService |
Especifica si se habilitan las tareas en segundo plano. De forma predeterminada, esta función está deshabilitada. |
configuration.enableBackgroundTransmitService |
|
backgroundSesseionIdentifier |
Identificador personalizado para la sesión en segundo plano. El valor predeterminado es |
configuration.backgroundSesseionIdentifier |
|
isHttpdnsEnable |
Especifica si se habilita HttpDNS.
|
configuration.isHttpdnsEnable |
|
timeoutIntervalForRequest |
Intervalo de tiempo de espera de la solicitud. El valor predeterminado es 15 segundos. |
configuration.timeoutIntervalForRequest |
|
timeoutIntervalForResource |
Intervalo de tiempo de espera del recurso. El valor predeterminado es 7 días. |
configuration.timeoutIntervalForResource |
|
proxyHost |
Dirección del host del servidor proxy. |
configuration.proxyHost |
|
proxyPort |
Puerto del servidor proxy. |
configuration.proxyPort |
|
userAgentMark |
Encabezado User-Agent en las solicitudes HTTP. |
configuration.userAgentMark |
|
cnameExcludeList |
Los elementos de esta lista omitirán la resolución de nombre canónico (CNAME). |
configuration.cnameExcludeList |
|
crc64Verifiable |
Especifica si se habilita la verificación de redundancia cíclica de 64 bits (CRC64). Valores válidos:
|
configuration.crc64Verifiable |
|
isAllowUACarrySystemInfo |
Especifica si se permite que User-Agent incluya información del sistema. Valores válidos:
|
configuration.isAllowUACarrySystemInfo |
|
isFollowRedirectsEnable |
Especifica si se habilita la redirección HTTP. Valores válidos:
|
configuration.isFollowRedirectsEnable |
A continuación se muestra cómo utilizar ClientConfiguration para configurar los parámetros de OSSClient.
// 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;
Habilitar el registro
Los dispositivos móviles operan en entornos complejos, y el SDK de OSS puede no estar available en ciertas regiones o momentos. Para ayudar a los desarrolladores a diagnosticar problemas, el SDK de OSS puede registrar información localmente cuando el registro está habilitado. Antes de usar OSSClient, inicialícelo y llame al siguiente método para habilitar el registro.
// 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];
Los archivos de registro se almacenan en la carpeta Caches/OSSLogs del sandbox.
Puede cargar los archivos en su propio servidor o utilizar Alibaba Cloud Simple Log Service para cargar los archivos de registro.
OSSTask
-
Todas las llamadas a la API devuelven un OSSTask.
OSSTask * task = [client getObject:get]; -
Puede configurar OSSTask.
-
Para implementar una devolución de llamada asíncrona, establezca una continuación para OSSTask.
[task continueWithBlock: ^(OSSTask *task) { // do something ... return nil; }]; -
Para implementar una devolución de llamada síncrona, espere a que OSSTask finalice.
[task waitUntilFinished];
-