On-Demand Resources: apa itu, mekanisme permintaan dan penyimpanan sumber daya

Penulis: IT Sectr Diterbitkan: 2026-04-17 Waktu membaca: 9 mnt

On-Demand Resources " adalah teknologi Apple untuk pemuatan konten aplikasi secara tertunda. Alih-alih menyertakan semua sumber daya dalam paket instalasi, pengembang menempatkannya di server App Store dan memintanya sesuai kebutuhan. Menurut Apple ODR Guide, hal ini memungkinkan pengurangan ukuran instalasi awal dan penambahan konten baru tanpa memperbarui versi aplikasi.

Poin Utama

  • On-Demand Resources " mekanisme pemuatan sumber daya sesuai permintaan setelah instalasi aplikasi
  • Sumber daya disimpan di server Apple dan diminta melalui NSBundleResourceRequest
  • Tag mengelompokkan sumber daya berdasarkan blok fungsional aplikasi
  • Prefetching memungkinkan pemuatan sumber daya lebih awal untuk meningkatkan UX
  • Kuota penyimpanan terbatas dan memerlukan pemantauan oleh pengembang

Apa itu On-Demand Resources di iOS

On-Demand Resources (ODR) " adalah sistem manajemen konten yang terintegrasi di iOS, tvOS, dan macOS. Ini memungkinkan pengembang untuk membagi sumber daya aplikasi menjadi wajib (termasuk dalam paket instalasi) dan dapat dimuat sesuai permintaan (disimpan di App Store dan diunduh saat diperlukan).

Konsep dasar ODR

Sistem ODR beroperasi dengan tiga entitas kunci: tag, paket sumber daya, dan permintaan. Tag adalah string pengenal yang menyatukan sekelompok file. Paket sumber daya adalah kumpulan data yang terkait dengan tag. Permintaan adalah panggilan terprogram NSBundleResourceRequest yang memulai pemuatan paket.

Siklus hidup permintaan sumber daya

Pemuatan sumber daya melalui beberapa tahap: inisialisasi permintaan dengan menentukan tag, pemeriksaan ketersediaan di penyimpanan lokal, pengunduhan dari server Apple jika tidak ada, pemberitahuan aplikasi tentang kesiapan, dan pembebasan sumber daya setelah digunakan. Sistem secara otomatis mengelola caching dan penghapusan sumber daya yang tidak digunakan.

TahapTindakan SistemWaktu Eksekusi
InisialisasiMembuat NSBundleResourceRequest dengan tagSeketika
Pemeriksaan cacheMencari sumber daya di penyimpanan lokal0,1–0,5 dtk
PengunduhanMengunduh dari CDN AppleTergantung ukuran
PemberitahuanMemanggil completion handler atau delegasiSeketika
PembebasanMenandai sumber daya sebagai dapat dihapus oleh sistemAtas permintaan iOS

Bagaimana ODR bekerja di iOS

Mekanisme ODR didasarkan pada layanan latar belakang yang mengelola permintaan sumber daya dari penyimpanan cloud App Store. Ketika aplikasi meminta sebuah tag, sistem memeriksa apakah sumber daya ada di cache lokal. Jika tidak " memulai pengunduhan melalui sesi URL latar belakang dengan dukungan untuk melanjutkan saat putus koneksi.

Mengelola permintaan melalui NSBundleResourceRequest

swift
import Foundation

class ResourceManager {
    let odrRequest = NSBundleResourceRequest(tags: ["level-3"])

    func loadLevel3() {
        odrRequest.conditionallyBeginAccessingResources { available in
            if available {
                self.startLevel3()
            } else {
                self.odrRequest.beginAccessingResources { error in
                    guard error == nil else { return }
                    self.startLevel3()
                }
            }
        }
    }

    func releaseResources() {
        odrRequest.endAccessingResources()
    }
}

Metode conditionallyBeginAccessingResources memeriksa ketersediaan sumber daya di cache tanpa pemuatan segera. Jika indikator ketersediaan positif " aplikasi melanjutkan pekerjaan tanpa penundaan. Jika sumber daya tidak ada, beginAccessingResources memulai pengunduhan dengan indikator kemajuan melalui properti progress.

Pemuatan latar belakang dan prioritas

Sistem iOS sendiri mengelola prioritas pemuatan sumber daya ODR tergantung pada aktivitas aplikasi saat ini. Jika aplikasi berada di latar depan, pemuatan dilakukan dengan prioritas tinggi. Di latar belakang, iOS dapat menunda pemuatan atau menjedanya saat baterai rendah.

  • Prioritas tinggi " pemuatan segera untuk sumber daya yang langsung dibutuhkan
  • Prioritas rendah " pemuatan tertunda untuk prefetching dan caching awal
  • Latar belakang " pemuatan hanya dengan Wi-Fi aktif dan baterai mencukupi

Jenis sumber daya dan tag ODR

Sumber daya ODR dapat mencakup gambar, video, file audio, sprite, data level, dan file lain yang tidak kritis untuk menjalankan aplikasi. Setiap sumber daya terikat pada satu atau beberapa tag yang menentukan afiliasinya dengan blok fungsional.

Penandaan konten di Xcode

Di Xcode, tag dikonfigurasi melalui inspector Resource Tags di tab Target Membership. Pengembang menentukan untuk setiap file dalam proyek apakah itu bagian dari bundel utama atau dimuat melalui tag. Satu file dapat menjadi milik beberapa tag, memungkinkan penggunaan kembali sumber daya di berbagai bagian aplikasi.

xml
<!-- Contoh konfigurasi Resource Tags di Info.plist -->
<key>NSBundleResourceRequestTags</key>
<dict>
    <key>level-3</key>
    <array>
        <string>levels/level3.scnassets</string>
        <string>textures/level3_tex.png</string>
    </array>
</dict>

Kategori tag berdasarkan masa pakai

Apple membedakan tiga kategori tag ODR tergantung pada berapa lama sumber daya harus disimpan di perangkat. Initial Install Tags dimuat bersama aplikasi dan tidak pernah dihapus oleh sistem. Prefetch Tag Order menentukan urutan pemuatan latar belakang segera setelah instalasi. Tag utama dimuat sesuai permintaan dan dapat dihapus oleh iOS saat kekurangan ruang.

Selain kategori, setiap tag dapat memiliki prioritas pemuatan. Tag dengan prioritas tinggi dimuat lebih dulu daripada tag prioritas rendah, bahkan jika diminta belakangan. Ini memungkinkan pengembang mengelola urutan tampilan konten: pertama sumber daya kritis untuk layar utama, kemudian materi tambahan untuk bagian dalam aplikasi.

  • Initial install tags " dimuat saat instalasi pertama, tidak dihapus oleh sistem
  • Prefetched tags " diunduh di latar belakang setelah instalasi untuk meningkatkan UX
  • On-demand tags " diminta secara terprogram, dapat dihapus oleh iOS saat kekurangan ruang

Konfigurasi On-Demand Resources di Xcode

Konfigurasi ODR di Xcode meliputi tiga tahap: kategorisasi sumber daya berdasarkan tag, konfigurasi parameter pemuatan di Info.plist, dan implementasi terprogram permintaan melalui NSBundleResourceRequest. Sebagian besar pekerjaan dilakukan di sisi build proyek.

Kategorisasi di Target Membership

swift
// Pemeriksaan status dan pemantauan kemajuan ODR
func monitorODRProgress(tag: String) {
    let request = NSBundleResourceRequest(tags: [tag])
    let observer = request.progress.observe(\.fractionCompleted) { progress, _ in
        DispatchQueue.main.async {
            let percent = Int(progress.fractionCompleted * 100)
            print("ODR: \(percent)% dimuat")
        }
    }
}

Kemajuan pemuatan dilacak melalui properti progress dari kelas NSProgress dengan dukungan pengamatan KVO. Aplikasi dapat menampilkan indikator kemajuan kepada pengguna selama pengunduhan sumber daya. Setelah pemuatan selesai, sumber daya tersedia di bundel utama aplikasi melalui mekanisme standar FileManager dan NSDataAsset.

Parameter kuota dan batasan

Kuota ODR tergantung pada versi iOS. Mulai iOS 13, perangkat dapat menyimpan hingga 20 GB sumber daya yang dimuat sesuai permintaan per akun. Volume ini didistribusikan di antara semua aplikasi yang terinstal di perangkat " jika satu aplikasi memakan banyak ruang, sisanya lebih sedikit untuk yang lain.

Pemantauan ruang yang terpakai dilakukan melalui NSBundleResourceRequest. Aplikasi dapat memeriksa penyimpanan ODR yang tersedia dan berdasarkan itu memutuskan sumber daya mana yang akan dimuat terlebih dahulu. Implementasi mekanisme fallback disarankan: jika penyimpanan ODR penuh, gunakan sumber daya dari bundel utama dengan kualitas berkurang.

Saat melebihi kuota, sistem menghapus sumber daya dengan tag On-Demand dalam urutan paling jarang digunakan, dimulai dari yang terlama. Resource Manager dalam kode aplikasi dapat melacak volume ruang ODR yang terpakai saat ini melalui properti NSBundleResourceRequest.

Pengembang harus mempertimbangkan bahwa iOS dapat setiap saat memutuskan untuk menghapus sumber daya On-Demand " aplikasi harus menangani dengan benar situasi ketika sumber daya yang sebelumnya dimuat tiba-tiba tidak tersedia. Disarankan untuk menangkap kesalahan akses ke sumber daya dan memintanya kembali melalui beginAccessingResources. Untuk sumber daya kritis yang tanpanya aplikasi tidak dapat berfungsi, gunakan Initial Install Tags yang tidak dihapus oleh sistem.

