Topik ini menjelaskan cara menggunakan kit pengembangan perangkat lunak (SDK) iOS untuk mengunggah file media lokal ke penyimpanan VOD.
Prasyarat
Anda menggunakan iOS 8.0 atau versi yang lebih baru.
SDK unggah iOS tidak mendukung Swift.
Integrasikan SDK
Metode integrasi
Integrasikan SDK menggunakan CocoaPods (Direkomendasikan)
Jalankan perintah
pod 'VODUpload'untuk menambahkan SDK unggah VOD sebagai dependensi di Podfile Anda.Jalankan perintah
pod repo updateuntuk memperbarui repositori pod.Jalankan perintah
pod installuntuk menginstal SDK unggah VOD.
Integrasikan SDK secara manual
Versi SDK: 1.6.5
Waktu pembaruan: 2022-01-24
Hash MD5 paket: f3551634b53cd1264013db4762f79a14
Alamat unduh: V1.6.5 SDK
Di Xcode, seret VODUpload.framework dan AliyunOSSiOS.framework ke target proyek Anda. Di kotak dialog yang muncul, pilih Copy items if needed.
Tambahkan library dependensi sistem berikut.
AVFoundation.framework
CoreMedia.framework
SystemConfiguration.framework
MobileCoreServices.framework
libresolv.9.tbd
Konfigurasi proyek
Setelah Anda mengintegrasikan SDK, buka proyek Anda dan ubah konfigurasi sebagai berikut.
Di bilah menu, klik Build Setting > Linking > Other Linker Flags.
Tambahkan -Objc.
Pengaturan dasar
Inisialisasi instans unggah
Pertama, pahami proses unggah keseluruhan untuk unggahan sisi client. Kemudian, deploy layanan otorisasi berdasarkan metode otorisasi yang Anda pilih:
Jika Anda menggunakan upload URL dan credential, peroleh upload URL dan credential dari layanan otorisasi Anda.
Jika Anda menggunakan token Security Token Service (STS), peroleh token STS dari layanan otorisasi Anda.
Menginisialisasi instans unggah melibatkan dua langkah: mendeklarasikan callback inisialisasi dan menginisialisasi instans tersebut.
Deklarasikan properti
VODUploadClient. Properti ini tidak boleh berupa variabel lokal.Inisialisasi instans unggah.
Metode upload URL dan credential
CatatanUntuk menggunakan upload URL dan credential, panggil metode
inituntuk inisialisasi.Jangan atur upload URL dan credential selama inisialisasi. Setelah unggahan dimulai, callback
OnUploadStartedListenerdipicu. Panggil metodesetUploadAuthAndAddress:uploadAuth:uploadAddress:dalam callback ini untuk mengatur URL dan credential.Saat credential kedaluwarsa, callback
OnUploadTokenExpiredListenerdipicu. Panggil metoderesumeWithAuthdan berikan credential unggah baru untuk melanjutkan unggahan.
Metode token STS
CatatanUntuk menginisialisasi menggunakan token STS, panggil metode
initdan berikan kredensial STS sementara menggunakan metodesetKeyId:accessKeySecret:secretToken:expireTime:listener:.Saat token kedaluwarsa, callback
OnUploadTokenExpiredListenerdipicu. Panggil metoderesumeWithToken:accessKeySecret:secretToken:expireTime:dan berikan token STS baru untuk melanjutkan unggahan.
Atur callback untuk menerima pesan tentang event penting selama proses unggahan.
Atur objek
VODUploadListener. Objek ini merupakan kelas callback untuk status unggahan. Anda perlu mengatur metode callback berikut:Bangun parameter unggahan berdasarkan jenis file, seperti audio, video, atau gambar.
CatatanParameter unggahan untuk file audio atau video dan file gambar sedikit berbeda. Client tidak mendukung unggahan aset media pendukung.
Parameter file audio dan video
Buat fungsi permintaan unggahan untuk menambahkan file audio atau video ke daftar unggahan.
Deskripsi VodInfo
Setelah Anda menambahkan file, SDK membungkus file tersebut menjadi objek
UploadFileInfo. Strukturnya sebagai berikut:CatatanUntuk mengunggah video dari album foto, gunakan jalur mutlak video yang dipilih sebagai jalur file untuk unggahan.
Parameter file gambar
Mulai unggahan.
Panggil
startuntuk memulai unggahan.[self.uploader start];Setelah metode ini dipanggil, callback
OnUploadStartedListenerdipicu. Jika Anda menggunakan upload URL dan credential, Anda harus mengatur upload URL dan credential dalam metode callback ini. Contoh kodenya sebagai berikut:[weakSelf.uploader setUploadAuthAndAddress:fileInfo uploadAuth:weakSelf.uploadAuth uploadAddress:weakSelf.uploadAddress];Setelah file mulai diunggah, callback
OnUploadProgressListenermulai menyinkronkan kemajuan unggahan.Parameter callback mencakup ukuran bagian yang telah diunggah (
uploadedSize) dan ukuran total file (totalSize).Setelah file berhasil diunggah, callback
OnUploadFinishedListenermengembalikan informasi file yang diunggah (UploadFileInfo) dan hasil unggahan (VodUploadResult).Objek
VodUploadResultberisi properti berikut:@property (nonatomic, copy) NSString* videoId; @property (nonatomic, copy) NSString* imageUrl;CatatanProperti
videoIdhanya dikembalikan setelah video berhasil diunggah menggunakan token STS. PropertiimageUrlhanya dikembalikan setelah gambar berhasil diunggah menggunakan token STS. Jika Anda menggunakan upload URL dan credential,videoIddanimageUrltidak dikembalikan. Anda dapat memperoleh nilai-nilai ini saat meminta upload URL dan credential.
Hasil eksekusi
Setelah video diunggah, videoId dikembalikan. Gunakan videoId ini untuk memperoleh URL pemutaran. Untuk informasi lebih lanjut, lihat Peroleh URL pemutaran.
Setelah gambar diunggah, imageUrl dikembalikan. Jika Anda mengaktifkan penandatanganan URL, imageUrl memiliki waktu hidup (TTL). Untuk informasi lebih lanjut, lihat Konfigurasikan penandatanganan URL.
Manajemen antrian
VODUploadClient mendukung penambahan beberapa file untuk unggahan berurutan dan menyediakan metode berikut untuk mengelola antrian unggahan:
Meskipun VODUploadClient mendukung unggahan beberapa file, Anda harus mengatur credential dan URL unggahan untuk setiap file secara individual jika menggunakan metode tersebut. Mengingat kompleksitas kode untuk unggahan multi-file, kami menyarankan agar Anda hanya menambahkan dan mengunggah satu file dalam satu waktu.
Hapus file dari antrian unggahan. Jika file sedang diunggah, unggahan dibatalkan, dan file berikutnya dalam antrian mulai diunggah secara otomatis.
- (BOOL)deleteFile:(int) index;Bersihkan antrian unggahan. Jika file sedang diunggah, unggahan dibatalkan.
- (BOOL)clearFiles;Peroleh daftar file dalam antrian unggahan.
- (NSMutableArray<UploadFileInfo *> *)listFiles;Tandai file sebagai dibatalkan. File tetap berada dalam daftar unggahan. Jika file sedang diunggah, unggahan dibatalkan, dan file berikutnya dalam antrian mulai diunggah secara otomatis.
- (BOOL)cancelFile:(int)index;Lanjutkan unggahan file yang dibatalkan. Unggahan dimulai secara otomatis.
- (BOOL)resumeFile:(int)index;
Kontrol unggahan
Hentikan unggahan. Jika file sedang diunggah, unggahan dibatalkan.
- (BOOL)stop;CatatanSetelah Anda menghentikan unggahan, Anda dapat memanggil
resumeFileuntuk melanjutkan unggahan file tersebut, atau membersihkan antrian dan menambahkan kembali file tersebut untuk memulai ulang unggahan.Jeda unggahan.
- (BOOL)pause;Lanjutkan unggahan.
- (BOOL)resume;
Penanganan callback
Kegagalan unggahan
Jika unggahan gagal, callback
OnUploadFailedListenerdipicu. Dalam metode callback ini, Anda dapat melihat penyebab kegagalan dari parametercodedanmessageserta menampilkan notifikasi di halaman. Untuk informasi lebih lanjut tentang kode kesalahan, lihat Kode kesalahan dan Kode kesalahan OSS.Penanganan credential kedaluwarsa
Jika credential unggahan atau token STS kedaluwarsa, callback
OnUploadTokenExpiredListenerdipicu. Dalam metode callback ini, mintalah credential unggahan baru atau token STS dari server aplikasi Anda dan panggil salah satu metode berikut untuk melanjutkan unggahan.Atur ulang credential unggahan
- (BOOL)resumeWithAuth:(NSString *)uploadAuth;Atur ulang token STS
- (BOOL)resumeWithToken:(NSString *)accessKeyId accessKeySecret:(NSString *)accessKeySecret secretToken:(NSString *)secretToken expireTime:(NSString *)expireTime;
Penanganan timeout
Jika unggahan mengalami timeout, callback
OnUploadRertyListenerdipicu, dan unggahan secara otomatis dicoba ulang. Dalam metode callback ini, Anda dapat menampilkan notifikasi di halaman atau memanggil metodestopuntuk menghentikan unggahan. Anda juga dapat mengatur propertimaxRetryCountuntuk menentukan jumlah maksimum percobaan ulang. Jika unggahan dapat dilanjutkan setelah percobaan ulang timeout, callbackOnUploadRertyResumeListenerdipicu, dan unggahan dilanjutkan.
Pengaturan lanjutan
VODUploadClient mendukung pengaturan lanjutan, seperti akselerasi unggahan, transkoding unggahan, percobaan ulang timeout, pengaturan lokasi folder cache, unggahan yang dapat dilanjutkan, unggahan multi-bagian, dan pengaturan wilayah layanan VOD. Bagian berikut memberikan contoh.
Akselerasi unggahan
Saat Anda perlu mengunggah file besar (dalam satuan gigabyte atau terabyte) atau melakukan unggahan cross-region, seperti mengunggah video dari Tiongkok daratan ke alamat penyimpanan di wilayah penyimpanan Singapura, Anda dapat mengaktifkan fitur akselerasi unggahan. Untuk informasi lebih lanjut, lihat cara mengaktifkan fitur tersebut. Setelah Anda mengaktifkan fitur tersebut, Anda harus menambahkan pasangan key-value yang diperlukan ke string UserData dalam konfigurasi vodInfo pada instans unggahan. String ini harus dalam format JSON. Contoh konfigurasinya sebagai berikut:
/**
Atur data kustom di VodInfo.
*/
@property (nonatomic, copy) NSString *UserData;
vodInfo.UserData = "{\"Type\":\"oss\",\"Domain\":\"oss-accelerate.aliyuncs.com\"}";Deskripsi parameter
Nama | Type | Deskripsi |
Type | string | Jenis akselerasi unggahan yang diaktifkan. Hanya `oss` yang didukung. |
Domain | string | Nama domain yang dipercepat untuk bucket pengguna. Protokol default adalah HTTPS. Catatan Gunakan nama domain yang dipercepat yang ditetapkan setelah Anda mengaktifkan fitur tersebut, seperti vod-*******.oss-accelerate.aliyuncs.com. |
Transkoding unggahan
/**
Menentukan apakah file akan ditranskode di server setelah diunggah. Nilai default adalah YES. Untuk menentukan format output untuk transkoding video, lihat Transkoding video.
*/
@property (nonatomic, assign) BOOL transcode;Timeout dan percobaan ulang
/**
Jumlah maksimum percobaan ulang. Nilai default adalah INT_MAX.
*/
@property (nonatomic, assign) uint32_t maxRetryCount;
/**
Periode timeout.
*/
@property (nonatomic, assign) NSTimeInterval timeoutIntervalForRequest;Atur lokasi folder cache
/**
Lokasi folder cache.
*/
@property (nonatomic, copy) NSString * recordDirectoryPath;Unggahan yang dapat dilanjutkan
/**
Menentukan apakah kemajuan unggahan direkam untuk unggahan yang dapat dilanjutkan. Nilai default adalah YES.
*/
@property (nonatomic, assign) BOOL recordUploadProgress;Unggahan multi-bagian
/**
Ukuran bagian. Nilai default adalah 1024 * 1024.
*/
@property (nonatomic, assign) NSInteger uploadPartSize;Atur wilayah layanan VOD
/**
Wilayah VOD. Nilai default adalah "cn-shanghai".
*/
@property (nonatomic, copy) NSString *region;