On-Demand Resources: bu nədir, sorğu mexanizmi və resursların saxlanması

Müəllif: IT Sectr Dərc olunub: 2026-04-17 Oxuma vaxtı: 9 dəq

On-Demand Resources " Apple tərəfindən tətbiq məzmununun gecikmiş yüklənməsi üçün texnologiyadır. Bütün resursları quraşdırma paketinə daxil etmək əvəzinə, tərtibatçı onları App Store serverlərində yerləşdirir və lazım olduqda sorğulayır. Apple ODR Guide-a görə, bu ilkin quraşdırma ölçüsünü azaltmağa və tətbiq versiyasını yeniləmədən yeni məzmun əlavə etməyə imkan verir.

Əsas məqamlar

  • On-Demand Resources " tətbiq quraşdırıldıqdan sonra tələb üzrə resurs yükləmə mexanizmidir
  • Resurslar Apple serverlərində saxlanılır və NSBundleResourceRequest vasitəsilə sorğulanır
  • Teqlər resursları tətbiqin funksional bloklarına görə qruplaşdırır
  • Prefetching UX-ni yaxşılaşdırmaq üçün resursları əvvəlcədən yükləməyə imkan verir
  • Kvotalar məhduddur və tərtibatçı tərəfindən izlənilməsi tələb olunur

iOS-da On-Demand Resources nədir

On-Demand Resources (ODR) " iOS, tvOS və macOS-a daxil edilmiş məzmun idarəetmə sistemidir. Tərtibatçıya tətbiq resurslarını məcburi (quraşdırma paketinə daxil olan) və tələb üzrə yüklənən (App Store-da saxlanılan və lazım olduqda endirilən) bölməyə imkan verir.

ODR-nin əsas anlayışları

ODR sistemi üç əsas varlıqla işləyir: teqlər, resurs paketlərisorğular. Teq fayl qrupunu birləşdirən identifikator sətridir. Resurs paketi teqlə əlaqəli məlumatlar dəstidir. Sorğu paketin yüklənməsini başladan NSBundleResourceRequest proqram çağırışıdır.

Resurs sorğusunun həyat dövrü

Resurs yükləmə bir neçə mərhələdən keçir: teqlərin göstərilməsi ilə sorğunun başladılması, yerli anbarda mövcudluğun yoxlanılması, olmadıqda Apple serverlərindən endirilmə, tətbiqin hazırlıq barədə məlumatlandırılması və istifadədən sonra resursun sərbəst buraxılması. Sistem buferləşdirməni və istifadə olunmayan resursların silinməsini avtomatik idarə edir.

MərhələSistem hərəkətiİcra müddəti
BaşlatmaTeqlə NSBundleResourceRequest yaradılmasıDərhal
Keş yoxlamasıYerli anbarda resurs axtarışı0.1–0.5 san
YükləməApple CDN-dən endirməÖlçüdən asılıdır
BildirişTamamlama handleri və ya delegatın çağırılmasıDərhal
Sərbəst buraxmaResursun sistem tərəfindən silinə bilən kimi qeyd edilməsiiOS tələbi ilə

iOS-da ODR necə işləyir

ODR mexanizmi App Store bulud anbarından resurs sorğularını idarə edən fon xidmətinə əsaslanır. Tətbiq bir teq sorğuladıqda, sistem resursun yerli keşdə olub-olmadığını yoxlayır. Yoxdursa " əlaqə kəsilməsində davam etdirmə dəstəyi ilə fon URL sessiyası vasitəsilə endirməyə başlayır.

NSBundleResourceRequest vasitəsilə sorğuların idarə edilməsi

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()
    }
}

conditionallyBeginAccessingResources metodu dərhal yükləmədən resursun keşdə mövcudluğunu yoxlayır. Əgər əlçatanlıq flagı müsbətdirsə " tətbiq gecikmədən işə davam edir. Resurs yoxdursa, beginAccessingResources progress xüsusiyyəti vasitəsilə gedişat göstəricisi ilə endirməyə başlayır.

Fon yükləmə və prioritetlər

iOS sistemi tətbiqin cari aktivliyindən asılı olaraq ODR resurs yükləmə prioritetlərini özü idarə edir. Tətbiq ön planda olduqda, yükləmə yüksək prioritetlə aparılır. Fondə iOS yükləməni təxirə sala və ya batareya səviyyəsi aşağı olduqda dayandıra bilər.

  • High priority " dərhal lazım olan resurslar üçün təcili yükləmə
  • Low priority " prefetching və ilkin keşləmə üçün gecikmiş yükləmə
  • Background " yalnız aktiv Wi-Fi və kifayət qədər batareya olduqda yükləmə

Resurs növləri və ODR teqləri

ODR resursları şəkillər, videolar, audio fayllar, spritelar, səviyyə məlumatları və tətbiqin işə salınması üçün kritik olmayan digər faylları əhatə edə bilər. Hər bir resurs funksional bloka aidiyyətini müəyyən edən bir və ya bir neçə teqə bağlanır.

Xcode-da Content Tagging

