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 illustre la création d'un OSSClient via 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 avec 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 domaine privé
Le code suivant explique la création d'un OSSClient dans un environnement Apsara Stack ou 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 définir 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 si les tâches en arrière-plan sont activées. Cette fonctionnalité est désactivée par défaut. |
configuration.enableBackgroundTransmitService |
|
backgroundSesseionIdentifier |
Identifiant personnalisé pour la session en arrière-plan. La valeur par défaut est |
configuration.backgroundSesseionIdentifier |
|
isHttpdnsEnable |
Indique si HttpDNS est activé.
|
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 si la vérification CRC64 (contrôle de redondance cyclique 64 bits) est activée. Valeurs possibles :
|
configuration.crc64Verifiable |
|
isAllowUACarrySystemInfo |
Indique si le User-Agent peut transporter des informations système. Valeurs possibles :
|
configuration.isAllowUACarrySystemInfo |
|
isFollowRedirectsEnable |
Indique si la redirection HTTP est activée. 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 évoluent 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 des journaux lorsque cette fonction 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 sandbox.
Téléchargez les fichiers vers votre propre serveur ou utilisez Alibaba Cloud Simple Log Service pour les transférer.
OSSTask
-
Tous les appels 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];
-