すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:初期化 (iOS SDK)

最終更新日:Nov 30, 2025

OSSClient は Object Storage Service (OSS) の iOS クライアントです。バケットやオブジェクトなどのリソースを管理するためのメソッドを提供します。SDK を使用して OSS にリクエストを送信する前に、OSSClient インスタンスを初期化して設定する必要があります。

説明

OSSClient インスタンスのライフサイクルは、ご利用のアプリケーションのライフサイクルと一致させる必要があります。アプリケーションの起動時にグローバルな OSSClient インスタンスを作成し、アプリケーションの終了時にインスタンスを破棄します。

OSSClient の初期化

重要

モバイル端末は信頼できない環境です。リクエストに署名するために AccessKeyIdAccessKeySecret を端末に直接保存すると、高いセキュリティリスクが生じます。セキュリティを強化するため、セキュリティトークンサービス (STS) 認証または自己署名モードを使用することを推奨します。

OSSClient インスタンスは、次のいずれかの方法で作成します。

STS を使用した OSSClient の作成

次のコードは、STS を使用して OSSClient を作成する方法の例です。

// yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
NSString *endpoint = @"yourEndpoint";
// STS から取得した一時的な AccessKey ペア。AccessKey ID と AccessKey Secret で構成されます。
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// 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;

カスタムドメイン名を使用した OSSClient の作成

次のコードは、カスタムドメイン名を使用して OSSClient を作成する方法の例です。

// yourEndpoint をカスタムドメイン名に設定します。
NSString *endpoint = @"yourEndpoint";
// STS から取得した一時的な AccessKey ペア。AccessKey ID と AccessKey Secret で構成されます。
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// 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;

Apsara Stack またはプライベートドメイン環境での OSSClient の作成

次のコードは、Apsara Stack またはプライベートドメイン環境で OSSClient を作成する方法の例です。

// yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。
NSString *endpoint = @"yourEndpoint";
// STS から取得した一時的な AccessKey ペア。AccessKey ID と AccessKey Secret で構成されます。
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// STS から取得したセキュリティトークン。
NSString *securityToken = @"yourSecurityToken";
NSString *region = @"yourRegion";

id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
OSSClientConfiguration *configuration = [OSSClientConfiguration new];
// CNAME 解決をスキップします。
configuration.cnameExcludeList = @[endpoint];
configuration.signVersion = OSSSignVersionV4;
OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider clientConfiguration:configuration];
client.region = region;

OSSClient の設定

ClientConfiguration は OSSClient の設定クラスです。このクラスを使用して、プロキシ、接続タイムアウト、最大接続数などのパラメーターを設定します。

パラメーター

説明

メソッド

maxRetryCount

失敗したリクエストの最大リトライ数。 デフォルト値は 3 です。

configuration.maxRetryCount

maxConcurrentRequestCount

最大同時リクエスト数。 デフォルト値は 5 です。

configuration.maxConcurrentRequestCount

enableBackgroundTransmitService

バックグラウンドタスクを有効にするかどうかを指定します。 デフォルトでは、この機能は無効になっています。

configuration.enableBackgroundTransmitService

backgroundSesseionIdentifier

バックグラウンドセッションのカスタム識別子。 デフォルト値は com.aliyun.oss.backgroundsession です。

configuration.backgroundSesseionIdentifier

isHttpdnsEnable

HttpDNS を有効にするかどうかを指定します。

  • true:バージョン 2.10.14 以前では、HttpDNS はデフォルトで有効になっています。

  • false:バージョン 2.10.14 以降では、HttpDNS はデフォルトで無効になっています。

configuration.isHttpdnsEnable

timeoutIntervalForRequest

リクエストのタイムアウト間隔。 デフォルト値は 15 秒です。

configuration.timeoutIntervalForRequest

timeoutIntervalForResource

リソースのタイムアウト間隔。 デフォルト値は 7 日間です。

configuration.timeoutIntervalForResource

proxyHost

プロキシサーバーのホストアドレス。

configuration.proxyHost

proxyPort

プロキシサーバーのポート。

configuration.proxyPort

userAgentMark

HTTP リクエストの User-Agent ヘッダー。

configuration.userAgentMark

cnameExcludeList

このリスト内の要素は CNAME 解決をスキップします。