Keuntungan dan keterbatasan ODR

On-Demand Resources memberi pengembang alat yang fleksibel untuk mengelola ukuran aplikasi, tetapi memberlakukan sejumlah batasan terkait ketersediaan jaringan dan kebijakan penyimpanan iOS.

Keuntungan menggunakan ODR

Keuntungan utama ODR " pengurangan drastis ukuran instalasi awal. Game dengan beberapa level, aplikasi dengan konten video atau kumpulan gambar besar dapat memuat konten secara bertahap. Pengguna mendapatkan akses ke fungsionalitas dasar segera, sementara sumber daya tambahan diunduh di latar belakang.

Keterbatasan teknologi

ODR memerlukan koneksi internet permanen untuk memuat sumber daya saat pertama kali diakses. Pengguna di area dengan jangkauan buruk mungkin mengalami keterlambatan dan kesalahan pemuatan. Selain itu, Apple tidak menjamin bahwa sumber daya yang dimuat akan tetap berada di perangkat " saat kekurangan ruang, iOS dapat menghapus tag On-Demand tanpa peringatan.

  • Kebutuhan jaringan " permintaan sumber daya pertama memerlukan koneksi internet
  • Penghapusan otomatis " iOS dapat membersihkan cache saat kekurangan ruang di perangkat
  • Kesulitan debugging " mereproduksi masalah pemuatan memerlukan simulasi berbagai kondisi jaringan
  • Ukuran tag " Apple merekomendasikan tidak melebihi 512 MB per tag untuk kinerja optimal
  • Penanganan kesalahan " aplikasi harus menangani kesalahan pemuatan dengan benar dan mengulangi permintaan

Pertanyaan Umum

Bisakah saya menggunakan ODR untuk menambahkan konten secara dinamis tanpa memperbarui aplikasi?

ODR memungkinkan penambahan dan perubahan sumber daya tanpa menerbitkan versi baru di App Store. Cukup perbarui file di server Apple melalui Xcode dan tetapkan ke tag yang sama. Pada permintaan berikutnya, aplikasi akan menerima versi terkini dari sumber daya. Ini berguna untuk konten musiman, promosi sementara, dan pengujian A/B gambar serta tata letak baru.

Bagaimana iOS mengelola penghapusan sumber daya ODR saat kekurangan ruang?

Sistem menghapus sumber daya dengan tag On-Demand ketika perlu membebaskan ruang untuk aplikasi lain. Sumber daya Initial Install Tags tidak dihapus. Urutan penghapusan ditentukan oleh algoritma LRU (Least Recently Used) " pertama-tama sumber daya yang paling lama tidak diakses akan dihapus.

Berapa ukuran maksimum sumber daya ODR untuk satu aplikasi?

Mulai iOS 13, batas total penyimpanan ODR adalah 20 GB per Apple ID pengguna. Ukuran satu tag tidak boleh melebihi 512 MB untuk kinerja pemuatan yang optimal. Saat melebihi batas, permintaan berakhir dengan kesalahan NSBundleResourceRequestLowDiskSpaceError.

Apakah ODR berfungsi dalam mode offline setelah pemuatan awal?

Ya, setelah dimuat, sumber daya disimpan di cache lokal dan tersedia dalam mode offline tanpa koneksi internet. Masalah hanya terjadi jika iOS telah menghapus sumber daya karena kekurangan ruang dan pengguna mencoba mengaksesnya tanpa jaringan.

Apa perbedaan ODR dengan pengunduhan file sederhana melalui URLSession?

ODR terintegrasi dengan infrastruktur App Store: sumber daya dihosting di CDN Apple, dikelola oleh sistem cache, dan tidak memerlukan pengembang untuk mengatur server sendiri. URLSession memerlukan infrastruktur server, kontrol versi, dan manajemen cache manual. ODR juga secara otomatis menangani kelanjutan pengunduhan saat putus koneksi.

Kesimpulan

  • On-Demand Resources " teknologi pemuatan konten tertunda di aplikasi iOS dan tvOS
  • Sistem didasarkan pada tag yang mengelompokkan sumber daya dan permintaan melalui NSBundleResourceRequest
  • Didukung semua jenis file: gambar, video, audio, sprite, dan data level
  • Kategori tag " Initial Install, Prefetched, dan On-Demand dengan kebijakan penyimpanan berbeda
  • Batas penyimpanan " 20 GB per Apple ID, hingga 512 MB per tag
  • Ukuran instalasi berkurang dengan memindahkan sumber daya dari bundel utama ke server Apple
  • Rekomendasi " gunakan ODR untuk game, aplikasi dengan konten media, dan proyek dengan struktur berlapis

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga