全部产品
Search
文档中心

Object Storage Service:Panduan Cepat (iOS SDK)

更新时间:Nov 30, 2025

Topik ini menjelaskan cara menggunakan Object Storage Service (OSS) SDK untuk iOS dalam melakukan operasi umum seperti mengunggah dan mengunduh objek.

Prasyarat

Pastikan Anda telah menginstal iOS SDK. Untuk informasi selengkapnya, lihat Instalasi (iOS SDK).

Proyek demo

Berikut adalah proyek demo yang dapat Anda pelajari untuk membuat bucket, mengunggah file lokal, dan mengunduh objek:

Anda dapat mencoba proyek demo dengan metode berikut:

  • Klon proyek: Jalankan perintah git clone untuk mendapatkan proyek demo.

  • Konfigurasikan parameter.

    • Sebelum menjalankan instance AliyunOSSSwift, konfigurasikan parameter yang diperlukan di file OSSSwiftGlobalDefines.swift.

    • Sebelum menjalankan AliyunOSSSDK, konfigurasikan parameter yang diperlukan di file OSSTestMacros.h.

  • Mulai Security Token Service (STS).

    • Mulai server autentikasi STS lokal dengan menjalankan skrip autentikasi lokal sts.py di direktori sts_local_server proyek dan konfigurasikan parameter AccessKeyId, AccessKeySecret, dan RoleArn.

    • Jalankan layanan HTTP lokal httpserver.py menggunakan Python. Dengan demikian, kode klien dapat mengakses layanan HTTP lokal untuk memperoleh nilai parameter StsToken.AccessKeyId, StsToken.SecretKey, dan StsToken.SecurityToken.

Jalankan proyek demo AliyunOSSSDK-iOS-Example. Hasil berikut akan ditampilkan seperti pada gambar berikut. fig_ios_phpnedemo

Kode contoh

