edit-icon download-icon

初期化

最終更新日: Jun 03, 2019

OSSクライアントは、OSSのiOSクライアントです。バケットとオブジェクトを操作および管理するための一連のメソッドを呼び出し元に提供します。OSS Android SDKを使用してOSSへのリクエストを開始する前に、まずOSSClientインスタンスを初期化し、必要な設定を完了する必要があります。

OSSクライアントのライフサイクルがアプリケーションのライフサイクルと一貫していることを確認する。アプリケーションの起動時にOSSクライアントを作成し、アプリケーションが終了したらOSSクライアントを破棄する。

エンドポイントを特定する

エンドポイントは、リージョンの中のアリババクラウドOSSのアドレスであります。現在、2つの形式をサポートしています。

エンドポイントタイプ 説明
OSS リージョンアドレス OSS バケット位置しているリージョンのアドレスです。詳細はここ をクリックしてください。
ユーザー定義のドメイン名 ユーザが定義したドメイン名。CNAMEはOSSドメイン名に向かいます。

ここをクリックすると、エンドポイントに関する詳細情報が表示されます。

OSS リージョンアドレス

次の 2 つの方法のいずれかを使用して、OSS バケットが存在するリージョンのアドレスにマッピングされたエンドポイントを検索できます。

  • エンドポイントとリージョンの間のマッピング関係を照会できます。詳細については、OSS アクセスドメイン名をクリックして詳細を表示してください。
  • Alibaba Cloud OSS コンソールにログオンして [Bucket Overview] ページを開き、バケットドメインのサフィックスを見つけます。たとえば、バケットドメインbucket-1.oss-cn-hangzhou.aliyuncs.comのサフィックスoss-cn-hangzhou.aliyuncs.com がインターネット上のバケットのエンドポイントです。

CNAME

CNAME を使用してドメインをバケットにバインドし、ドメインを使用してバケット内のオブジェクトにアクセスできます。

たとえば、new-image.xxxxx.com ドメインを Shenzhen の image という名前のバケットにバインドする必要がある場合、以下を実行します。xxxxx.com のドメインホスティングプロバイダーに問い合わせ、http://new-image.xxxxx.comhttp://image.oss-cn-shenzhen.aliyuncs.com に解決するために使用する新しいドメイン名解決レコードを設定します。レコードタイプは CNAME です。

エンドポイントと秘密鍵証明書を構成する

モバイルデバイスは信頼できない環境です。要求に署名するためにAccessKeyIdAccessKeySecretをモバイルデバイスに格納しないでください。テスト目的でプレーンテキスト設定のみを使用することをお勧めします。ビジネスアプリケーションには、STS認証モードまたは自己署名モードが推奨されます。詳細については、アクセス制御およびDirect Transfer on a Mobile Deviceを参照してください。EndPointとCredentialProviderの設定の例は次のとおりです。

STS認証モードを使用している場合は、期限切れのトークンを自動的に更新するため、OSSAuthCredentialProviderを使用してアプリケーションサーバーにアクセスすることをお勧めします。

詳細については、こちらをクリックしてください

EndPointとCredentialProviderを設定する方法の例を次に示します。

  1. NSString *endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  2. //Access the authentication server directly (we recommended you use this access method because expired tokens are updated automatically).
  3. id<OSSCredentialProvider> credential = [[OSSAuthCredentialProvider alloc] initWithAuthServerUrl:@"An example of an authentication server address is http://abc.com."];
  4. client = [[OSSClient alloc] initWithEndpoint:endPoint credentialProvider:credential];

注意: 認証モードの詳細については、アクセス制御を参照してください。

CNAMEでエンドポイントを設定する

CNAMEをバインドしている場合はバケットには、CNAMEでエンドポイントを設定することができます。例えば:

  1. NSString *endpoint = "http://new-image.xxxxx.com";
  2. ...
  3. client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential];

注意: アップルはATS標準のサポートを実装した後、すべてのendpointURLはHTTPS URLである必要です。 CNAMEは現在のクレデンシャル設定をサポートしていませんので、CNAMEでEndpointを設定することはできません。vモバイルデバイス上のアプリケーション環境は比較的複雑です。OSS SDKは、一部の地域または一定期間、正常に動作しないことがあります。開発者が問題を突き止めるのを助けるために、OSS SDKは、ロギング機能が有効になっているときに、ローカルデバイスにいくつかのログ情報を記録します。ロギングを有効にするには、使用する前にOSSClientを初期化します。次の方法を使用できます。
注意:

  • ログファイルは、サンドボックス内のCaches/OSSLogsフォルダに格納されます。
  • 問題をさらに追跡するために、ログファイルをサーバーにアップロードすることができます。
  • Alibaba Cloud Log Service(SLS)にアクセスしてログファイルをアップロードすることもできます。
  1. //Log formats
  2. //2017/10/25 11:05:43:863 [Debug]: The 17th attempt: <NSThread: 0x7f8099108580>{number = 3, name = (null)}
  3. //2017/10/25 11:05:43:863 [Debug]: The 15th attempt: <NSThread: 0x7f80976052c0>
  4. //2017/10/25 11:05:43:863 [Debug]: ----------TestDebug------------
  5. [OSSLog enableLog];//Run the method to enable logging

ネットワークパラメータを設定する

次のように、初期化プロセス中に詳細なClientConfigurationを設定できます。

  1. NSString *endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
  2. //Access the authentication server directly (we recommended you use this access method because expired tokens are updated automatically).
  3. id<OSSCredentialProvider> credential = [[OSSAuthCredentialProvider alloc] initWithAuthServerUrl:@"An example of an authentication server address is http://abc.com."];
  4. client = [[OSSClient alloc] initWithEndpoint:endPoint credentialProvider:credential];
  5. OSSClientConfiguration * conf = [OSSClientConfiguration new];
  6. conf.maxRetryCount = 3; // The maximum number of retry attempts after a failed network request due to an exception
  7. conf.timeoutIntervalForRequest = 30; // Time-out value of the network requests
  8. conf.timeoutIntervalForResource = 24 * 60 * 60; // The longest time allowed for the resource transmission
  9. client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential clientConfiguration:conf];

OSSTask

APIを呼び出す操作では、次のようにOSSTaskが返されます。

  1. OSSTask * task = [client getObject:get];

非同期コールバックを実装するには、次のようにタスクの継続を設定できます。

  1. [task continueWithBlock: ^(OSSTask *task) {
  2. // do something
  3. ...
  4. return nil;
  5. }];

タスクが次のように終了するのを待つこともできます。

  1. [task waitUntilFinished];