configuration.cnameExcludeList

crc64Verifiable

64 ビット巡回冗長検査 (CRC64) 検証を有効にするかどうかを指定します。 有効な値:

  • YES:CRC64 検証を有効にします。

  • NO (デフォルト):CRC64 検証を無効にします。

configuration.crc64Verifiable

isAllowUACarrySystemInfo

User-Agent がシステム情報を含むことを許可するかどうかを指定します。 有効な値:

  • YES:User-Agent がシステム情報を含むことを許可します。

  • NO (デフォルト):User-Agent がシステム情報を含むことを防ぎます。

configuration.isAllowUACarrySystemInfo

isFollowRedirectsEnable

HTTP リダイレクトを有効にするかどうかを指定します。 有効な値:

  • YES:HTTP リダイレクトを有効にします。

  • NO (デフォルト):HTTP リダイレクトを無効にします。

configuration.isFollowRedirectsEnable

次のコードは、ClientConfiguration を使用して OSSClient のパラメーターを設定する方法の例です。

// yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
NSString *endpoint = @"yourEndpoint";
// STS から取得した一時的な AccessKey ペア。AccessKey ID と AccessKey Secret で構成されます。
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// STS から取得したセキュリティトークン。
NSString *securityToken = @"yourSecurityToken";
NSString *region = @"yourRegion";

id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
OSSClientConfiguration *configuration = [OSSClientConfiguration new];
// 署名バージョン V4 を使用します。
configuration.signVersion = OSSSignVersionV4;
// 失敗したリクエストの最大リトライ数。
configuration.maxRetryCount = 3;
// 最大同時リクエスト数。
configuration.maxConcurrentRequestCount = 3;
// バックグラウンドタスクを有効にするかどうかを指定します。
configuration.enableBackgroundTransmitService = YES;
// バックグラウンドセッションのカスタム識別子。
configuration.backgroundSesseionIdentifier = @"yourBackgroundSesseionIdentifier";
// HttpDNS を有効にするかどうかを指定します。
configuration.isHttpdnsEnable = YES;
// リクエストのタイムアウト間隔。
configuration.timeoutIntervalForRequest = 15;
// リソースのタイムアウト間隔。
configuration.timeoutIntervalForResource = 24 * 60 * 60;
// プロキシサーバーのホストアドレス。
configuration.proxyHost = @"yourProxyHost";
// プロキシサーバーのポート。
configuration.proxyPort = @8080;
// HTTP リクエストの User-Agent ヘッダー。
configuration.userAgentMark = @"yourUserAgent";
// このリスト内の要素は CNAME 解決をスキップします。
configuration.cnameExcludeList = @[@"yourCname"];
// CRC64 検証を有効にするかどうかを指定します。
configuration.crc64Verifiable = YES;
// User-Agent がシステム情報を含むことを許可するかどうかを指定します。
configuration.isAllowUACarrySystemInfo = YES;
// HTTP リダイレクトを有効にするかどうかを指定します。
configuration.isFollowRedirectsEnable = NO;

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

ロギングの有効化

モバイル端末は複雑な環境で動作するため、OSS SDK は特定のリージョンや時間帯に利用できなくなる場合があります。 開発者が問題を診断しやすくするために、OSS SDK はロギングが有効になっている場合にログ情報をローカルに記録できます。 OSSClient を使用する前に、初期化して次のメソッドを呼び出し、ロギングを有効にしてください。

// ログフォーマット。
//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------------
// ロギングを有効にします。
[OSSLog enableLog];                
説明
  • ログファイルは、サンドボックスの Caches/OSSLogs フォルダに保存されます。

  • ファイルをご自身のサーバーにアップロードするか、Alibaba Cloud の Simple Log Service を使用してログファイルをアップロードできます。

OSSTask

  1. すべての API 呼び出しは OSSTask を返します。

    OSSTask * task = [client getObject:get];
  2. OSSTask を設定できます。

    • 非同期コールバックを実装するには、OSSTask にコンティニュエーションを設定します。

      [task continueWithBlock: ^(OSSTask *task) {
          // 何かを実行します
          ...
          return nil;
      }];
    • 同期コールバックを実装するには、OSSTask が完了するのを待ちます。

      [task waitUntilFinished];