Kode contoh berikut menunjukkan cara mengunggah dan mengunduh objek di platform iOS dan macOS:

  1. Impor paket perangkat lunak OSS.

    Sebelum menggunakan OSS, impor file header yang diperlukan.

    #import <AliyunOSSiOS/OSSService.h>                            
  1. Inisialisasi instance OSSClient.

    1. Otorisasi Akses

      OSS mendukung tiga mode autentikasi: pengaturan teks biasa, penandatanganan mandiri, dan autentikasi STS. Mode autentikasi STS direkomendasikan untuk perangkat seluler. Untuk informasi lebih lanjut, lihat Mode Autentikasi STS.

      1. Dapatkan Kredensial Akses Sementara

        1. Mode Pengaturan Teks Biasa: Gunakan ID AccessKey dan AccessKeySecret untuk autentikasi.

        2. Mode Penandatanganan Mandiri: Hasilkan string tanda tangan untuk autentikasi. Untuk informasi lebih lanjut, lihat Mode Penandatanganan Mandiri.

        3. Mode Autentikasi STS: Gunakan kredensial akses sementara yang disediakan oleh STS untuk autentikasi. Untuk informasi lebih lanjut tentang cara memanggil operasi AssumeRole STS atau menggunakan SDK STS untuk berbagai bahasa pemrograman guna mendapatkan kredensial akses sementara, lihat Gunakan Kredensial Akses Sementara yang Disediakan oleh STS untuk Mengakses OSS.

      2. Gunakan kredensial akses sementara untuk menginisialisasi OSS SDK untuk iOS.

    2. Kode contoh berikut menunjukkan cara menginisialisasi instance OSSClient dalam siklus hidup aplikasi lengkap:

      @interface AppDelegate ()
      @property (nonatomic, strong) OSSClient *client;
      @end
      /**
       * Dapatkan URL STS dan konfigurasikan URL pada server yang dibuat pengguna. 
       */
      #define OSS_STS_URL                 @"oss_sts_url"
      /**
       * Titik akhir wilayah tempat bucket berada. 
       */
      #define OSS_ENDPOINT                @"titik akhir bucket Anda"
      /**
       * Wilayah tempat bucket berada.
       */
      #define OSS_REGION                	@"wilayah bucket Anda"
      
      @implementation AppDelegate
      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
          // Titik override untuk penyesuaian setelah peluncuran aplikasi.
          
          // Inisialisasi instance OSSClient.
          [self setupOSSClient];    
          return YES;
      }
      - (void)setupOSSClient {
          // Inisialisasi credentialProvider yang diperbarui secara otomatis.
          id<OSSCredentialProvider> credentialProvider = [[OSSAuthCredentialProvider alloc] initWithAuthServerUrl:OSS_STS_URL];   
          // Konfigurasikan klien, seperti periode timeout dan resolusi DNS.
          OSSClientConfiguration *cfg = [[OSSClientConfiguration alloc] init];
          cfg.signVersion = OSSSignVersionV4;
          client = [[OSSClient alloc] initWithEndpoint:OSS_ENDPOINT credentialProvider:credentialProvider clientConfiguration:cfg];
          client.region = OSS_REGION;
      }
      Catatan

      Jika aplikasi Anda hanya menggunakan satu bucket di wilayah tertentu, kami sarankan Anda menyetel siklus hidup instance OSSClient sama dengan siklus hidup aplikasi.Wilayah dan Titik Akhir

  2. Buat Bucket

    Kode contoh berikut menunjukkan cara membuat bucket bernama examplebucket:

    // Buat permintaan untuk membuat bucket. 
    OSSCreateBucketRequest * create = [OSSCreateBucketRequest new];
    // Setel nama bucket menjadi examplebucket. 
    create.bucketName = @"examplebucket";
    // Setel daftar kontrol akses (ACL) bucket menjadi private. 
    create.xOssACL = @"private";
    // Setel kelas penyimpanan bucket menjadi Infrequent Access (IA). 
    create.storageClass = OSSBucketStorageClassIA;
    
    OSSTask * createTask = [client createBucket:create];
    
    [createTask continueWithBlock:^id(OSSTask *task) {
        if (!task.error) {
            NSLog(@"berhasil membuat bucket!");
        } else {
            NSLog(@"gagal membuat bucket, kesalahan: %@", task.error);
        }
        return nil;
    }];
    // Tunggu hingga tugas selesai. 
    // [createTask waitUntilFinished];          
    Catatan

    Semua operasi SDK mengembalikan OSSTask. Anda dapat menetapkan aksi lanjutan untuk OSSTask guna memproses hasil secara asinkron, atau memanggil waitUntilFinished untuk memblokir thread saat ini hingga tugas selesai.

  3. Unggah File Lokal

    Kode contoh berikut menunjukkan cara mengunggah file lokal ke OSS:

    OSSPutObjectRequest * put = [OSSPutObjectRequest new];
    // Tentukan nama bucket. Contoh: examplebucket. 
    put.bucketName = @"examplebucket";
    // Tentukan jalur penuh objek. Jangan sertakan nama bucket dalam jalur penuh. Contoh: exampledir/testdir/exampleobject.txt. 
    put.objectKey = @"exampledir/testdir/exampleobject.txt";
    put.uploadingFileURL = [NSURL fileURLWithPath:@"<filePath>"];
    // put.uploadingData = <NSData *>; // Unggah NSData secara langsung. 
    // Unggah NSData secara langsung. 
    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(@"berhasil mengunggah objek!");
        } else {
            NSLog(@"gagal mengunggah objek, kesalahan: %@" , task.error);
        }
        return nil;
    }];
    // Tunggu hingga tugas selesai. 
    // [putTask waitUntilFinished];
  4. Unduh Objek

    Kode contoh berikut menunjukkan cara mengunduh objek tertentu ke komputer lokal:

    OSSGetObjectRequest * request = [OSSGetObjectRequest new];
    // Tentukan nama bucket. Contoh: examplebucket. 
    request.bucketName = @"examplebucket";
    // Tentukan jalur penuh objek. Jangan sertakan nama bucket dalam jalur penuh. Contoh: 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(@"berhasil mengunduh objek!");
            OSSGetObjectResult * getResult = task.result;
            NSLog(@"hasil unduhan: %@", getResult.downloadedData);
        } else {
            NSLog(@"gagal mengunduh objek, kesalahan: %@" ,task.error);
        }
        return nil;
    }];
    // Tunggu hingga tugas selesai. 
    // [task waitUntilFinished];