Xcode-da teqlər Target Membership vərəqindəki Resource Tags inspektoru vasitəsilə konfiqurasiya edilir. Tərtibatçı layihədəki hər bir fayl üçün onun əsas bündlün bir hissəsi olub-olmadığını və ya teq vasitəsilə yükləndiyini müəyyən edir. Bir fayl bir neçə teqə aid ola bilər ki, bu da resursların tətbiqin müxtəlif bölmələri arasında təkrar istifadəsinə imkan verir.

xml
<!-- Resource Tags konfiqurasiya nümunəsi Info.plist-də -->
<key>NSBundleResourceRequestTags</key>
<dict>
    <key>level-3</key>
    <array>
        <string>levels/level3.scnassets</string>
        <string>textures/level3_tex.png</string>
    </array>
</dict>

Yaşama müddətinə görə teq kateqoriyaları

Apple resursun cihazda nə qədər saxlanmalı olduğuna görə üç kateqoriya ODR teqi ayırır. Initial Install Tags tətbiqlə birlikdə yüklənir və heç vaxt sistem tərəfindən silinmir. Prefetch Tag Order quraşdırmadan dərhal sonra fon yükləmə sırasını müəyyən edir. Əsas teqlər tələb üzrə yüklənir və yer çatışmazlığı olduqda iOS tərəfindən silinə bilər.

Kateqoriyalardan əlavə, hər bir teq yükləmə prioritetinə malik ola bilər. Yüksək prioritetli teqlər aşağı prioritetli olanlardan əvvəl yüklənir, hətta daha sonra sorğulansalar belə. Bu, tərtibatçıya məzmunun görünmə ardıcıllığını idarə etməyə imkan verir: əvvəlcə əsas ekran üçün kritik resurslar, sonra tətbiqin dərin bölmələri üçün əlavə materiallar.

  • Initial install tags " ilk quraşdırmada yüklənir, sistem tərəfindən silinmir
  • Prefetched tags " UX-ni yaxşılaşdırmaq üçün quraşdırmadan sonra fondə endirilir
  • On-demand tags " proqram vasitəsilə sorğulanır, yer çatışmazlığında iOS tərəfindən silinə bilər

Xcode-da On-Demand Resources konfiqurasiyası

ODR konfiqurasiyası Xcode-da üç mərhələdən ibarətdir: resursların teqlər üzrə kateqoriyalara ayrılması, Info.plist-də yükləmə parametrlərinin konfiqurasiyası və NSBundleResourceRequest vasitəsilə sorğuların proqram təminatının həyata keçirilməsi. İşin çox hissəsi layihənin qurulması tərəfində aparılır.

Target Membership-də kateqoriyalaşdırma

swift
// ODR statusunun yoxlanılması və gedişat monitorinqi
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)% yükləndi")
        }
    }
}

Yükləmə gedişatı KVO müşahidə dəstəyi ilə NSProgress sinfinin progress xüsusiyyəti vasitəsilə izlənilir. Tətbiq resursların endirilməsi zamanı istifadəçiyə yükləmə göstəricisini göstərə bilər. Yükləmə tamamlandıqdan sonra resurslar FileManager və NSDataAsset standart mexanizmləri vasitəsilə tətbiqin əsas bündlündə əlçatan olur.

Kvota və məhdudiyyət parametrləri

ODR kvotaları iOS versiyasından asılıdır. iOS 13-dən etibarən cihaz bir hesab üçün 20 GB-a qədər tələb üzrə yüklənmiş resurs saxlaya bilər. Bu həcm cihazda quraşdırılmış bütün tətbiqlər arasında bölüşdürülür " bir tətbiq çox yer tutarsa, digərlərinə daha az qalır.

İşğal olunmuş yerin monitorinqi NSBundleResourceRequest vasitəsilə həyata keçirilir. Tətbiq mövcud ODR yaddaşını yoxlaya və bundan asılı olaraq hansı resursların ilk növbədə yüklənəcəyinə qərar verə bilər. Fallback mexanizminin tətbiqi tövsiyə olunur: ODR yaddaşı doludursa, əsas bündldən aşağı keyfiyyətli resurslardan istifadə edin.

Kvota aşıldıqda sistem ən az istifadə olunan resurslardan başlayaraq On-Demand teqləri olan resursları silir. Tətbiq kodunda Resource Manager NSBundleResourceRequest xüsusiyyəti vasitəsilə cari işğal olunmuş ODR yaddaş həcmini izləyə bilər.

Tərtibatçı nəzərə almalıdır ki, iOS istənilən vaxt On-Demand resurslarının silinməsi barədə qərar verə bilər " tətbiq əvvəllər yüklənmiş resursun qəflətən əlçatan olmadığı vəziyyəti düzgün idarə etməlidir. Resurslara giriş xətalarının tutulması və beginAccessingResources vasitəsilə təkrar sorğulanması tövsiyə olunur. Tətbiqin işləyə bilmədiyi kritik vacib resurslar üçün sistem tərəfindən silinməyən Initial Install Tags-dan istifadə edin.

ODR-nin üstünlükləri və məhdudiyyətləri

On-Demand Resources tərtibatçıya tətbiq ölçüsünü idarə etmək üçün çevik alət verir, lakin şəbəkə əlçatanlığı və iOS yaddaş siyasətləri ilə bağlı bir sıra məhdudiyyətlər qoyur.

ODR istifadəsinin üstünlükləri

ODR-nin əsas üstünlüyü ilkin quraşdırma ölçüsünün kəskin azaldılmasıdır. Bir neçə səviyyəli oyunlar, video məzmunlu tətbiqlər və ya böyük şəkil dəstləri olan proqramlar məzmunu hissə-hissə yükləyə bilər. İstifadəçi əsas funksionallığa dərhal çıxış əldə edir, əlavə resurslar isə fondə endirilir.

Texnologiyanın məhdudiyyətləri

ODR ilkin müraciətdə resursların yüklənməsi üçün daimi internet bağlantısı tələb edir. Zəif əhatə zonasında olan istifadəçi gecikmələr və yükləmə xətaları ilə qarşılaşa bilər. Bundan əlavə, Apple yüklənmiş resursların cihazda qalacağına zəmanət vermir " yer çatışmazlığı olduqda iOS xəbərdarlıq etmədən On-Demand teqlərini silə bilər.

  • Şəbəkə zərurəti " resursun ilk sorğusu internet bağlantısı tələb edir
  • Avtomatik silmə " iOS cihazda yer çatışmazlığında keşi təmizləyə bilər
  • Debug çətinliyi " yükləmə problemlərinin bərpası müxtəlif şəbəkə şəraitinin simulyasiyasını tələb edir
  • Teq ölçüsü " Apple optimal performans üçün bir teq üçün 512 MB-dan çox olmamağı tövsiyə edir
  • Xəta idarəetməsi " tətbiq yükləmə xətalarını düzgün idarə etməli və sorğuları təkrarlamalıdır

Tez-tez verilən suallar

Tətbiqi yeniləmədən məzmun dinamik əlavə etmək üçün ODR istifadə edilə bilərmi?

ODR App Store-da yeni versiya dərc etmədən resursları əlavə etməyə və dəyişdirməyə imkan verir. Apple serverində faylları Xcode vasitəsilə yeniləmək və onları eyni teqlərə təyin etmək kifayətdir. Növbəti sorğuda tətbiq resursun cari versiyasını alacaq. Bu mövsümi məzmun, müvəqqəti promosyonlar və yeni şəkil və layoutların A/B testi üçün əlverişlidir.

iOS yer çatışmazlığında ODR resurslarının silinməsini necə idarə edir?

Sistem digər tətbiqlər üçün yer boşaltmaq lazım olduqda On-Demand etiketli resursları silir. Initial Install Tags resursları silinmir. Silmə ardıcıllığı LRU (Least Recently Used) alqoritmi ilə müəyyən edilir " ilk növbədə ən uzun müddət müraciət edilməyən resurslar silinir.

Bir tətbiq üçün ODR resurslarının maksimum ölçüsü nə qədərdir?

iOS 13-dən etibarən ümumi ODR yaddaş limiti bir istifadəçi Apple ID-si üçün 20 GB təşkil edir. Bir teqin ölçüsü optimal yükləmə performansı üçün 512 MB-dan çox olmamalıdır. Limit aşıldıqda sorğular NSBundleResourceRequestLowDiskSpaceError xətası ilə nəticələnir.

ODR ilkin yükləmədən sonra oflayn rejimdə işləyirmi?

Bəli, yükləmədən sonra resurs yerli keşdə saxlanılır və internet bağlantısı olmadan oflayn rejimdə əlçatandır. Problemlər yalnız iOS yer çatışmazlığı səbəbindən resursu silibsə və istifadəçi şəbəkə olmadan ona daxil olmağa çalışırsa yaranır.

ODR URLSession vasitəsilə sadə fayl yükləmədən nə ilə fərqlənir?

ODR App Store infrastrukturu ilə inteqrasiya olunub: resurslar Apple CDN-də yerləşdirilir, keşləmə sistemi tərəfindən idarə olunur və tərtibatçıdan öz serverini təşkil etməyi tələb etmir. URLSession server infrastrukturu, versiya nəzarəti və əl ilə keş idarəetməsi tələb edir. ODR həmçinin əlaqə kəsilməsində yükləmənin avtomatik bərpasını idarə edir.

Xülasə

  • On-Demand Resources " iOS və tvOS tətbiqlərində gecikmiş məzmun yükləmə texnologiyasıdır
  • Sistem resursları qruplaşdıran teqlərə və NSBundleResourceRequest sorğularına əsaslanır
  • Dəstəklənir bütün fayl növləri: şəkillər, videolar, audio, spritelar və səviyyə məlumatları
  • Teq kateqoriyaları " Initial Install, Prefetched və On-Demand fərqli saxlama siyasətləri ilə
  • Yaddaş limiti " Apple ID üçün 20 GB, bir teq üçün 512 MB-a qədər
  • Quraşdırma ölçüsü resursların əsas bündldən Apple serverlərinə köçürülməsi ilə azaldılır
  • Tövsiyə " ODR-dən oyunlar, media məzmunlu tətbiqlər və çoxsəviyyəli struktur layihələri üçün istifadə edin

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun