On-Demand Resources: यह क्या है, अनुरोध तंत्र और संसाधन भंडारण

लेखक: IT Sectr प्रकाशित: 2026-04-17 पढ़ने का समय: 9 मिनट

On-Demand Resources Apple की एप्लिकेशन सामग्री के विलंबित लोडिंग की तकनीक है। सभी संसाधनों को इंस्टॉलेशन पैकेज में शामिल करने के बजाय, डेवलपर्स उन्हें App Store सर्वर पर होस्ट करते हैं और आवश्यकतानुसार अनुरोध करते हैं। Apple ODR Guide के अनुसार, यह प्रारंभिक इंस्टॉलेशन आकार को कम करता है और एप्लिकेशन संस्करण को अपडेट किए बिना नई सामग्री जोड़ने की अनुमति देता है।

मुख्य बिंदु

  • On-Demand Resources — एप्लिकेशन इंस्टॉलेशन के बाद मांग पर संसाधन लोड करने की प्रणाली
  • संसाधन Apple सर्वर पर संग्रहीत होते हैं और NSBundleResourceRequest के माध्यम से अनुरोधित किए जाते हैं
  • टैग संसाधनों को एप्लिकेशन के कार्यात्मक ब्लॉकों द्वारा समूहित करते हैं
  • प्रीफ़ेचिंग UX बेहतर बनाने के लिए संसाधनों को पहले से लोड करने की अनुमति देता है
  • भंडारण कोटा सीमित हैं और डेवलपर द्वारा निगरानी की आवश्यकता है

iOS में On-Demand Resources क्या है

On-Demand Resources (ODR) iOS, tvOS और macOS में निर्मित एक सामग्री प्रबंधन प्रणाली है। यह डेवलपर को एप्लिकेशन संसाधनों को अनिवार्य (इंस्टॉलेशन पैकेज में शामिल) और मांग पर (App Store में संग्रहीत और आवश्यकतानुसार डाउनलोड) में विभाजित करने की अनुमति देता है।

ODR की मुख्य अवधारणाएँ

ODR प्रणाली तीन प्रमुख इकाइयों के साथ काम करती है: टैग, संसाधन पैकेज और अनुरोध। टैग एक स्ट्रिंग पहचानकर्ता है जो फ़ाइलों के समूह को एकत्रित करता है। संसाधन पैकेज एक डेटा सेट है जो एक टैग से जुड़ा होता है। अनुरोध NSBundleResourceRequest का एक प्रोग्रामेटिक कॉल है जो पैकेज लोडिंग शुरू करता है।

संसाधन अनुरोध जीवनचक्र

संसाधन लोडिंग कई चरणों से गुज़रती है: निर्दिष्ट टैग के साथ अनुरोध की शुरुआत, स्थानीय भंडारण में उपलब्धता की जाँच, अनुपस्थित होने पर Apple सर्वर से डाउनलोड, तैयार होने पर एप्लिकेशन को सूचना और उपयोग के बाद संसाधन को मुक्त करना। सिस्टम स्वचालित रूप से कैशिंग और अप्रयुक्त संसाधनों को हटाने का प्रबंधन करता है।

चरणसिस्टम कार्रवाईनिष्पादन समय
आरंभीकरणटैग के साथ NSBundleResourceRequest बनानातत्काल
कैश जाँचस्थानीय भंडारण में संसाधन की खोज0.1–0.5 सेकंड
डाउनलोडApple CDN से डाउनलोडआकार पर निर्भर
सूचनाकम्प्लीशन हैंडलर या डेलिगेट को कॉल करनातत्काल
मुक्त करनासंसाधन को सिस्टम द्वारा हटाने योग्य चिह्नित करनाiOS अनुरोध पर

iOS में ODR कैसे काम करता है

ODR प्रणाली एक पृष्ठभूमि सेवा पर आधारित है जो App Store क्लाउड स्टोरेज से संसाधन अनुरोधों का प्रबंधन करती है। जब एप्लिकेशन एक टैग का अनुरोध करता है, तो सिस्टम जाँचता है कि क्या संसाधन स्थानीय कैश में मौजूद है। यदि नहीं — तो यह बाधित कनेक्शन के लिए फिर से शुरू करने की सुविधा के साथ पृष्ठभूमि URL सत्र के माध्यम से डाउनलोड शुरू करता है।

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

conditionallyBeginAccessingResources विधि तत्काल लोडिंग के बिना कैश में संसाधन उपलब्धता की जाँच करती है। यदि उपलब्धता सकारात्मक है — तो एप्लिकेशन बिना देरी के जारी रहता है। यदि संसाधन अनुपस्थित है, तो beginAccessingResources progress गुण के माध्यम से प्रगति संकेत के साथ डाउनलोड शुरू करता है।

पृष्ठभूमि लोडिंग और प्राथमिकताएँ

iOS वर्तमान एप्लिकेशन गतिविधि के आधार पर ODR संसाधन लोडिंग प्राथमिकताओं का प्रबंधन करता है। जब एप्लिकेशन अग्रभूमि में होता है, तो लोडिंग उच्च प्राथमिकता के साथ की जाती है। पृष्ठभूमि में, iOS कम बैटरी होने पर लोडिंग में देरी या रोक सकता है।

  • उच्च प्राथमिकता — अभी आवश्यक संसाधनों के लिए तत्काल लोडिंग
  • निम्न प्राथमिकता — प्रीफ़ेचिंग और प्रारंभिक कैशिंग के लिए विलंबित लोडिंग
  • पृष्ठभूमि — केवल सक्रिय Wi-Fi और पर्याप्त बैटरी के साथ लोडिंग

संसाधन प्रकार और ODR टैग

ODR संसाधन में चित्र, वीडियो, ऑडियो फ़ाइलें, स्प्राइट, स्तर डेटा और एप्लिकेशन लॉन्च के लिए महत्वपूर्ण न होने वाली कोई भी अन्य फ़ाइलें शामिल हो सकती हैं। प्रत्येक संसाधन एक या अधिक टैग से बंधा होता है जो कार्यात्मक ब्लॉक में उसकी सदस्यता निर्धारित करते हैं।

Xcode में सामग्री टैगिंग

Xcode में, टैग Target Membership टैब में Resource Tags इंस्पेक्टर के माध्यम से कॉन्फ़िगर किए जाते हैं। डेवलपर प्रत्येक प्रोजेक्ट फ़ाइल के लिए निर्दिष्ट करता है कि वह मुख्य बंडल में शामिल है या टैग द्वारा लोड किया गया है। एक फ़ाइल कई टैग से संबंधित हो सकती है, जिससे विभिन्न एप्लिकेशन अनुभागों में संसाधनों का पुन: उपयोग संभव होता है।

xml
<!-- Info.plist में Resource Tags कॉन्फ़िगरेशन का उदाहरण -->
<key>NSBundleResourceRequestTags</key>
<dict>
    <key>level-3</key>
    <array>
        <string>levels/level3.scnassets</string>
        <string>textures/level3_tex.png</string>
    </array>
</dict>

जीवनकाल के अनुसार टैग श्रेणियाँ

Apple तीन ODR टैग श्रेणियों में अंतर करता है, जो इस बात पर आधारित हैं कि संसाधन को डिवाइस पर कितने समय तक रहना चाहिए। प्रारंभिक इंस्टॉलेशन टैग एप्लिकेशन के साथ लोड होते हैं और सिस्टम द्वारा कभी हटाए नहीं जाते। प्रीफ़ेच टैग ऑर्डर इंस्टॉलेशन के तुरंत बाद पृष्ठभूमि प्रीलोडिंग क्रम निर्धारित करता है। मुख्य टैग मांग पर अनुरोधित किए जाते हैं और जब स्थान कम होता है तो iOS द्वारा हटाए जा सकते हैं।

श्रेणियों के अलावा, प्रत्येक टैग की डाउनलोड प्राथमिकता हो सकती है। उच्च प्राथमिकता वाले टैग निम्न प्राथमिकता वाले टैग से पहले लोड होते हैं, भले ही वे बाद में अनुरोधित किए गए हों। यह डेवलपर को सामग्री प्रकट होने के क्रम को नियंत्रित करने की अनुमति देता है: पहले मुख्य स्क्रीन के लिए महत्वपूर्ण संसाधन, फिर एप्लिकेशन के गहरे अनुभागों के लिए अतिरिक्त सामग्री।

  • प्रारंभिक इंस्टॉलेशन टैग — पहली इंस्टॉलेशन के दौरान लोड होते हैं, सिस्टम द्वारा नहीं हटाए जाते
  • प्रीफ़ेच्ड टैग — UX बेहतर बनाने के लिए इंस्टॉलेशन के बाद पृष्ठभूमि में डाउनलोड होते हैं
  • मांग पर टैग — प्रोग्रामेटिक रूप से अनुरोधित किए जाते हैं, स्थान कम होने पर iOS द्वारा हटाए जा सकते हैं

Xcode में On-Demand Resources कॉन्फ़िगर करना

ODR सेटअप Xcode में तीन चरण शामिल करता है: टैग द्वारा संसाधनों को वर्गीकृत करना, Info.plist में डाउनलोड पैरामीटर कॉन्फ़िगर करना और NSBundleResourceRequest के माध्यम से प्रोग्रामेटिक अनुरोध कार्यान्वयन। अधिकांश कार्य बिल्ड पक्ष पर किया जाता है।

Target Membership में वर्गीकरण

swift
// 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)% लोड हुआ")
        }
    }
}

डाउनलोड प्रगति KVO अवलोकन समर्थन के साथ NSProgress वर्ग के progress गुण के माध्यम से ट्रैक की जाती है। एप्लिकेशन संसाधन डाउनलोडिंग के दौरान उपयोगकर्ता को लोडिंग संकेतक प्रदर्शित कर सकता है। डाउनलोड पूरा होने के बाद, संसाधन मानक FileManager और NSDataAsset प्रणालियों के माध्यम से मुख्य एप्लिकेशन बंडल में उपलब्ध होते हैं।

कोटा और सीमा पैरामीटर

ODR कोटा iOS संस्करण पर निर्भर करता है। iOS 13 से शुरू होकर, एक डिवाइस प्रति खाता 20 GB तक मांग पर संसाधन संग्रहीत कर सकता है। यह स्थान डिवाइस पर स्थापित सभी एप्लिकेशन के बीच साझा किया जाता है — यदि एक एप्लिकेशन बहुत अधिक स्थान लेता है, तो दूसरों के लिए कम बचता है।

उपयोग किए गए स्थान की निगरानी NSBundleResourceRequest के माध्यम से की जाती है। एप्लिकेशन उपलब्ध ODR स्टोरेज की जाँच कर सकता है और तदनुसार तय कर सकता है कि कौन से संसाधन पहले लोड करने हैं। फ़ॉलबैक प्रणाली लागू करने की अनुशंसा की जाती है: यदि ODR स्टोरेज भरा है, तो मुख्य बंडल से कम गुणवत्ता वाले संसाधनों का उपयोग करें।

जब कोटा पार हो जाता है, तो सिस्टम सबसे कम हाल ही में उपयोग किए गए क्रम में मांग पर टैग किए गए संसाधनों को हटाता है, सबसे पुराने से शुरू करके। एप्लिकेशन कोड में संसाधन प्रबंधक NSBundleResourceRequest गुण के माध्यम से वर्तमान ODR स्टोरेज उपयोग को ट्रैक कर सकता है।

डेवलपर्स को ध्यान रखना चाहिए कि iOS किसी भी समय On-Demand संसाधनों को हटाने का निर्णय ले सकता है — एप्लिकेशन को उन स्थितियों को सही ढंग से संभालना चाहिए जहाँ पहले से लोड किया गया संसाधन अचानक अनुपलब्ध हो जाता है। संसाधन एक्सेस त्रुटियों को इंटरसेप्ट करने और beginAccessingResources के माध्यम से उन्हें फिर से अनुरोध करने की अनुशंसा की जाती है। महत्वपूर्ण संसाधनों के लिए जिनके बिना एप्लिकेशन काम नहीं कर सकता, प्रारंभिक इंस्टॉलेशन टैग का उपयोग करें जो सिस्टम द्वारा नहीं हटाए जाते।

ODR के लाभ और सीमाएँ

On-Demand Resources डेवलपर को एप्लिकेशन आकार प्रबंधित करने का एक लचीला उपकरण देते हैं, लेकिन नेटवर्क उपलब्धता और iOS भंडारण नीतियों से संबंधित कई सीमाएँ लगाते हैं।

ODR का उपयोग करने के लाभ

ODR का मुख्य लाभ प्रारंभिक इंस्टॉलेशन आकार में भारी कमी है। कई स्तरों वाले गेम, वीडियो सामग्री वाले एप्लिकेशन या बड़े छवि सेट भागों में सामग्री लोड कर सकते हैं। उपयोगकर्ता को तुरंत बुनियादी कार्यक्षमता तक पहुँच मिलती है, जबकि अतिरिक्त संसाधन पृष्ठभूमि में डाउनलोड होते हैं।

तकनीकी सीमाएँ

ODR को पहली बार एक्सेस करने पर संसाधनों को लोड करने के लिए निरंतर इंटरनेट कनेक्शन की आवश्यकता होती है। खराब कवरेज वाले क्षेत्रों में उपयोगकर्ताओं को देरी और डाउनलोड त्रुटियों का सामना करना पड़ सकता है। इसके अलावा, Apple गारंटी नहीं देता कि डाउनलोड किए गए संसाधन डिवाइस पर रहेंगे — जब स्थान कम होता है, तो iOS बिना चेतावनी के On-Demand टैग हटा सकता है।

  • नेटवर्क आवश्यकता — पहले संसाधन अनुरोध के लिए इंटरनेट कनेक्शन आवश्यक है
  • स्वचालित हटाना — डिवाइस स्थान कम होने पर iOS कैश साफ़ कर सकता है
  • डिबगिंग जटिलता — लोडिंग समस्याओं को दोहराने के लिए विभिन्न नेटवर्क स्थितियों का अनुकरण आवश्यक है
  • टैग आकार — Apple इष्टतम प्रदर्शन के लिए प्रति टैग 512 MB से अधिक न करने की अनुशंसा करता है
  • त्रुटि प्रबंधन — एप्लिकेशन को लोडिंग विफलताओं को सही ढंग से संभालना और अनुरोधों को दोहराना चाहिए

अक्सर पूछे जाने वाले प्रश्न

क्या एप्लिकेशन को अपडेट किए बिना गतिशील रूप से सामग्री जोड़ने के लिए ODR का उपयोग किया जा सकता है?

ODR App Store में नया संस्करण प्रकाशित किए बिना संसाधनों को जोड़ने और संशोधित करने की अनुमति देता है। बस Xcode के माध्यम से Apple सर्वर पर फ़ाइलों को अपडेट करें और उन्हें समान टैग असाइन करें। अगले अनुरोध पर, एप्लिकेशन को संसाधन का नवीनतम संस्करण प्राप्त होगा। यह मौसमी सामग्री, अस्थायी प्रचार और नई छवियों और लेआउट के A/B परीक्षण के लिए सुविधाजनक है।

जगह कम होने पर iOS ODR संसाधनों को हटाने का प्रबंधन कैसे करता है?

सिस्टम जब अन्य एप्लिकेशन के लिए स्थान खाली करने की आवश्यकता होती है, तो On-Demand टैग किए गए संसाधनों को हटा देता है। प्रारंभिक इंस्टॉलेशन टैग संसाधन नहीं हटाए जाते। हटाने का क्रम LRU (Least Recently Used) एल्गोरिदम द्वारा निर्धारित किया जाता है — सबसे पहले वे संसाधन हटाए जाते हैं जिन्हें सबसे लंबे समय से एक्सेस नहीं किया गया है।

एकल एप्लिकेशन के लिए अधिकतम ODR संसाधन आकार क्या है?

iOS 13 से, कुल ODR स्टोरेज सीमा प्रति Apple ID उपयोगकर्ता 20 GB है। इष्टतम डाउनलोड प्रदर्शन के लिए एकल टैग का आकार 512 MB से अधिक नहीं होना चाहिए। जब सीमा पार हो जाती है, तो अनुरोध NSBundleResourceRequestLowDiskSpaceError के साथ विफल हो जाते हैं।

क्या ODR प्रारंभिक डाउनलोड के बाद ऑफ़लाइन मोड में काम करता है?

हाँ, डाउनलोड करने के बाद, संसाधन स्थानीय कैश में सहेजा जाता है और इंटरनेट कनेक्शन के बिना ऑफ़लाइन मोड में उपलब्ध होता है। समस्याएँ केवल तब उत्पन्न होती हैं जब iOS ने कम स्टोरेज के कारण संसाधन हटा दिया हो और उपयोगकर्ता बिना नेटवर्क के उस तक पहुँचने का प्रयास करता है।

ODR, URLSession के माध्यम से सरल फ़ाइल डाउनलोड से कैसे अलग है?

ODR App Store बुनियादी ढाँचे के साथ एकीकृत है: संसाधन Apple के CDN पर होस्ट किए जाते हैं, कैशिंग सिस्टम द्वारा प्रबंधित किए जाते हैं और डेवलपर को अपना स्वयं का सर्वर स्थापित करने की आवश्यकता नहीं होती है। URLSession को सर्वर बुनियादी ढाँचे, संस्करण नियंत्रण और मैन्युअल कैश प्रबंधन की आवश्यकता होती है। ODR कनेक्शन बाधित होने पर डाउनलोड फिर से शुरू करने को भी स्वचालित रूप से संभालता है।

सारांश

  • On-Demand Resources — iOS और tvOS एप्लिकेशन में विलंबित सामग्री लोडिंग की तकनीक
  • सिस्टम संसाधनों को समूहित करने वाले टैग और NSBundleResourceRequest के माध्यम से अनुरोधों पर आधारित है
  • सभी फ़ाइल प्रकार समर्थित हैं: चित्र, वीडियो, ऑडियो, स्प्राइट और स्तर डेटा
  • टैग श्रेणियाँ — प्रारंभिक इंस्टॉलेशन, प्रीफ़ेच्ड और मांग पर विभिन्न भंडारण नीतियों के साथ
  • स्टोरेज सीमा — 20 GB प्रति Apple ID, प्रति टैग 512 MB तक
  • इंस्टॉलेशन आकार मुख्य बंडल से Apple सर्वर पर संसाधन स्थानांतरित करके कम किया जाता है
  • अनुशंसा — गेम, मीडिया-सामग्री एप्लिकेशन और बहु-स्तरीय संरचना वाली परियोजनाओं के लिए ODR का उपयोग करें

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें