OSSClient est le client iOS pour Object Storage Service (OSS). Il fournit des méthodes pour gérer les ressources telles que les buckets et les objets. Avant d'utiliser le SDK pour envoyer des requêtes à OSS, initialisez et configurez une instance OSSClient.
Le cycle de vie d'une instance OSSClient doit correspondre à celui de votre application. Créez une instance OSSClient globale au démarrage de l'application et détruisez-la à la fin.
Initialiser un OSSClient
Un terminal mobile constitue un environnement non fiable. Stocker directement sur le terminal votre AccessKeyId et AccessKeySecret pour signer les requêtes présente un risque de sécurité élevé. Pour renforcer la sécurité, utilisez l'authentification STS (Security Token Service) ou le mode autosigné.
Créez une instance OSSClient en suivant l'une des méthodes ci-dessous.
Créer un OSSClient à l'aide de STS
Le code suivant montre comment créer un OSSClient à l'aide de 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;
Créer un OSSClient à l'aide d'un nom de domaine personnalisé
Le code suivant montre comment créer un OSSClient à l'aide d'un nom de domaine personnalisé.
// 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;
Créer un OSSClient dans un environnement Apsara Stack ou de domaine privé
Le code suivant montre comment créer un OSSClient dans un environnement Apsara Stack ou de domaine privé.
// 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;
Configurer un OSSClient
ClientConfiguration est la classe de configuration d'OSSClient. Utilisez cette classe pour configurer des paramètres tels que le proxy, le délai de connexion et le nombre maximal de connexions.
|
Paramètre |
Description |
Méthode |
|
maxRetryCount |
Nombre maximal de tentatives pour une requête ayant échoué. La valeur par défaut est 3. |
configuration.maxRetryCount |
|
maxConcurrentRequestCount |
Nombre maximal de requêtes simultanées. La valeur par défaut est 5. |
configuration.maxConcurrentRequestCount |
|
enableBackgroundTransmitService |
Indique s'il faut activer les tâches en arrière-plan. Par défaut, cette fonctionnalité est désactivée. |
configuration.enableBackgroundTransmitService |
|
backgroundSesseionIdentifier |
Identifiant personnalisé pour la session en arrière-plan. La valeur par défaut est |
configuration.backgroundSesseionIdentifier |
|
isHttpdnsEnable |
Indique s'il faut activer HttpDNS.
|
configuration.isHttpdnsEnable |
|
timeoutIntervalForRequest |
Délai d'expiration de la requête. La valeur par défaut est de 15 secondes. |
configuration.timeoutIntervalForRequest |
|
timeoutIntervalForResource |
Délai d'expiration de la ressource. La valeur par défaut est de 7 jours. |
configuration.timeoutIntervalForResource |
|
proxyHost |
Adresse hôte du serveur proxy. |
configuration.proxyHost |
|
proxyPort |
Port du serveur proxy. |
configuration.proxyPort |
|
userAgentMark |
En-tête User-Agent dans les requêtes HTTP. |
configuration.userAgentMark |
|
cnameExcludeList |
Les éléments de cette liste ignorent la résolution du nom canonique (CNAME). |
configuration.cnameExcludeList |
|
crc64Verifiable |
Indique s'il faut activer la vérification CRC64 (contrôle de redondance cyclique 64 bits). Valeurs possibles :
|
configuration.crc64Verifiable |
|
isAllowUACarrySystemInfo |
Indique s'il faut autoriser le User-Agent à transporter les informations système. Valeurs possibles :
|
configuration.isAllowUACarrySystemInfo |
|
isFollowRedirectsEnable |
Indique s'il faut activer la redirection HTTP. Valeurs possibles :
|
configuration.isFollowRedirectsEnable |
Le code suivant montre comment utiliser ClientConfiguration pour configurer les paramètres d'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;
Activer la journalisation
Les terminaux mobiles fonctionnent dans des environnements complexes et le SDK OSS peut devenir indisponible dans certaines régions ou à certains moments. Pour aider les développeurs à diagnostiquer les problèmes, le SDK OSS peut enregistrer localement les journaux lorsque la journalisation est activée. Avant d'utiliser OSSClient, initialisez-le et appelez la méthode suivante pour activer la journalisation.
// 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];
Les fichiers journaux sont stockés dans le dossier Caches/OSSLogs du bac à sable (sandbox).
Vous pouvez télécharger les fichiers vers votre propre serveur ou utiliser Alibaba Cloud Simple Log Service pour transférer les fichiers journaux.
OSSTask
-
Tous les appels d'API renvoient un OSSTask.
OSSTask * task = [client getObject:get]; -
Vous pouvez configurer l'OSSTask.
-
Pour implémenter un rappel asynchrone, définissez une continuation pour l'OSSTask.
[task continueWithBlock: ^(OSSTask *task) { // do something ... return nil; }]; -
Pour implémenter un rappel synchrone, attendez la fin de l'OSSTask.
[task waitUntilFinished];
-