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

Object Storage Service:OSS SDK for iOSの使用を開始する

最終更新日:Dec 19, 2023

このトピックでは、Object Storage Service (OSS) SDK for iOSを使用して、オブジェクトのアップロードやダウンロードなどの基本的な操作を実行する方法について説明します。

背景情報

OSS SDK For iOSの詳細については、次の例をご参照ください。

git cloneコマンドを実行し、OSS_ACCESSKEY_IDOSS_SECRETKEY_IDなどの必要なパラメーターを設定して、プロジェクトのクローンを作成することもできます。

ios

次の図に示すように、プロジェクトデモを実行します。

fig_ios_phpnedemo

サンプルコード

次のコードは、iOSおよびmacOSプラットフォームでオブジェクトをアップロードおよびダウンロードする方法を示しています。

  1. 必要な参照を追加します。

    #import <AliyunOSSiOS/OSSService.h>
  2. OSSClientインスタンスを初期化します。

    OSSClientインスタンスを初期化するには、エンドポイント、認証モード、およびクライアント設定を指定する必要があります。 3つの認証モードが利用可能です: プレーンテキスト設定、自己署名、およびセキュリティトークンサービス (STS) 認証。 STS認証モードの使用方法の詳細については、「アクセス許可」をご参照ください。

    sts.pyスクリプトファイルで、AccessKeyId、AccessKeySecret、およびRoleArnパラメーターを設定します。 OSS SDK for Pythonを使用して、ローカルHTTPサービスを開始します。 クライアントコードを使用してローカルサービスにアクセスし、StsToken.AccessKeyId、StsToken.SecretKey、およびStsToken.SecurityTokenパラメーターの値を取得します。

    説明

    STSを使用してOSSへのアクセスを許可する方法の詳細については、「STSが提供する一時的な資格情報を使用してOSSにアクセスする」をご参照ください。 AssumeRole操作を呼び出すか、さまざまなプログラミング言語のSTS SDKを使用して、STSから一時的なアクセス資格情報を取得できます。 詳細については、「STS SDKの概要」をご参照ください。 一時的なアクセス資格情報には、セキュリティトークンと、AccessKey IDとAccessKeyシークレットで構成される一時的なAccessKeyペアが含まれます。

    NSString * endpoint = @ "https://oss-cn-hangzhou.aliyuncs.com";
    
    // モバイルデバイスを使用する場合は、STSを使用してOSSClientインスタンスを初期化することを推奨します。 
    id<OSSCredentialProvider> credential = [[OSSFederationCredentialProvider alloc] initWithFederationTokenGetter:^ OSSFederationToken * _Nullable {
        OSSFederationToken * token = [OSSFederationToken new];
        // STSから取得した一時的なAccessKeyペアを指定します。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。 
        token.tAccessKey = @ "AccessKeyId";
        token.tSecretKey = @ "AccessKeySecret";
        // STSから取得したセキュリティトークンを指定します。 
        token.tToken = @ "SecurityToken";
        // 一時的なアクセス資格情報の有効期限を設定します。 
        token.expirationTimeInGMTFormat = @ "Expiration";
        トークンを返します。}];
    
    client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential]; 

    OSSClientインスタンスを使用して、マルチスレッドのアップロードおよびダウンロード要求を開始し、複数のタスクを同時に実行できます。

  3. オブジェクトのアップロード

    OSSコンソールにバケットがある場合、SDK関連の操作ごとにOSSTaskが返されます。 OSSTaskの継続を非同期で完了するように設定するか、waitUntilFinishedを呼び出してタスクが完了するのを待ちます。

    OSSPutObjectRequest * put = [OSSPutObjectRequest new];
    // バケットの名前を指定します。 例: examplebucket. 
    put.bucketName = @ "examplebucket";
    // オブジェクトのフルパスを指定します。 オブジェクトのフルパスにバケット名を含めることはできません。 例: exampledir/testdir/exampleobject.txt。 
    put.objectKey = @ "exampledir/testdir/exampleobject.txt";
    // NSDataを直接アップロードします。 
    put.uploadingData = <NSData *>;
    put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
        NSLog(@ "% lld, % lld, % lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
    };
    OSSTask * putTask = [client putObject:put];
    [putTask continueWithBlock:^ id(OSSTask * task) {
        if (!task.error) {
            NSLog(@ "オブジェクトのアップロード成功!");
        } else {
            NSLog(@ "オブジェクトのアップロードに失敗、エラー: % @" 、task.error);
        }
        nilを返します。}];
    // タスクが完了するまで待ちます。 
    // [putTask waitUntilFinished]; 
  4. 指定したオブジェクトをダウンロードします。

    次のコードは、指定したオブジェクトをNSDataとしてダウンロードする方法の例を示しています。

    OSSGetObjectRequest * request = [OSSGetObjectRequest new];
    // バケットの名前を指定します。 例: examplebucket. 
    request.bucketName = @ "examplebucket";
    // オブジェクトのフルパスを指定します。 オブジェクトのフルパスにバケット名を含めることはできません。 例: exampledir/testdir/exampleobject.txt。 
    request.objectKey = @ "exampledir/testdir/exampleobject.txt";
    request.downloadProgress = ^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
        NSLog(@ "% lld, % lld, % lld", bytesWritten, totalBytesWritten, totalBytesExpectedToWrite);
    };
    OSSTask * getTask = [client getObject:request];
    [getTask continueWithBlock:^ id(OSSTask * task) {
        if (!task.error) {
            NSLog(@ "オブジェクトのダウンロード成功!");
            OSSGetObjectResult * getResult = task.result;
            NSLog(@ "download result: % @", getResult.downloadedData);
        } else {
            NSLog(@ "オブジェクトのダウンロードに失敗、エラー: % @" 、task.error);
        }
        nilを返します。}];
    // タスクが完了するまで待ちます。 
    // [タスクwaitUntilFinished];