全部产品
Search
文档中心

Object Storage Service:Inisialisasi (iOS SDK)

更新时间:Nov 30, 2025

OSSClient adalah klien iOS untuk Object Storage Service (OSS) yang menyediakan metode untuk mengelola resource seperti bucket dan objek. Sebelum menggunakan SDK untuk mengirim permintaan ke OSS, Anda harus terlebih dahulu menginisialisasi dan mengonfigurasi instans OSSClient.

Catatan

Siklus hidup instans OSSClient harus sesuai dengan siklus hidup aplikasi Anda. Buat instans OSSClient global saat aplikasi dimulai, dan hapus instans tersebut saat aplikasi diakhiri.

Inisialisasi OSSClient

Penting

Terminal seluler merupakan lingkungan yang tidak tepercaya. Menyimpan AccessKeyId dan AccessKeySecret secara langsung di terminal untuk menandatangani permintaan menimbulkan risiko keamanan tinggi. Untuk keamanan yang lebih baik, gunakan autentikasi Security Token Service (STS) atau mode tanda tangan sendiri.

Buat instans OSSClient dengan salah satu cara berikut.

Buat OSSClient menggunakan STS

Kode berikut menunjukkan cara membuat OSSClient menggunakan STS.

// Setel yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
NSString *endpoint = @"yourEndpoint";
// Pasangan AccessKey temporary yang diperoleh dari STS, yang terdiri atas ID AccessKey dan rahasia AccessKey.
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// Token keamanan yang diperoleh dari 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;

Buat OSSClient menggunakan nama domain kustom

Kode berikut menunjukkan cara membuat OSSClient menggunakan nama domain kustom.

// Setel yourEndpoint ke nama domain kustom.
NSString *endpoint = @"yourEndpoint";
// Pasangan AccessKey temporary yang diperoleh dari STS, yang terdiri atas ID AccessKey dan rahasia AccessKey.
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// Token keamanan yang diperoleh dari 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;

Buat OSSClient di lingkungan Apsara Stack atau domain privat

Kode berikut menunjukkan cara membuat OSSClient di lingkungan Apsara Stack atau domain privat.

// Setel yourEndpoint ke titik akhir wilayah tempat bucket berada.
NSString *endpoint = @"yourEndpoint";
// Pasangan AccessKey temporary yang diperoleh dari STS, yang terdiri atas ID AccessKey dan rahasia AccessKey.
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// Token keamanan yang diperoleh dari STS.
NSString *securityToken = @"yourSecurityToken";
NSString *region = @"yourRegion";

id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
OSSClientConfiguration *configuration = [OSSClientConfiguration new];
// Lewati resolusi CNAME.
configuration.cnameExcludeList = @[endpoint];
configuration.signVersion = OSSSignVersionV4;
OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider clientConfiguration:configuration];
client.region = region;

Konfigurasi OSSClient

ClientConfiguration adalah kelas konfigurasi untuk OSSClient. Gunakan kelas ini untuk mengonfigurasi parameter seperti server proxy, timeout koneksi, dan jumlah maksimum koneksi.

Parameter

Deskripsi

Metode

maxRetryCount

Jumlah maksimum percobaan ulang untuk permintaan yang gagal. Nilai default adalah 3.

configuration.maxRetryCount

maxConcurrentRequestCount

Jumlah maksimum permintaan konkuren. Nilai default adalah 5.

configuration.maxConcurrentRequestCount

enableBackgroundTransmitService

Menentukan apakah fitur tugas latar belakang diaktifkan. Secara default, fitur ini dinonaktifkan.

configuration.enableBackgroundTransmitService

backgroundSesseionIdentifier

Pengenal kustom untuk sesi latar belakang. Nilai default adalah com.aliyun.oss.backgroundsession.

configuration.backgroundSesseionIdentifier

isHttpdnsEnable

Menentukan apakah HttpDNS diaktifkan.

  • true: HttpDNS diaktifkan secara default untuk versi 2.10.14 dan sebelumnya.

  • false: HttpDNS dinonaktifkan secara default untuk versi 2.10.14 dan setelahnya.

configuration.isHttpdnsEnable

timeoutIntervalForRequest

Interval timeout permintaan. Nilai default adalah 15 detik.

configuration.timeoutIntervalForRequest

timeoutIntervalForResource

Interval timeout resource. Nilai default adalah 7 hari.

configuration.timeoutIntervalForResource

proxyHost

Alamat host server proxy.

configuration.proxyHost

proxyPort

Port server proxy.

configuration.proxyPort

userAgentMark

Header User-Agent dalam permintaan HTTP.

configuration.userAgentMark

cnameExcludeList

Elemen dalam daftar ini akan melewati resolusi canonical name (CNAME).

configuration.cnameExcludeList

crc64Verifiable

Menentukan apakah verifikasi Pemeriksaan redundansi siklik 64-bit (CRC64) diaktifkan. Nilai yang valid:

  • YES: Mengaktifkan verifikasi CRC64.

  • NO (default): Menonaktifkan verifikasi CRC64.

configuration.crc64Verifiable

isAllowUACarrySystemInfo

Menentukan apakah User-Agent diizinkan membawa informasi sistem. Nilai yang valid:

  • YES: Mengizinkan User-Agent membawa informasi sistem.

  • NO (default): Mencegah User-Agent membawa informasi sistem.

configuration.isAllowUACarrySystemInfo

isFollowRedirectsEnable

Menentukan apakah pengalihan HTTP diaktifkan. Nilai yang valid:

  • YES: Mengaktifkan pengalihan HTTP.

  • NO (default): Menonaktifkan pengalihan HTTP.

configuration.isFollowRedirectsEnable

Kode berikut menunjukkan cara menggunakan ClientConfiguration untuk mengonfigurasi parameter OSSClient.

// Setel yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
NSString *endpoint = @"yourEndpoint";
// Pasangan AccessKey temporary yang diperoleh dari STS, yang terdiri atas ID AccessKey dan rahasia AccessKey.
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// Token keamanan yang diperoleh dari STS.
NSString *securityToken = @"yourSecurityToken";
NSString *region = @"yourRegion";

id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
OSSClientConfiguration *configuration = [OSSClientConfiguration new];
// Gunakan Signature V4.
configuration.signVersion = OSSSignVersionV4;
// Jumlah maksimum percobaan ulang untuk permintaan yang gagal.
configuration.maxRetryCount = 3;
// Jumlah maksimum permintaan konkuren.
configuration.maxConcurrentRequestCount = 3;
// Menentukan apakah fitur tugas latar belakang diaktifkan.
configuration.enableBackgroundTransmitService = YES;
// Pengenal kustom untuk sesi latar belakang.
configuration.backgroundSesseionIdentifier = @"yourBackgroundSesseionIdentifier";
// Menentukan apakah HttpDNS diaktifkan.
configuration.isHttpdnsEnable = YES;
// Interval timeout permintaan.
configuration.timeoutIntervalForRequest = 15;
// Interval timeout resource.
configuration.timeoutIntervalForResource = 24 * 60 * 60;
// Alamat host server proxy.
configuration.proxyHost = @"yourProxyHost";
// Port server proxy.
configuration.proxyPort = @8080;
// Header User-Agent dalam permintaan HTTP.
configuration.userAgentMark = @"yourUserAgent";
// Elemen dalam daftar ini akan melewati resolusi CNAME.
configuration.cnameExcludeList = @[@"yourCname"];
// Menentukan apakah verifikasi CRC64 diaktifkan.
configuration.crc64Verifiable = YES;
// Menentukan apakah User-Agent diizinkan membawa informasi sistem.
configuration.isAllowUACarrySystemInfo = YES;
// Menentukan apakah pengalihan HTTP diaktifkan.
configuration.isFollowRedirectsEnable = NO;

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

Aktifkan pencatatan log

Terminal seluler beroperasi di lingkungan yang kompleks, dan SDK OSS mungkin tidak tersedia di wilayah atau waktu tertentu. Untuk membantu developer mendiagnosis masalah, SDK OSS dapat mencatat informasi log secara lokal ketika logging diaktifkan. Sebelum menggunakan OSSClient, inisialisasikan terlebih dahulu dan panggil metode berikut untuk mengaktifkan logging.

// Format log.
//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------------
// Aktifkan logging.
[OSSLog enableLog];                
Catatan
  • File log disimpan di folder Caches/OSSLogs dalam sandbox.

  • Anda dapat mengunggah file tersebut ke server Anda sendiri atau menggunakan Alibaba Cloud Simple Log Service untuk mengunggah file log.

OSSTask

  1. Semua panggilan API mengembalikan OSSTask.

    OSSTask * task = [client getObject:get];
  2. Anda dapat mengonfigurasi OSSTask.

    • Untuk menerapkan callback asinkron, tetapkan continuation untuk OSSTask.

      [task continueWithBlock: ^(OSSTask *task) {
          // lakukan sesuatu
          ...
          return nil;
      }];
    • Untuk menerapkan callback sinkron, tunggu hingga OSSTask selesai.

      [task waitUntilFinished];