Background Fetch: यह क्या है, कैसे काम करता है और अपडेट कॉन्फ़िगरेशन

लेखक: IT Sectr प्रकाशित: 2026-03-27 पढ़ने का समय: 8 मिनट

Background Fetch एक iOS तंत्र है जो नई सामग्री डाउनलोड करने के लिए समय-समय पर बैकग्राउंड में ऐप को जगाता है। सिस्टम उपयोगकर्ता के व्यवहार का विश्लेषण करता है और अपडेट के लिए इष्टतम विंडो चुनता है। Apple, 2026 के अनुसार, ऐप को ऑपरेशन करने के लिए 30 से 120 सेकंड मिलते हैं, जिसके बाद सिस्टम प्रक्रिया को निलंबित या समाप्त कर देता है।

मुख्य बातें

  • Background Fetch बैकग्राउंड में समय-समय पर सामग्री अपडेट करने के लिए एक iOS API है।
  • सिस्टम नियंत्रित करता है उपयोगकर्ता के व्यवहार विश्लेषण के आधार पर जागने की आवृत्ति।
  • न्यूनतम अंतराल UIApplication.minimumBackgroundFetchInterval के माध्यम से सेट किया जाता है।
  • अप्रचलन — iOS 13+ से यह तंत्र पुराना माना जाता है, BGTaskScheduler अनुशंसित है।
  • निष्पादन समय — 30 सेकंड तक, जिसके बाद सिस्टम जबरन कार्य समाप्त कर देता है।

iOS में Background Fetch क्या है?

Background Fetch एक iOS API है जो ऐप को बैकग्राउंड में समय-समय पर नया डेटा प्राप्त करने की अनुमति देता है। पहली बार iOS 7 में Background App Refresh तंत्र के साथ पेश किया गया था। मुख्य लक्ष्य यह है कि जब उपयोगकर्ता ऐप खोले तब तक सामग्री अपडेट हो, बिना लोड होने की प्रतीक्षा किए।

पुश सूचनाओं से अंतर

पुश सूचनाएँ सर्वर द्वारा शुरू की जाती हैं — सर्वर डिवाइस पर सिग्नल भेजता है, और सिस्टम तय करता है कि ऐप को जगाना है या नहीं। Background Fetch iOS द्वारा ही डिवाइस उपयोग पैटर्न के आधार पर शुरू किया जाता है। पुश तत्काल संदेशों के लिए उपयुक्त है, जबकि Fetch निर्धारित सामग्री अपडेट (समाचार, सोशल मीडिया फ़ीड) के लिए।

बैकग्राउंड कार्य पारिस्थितिकी तंत्र में स्थान

Background Fetch iOS में बैकग्राउंड निष्पादन के कई तंत्रों में से एक है। BGAppRefreshTask (iOS 13+) समान कार्य करता है लेकिन अधिक लचीली शेड्यूलिंग के साथ। Background Modes (ऑडियो, स्थान) निरंतर संचालन के लिए हैं। Silent Push सर्वर-शुरू किए गए अपडेट हैं। Fetch iOS 12 और उससे नीचे का समर्थन करने वाली परियोजनाओं के लिए प्रासंगिक बना हुआ है।

  • Background Fetch — आवधिक, सिस्टम-शुरू, iOS 7+।
  • BGAppRefreshTask — आवधिक, सिस्टम-शुरू, iOS 13+।
  • BGProcessingTask — लंबी अवधि के कार्य, iOS 13+।
  • Silent Push — सर्वर-शुरू, iOS 7+।

Background Fetch कैसे काम करता है: आर्किटेक्चर और जीवनचक्र

iOS ऐप को जगाने के लिए इष्टतम समय निर्धारित करने हेतु मशीन लर्निंग एल्गोरिदम का उपयोग करता है। सिस्टम विश्लेषण करता है कि उपयोगकर्ता आमतौर पर ऐप कब खोलता है, कितने समय तक उपयोग करता है और कितनी बार लौटता है। इस डेटा के आधार पर, iOS Background Fetch के लिए विंडो की गणना करता है।

कार्य निष्पादन प्रक्रिया

जब सिस्टम ऐप को जगाने का निर्णय लेता है, तो यह AppDelegate में application(_:performFetchWithCompletionHandler:) विधि को कॉल करता है। ऐप को न्यूनतम मात्रा में नया डेटा लोड करना चाहिए और तीन स्थितियों में से एक के साथ कम्पलीशन हैंडलर को कॉल करना चाहिए: .newData (डेटा लोड हुआ), .noData (कोई नया डेटा नहीं) या .failed (त्रुटि)। स्थिति भविष्य में जागने की आवृत्ति को प्रभावित करती है।

कॉल आवृत्ति पर कम्पलीशन हैंडलर का प्रभाव

.newData स्थिति सिस्टम को बताती है कि अपडेट उपयोगी था — iOS जागने की आवृत्ति बढ़ा सकता है। .noData इंगित करता है कि कोई डेटा नहीं है — आवृत्ति वही रहती है या घट जाती है। .failed समस्या का संकेत देता है — सिस्टम बैटरी बचाने के लिए आवृत्ति कम करता है। जोर ईमानदार स्थिति पर होना चाहिए, .newData को बलपूर्वक लागू करने पर नहीं।

स्थितिअर्थप्रभाव
.newDataडेटा सफलतापूर्वक लोड हुआआवृत्ति बढ़ सकती है
.noDataजाँच में कोई नया डेटा नहीं मिलाआवृत्ति वही रहती है
.failedनेटवर्क या सर्वर त्रुटिआवृत्ति घट जाती है

Xcode प्रोजेक्ट में Background Fetch सेटअप करना

Background Fetch सक्षम करने के लिए दो कदम आवश्यक हैं: Xcode में क्षमता सक्रिय करें और कोड में न्यूनतम अंतराल सेट करें। क्षमता Target — Signing & Capabilities — Background Modes — Background Fetch बॉक्स चेक करने में स्थित है। इस कदम के बिना, सिस्टम ऐप को नहीं जगाएगा।

न्यूनतम अंतराल सेट करना

UIApplication.shared.setMinimumBackgroundFetchInterval विधि Fetch कॉल के बीच न्यूनतम समय सेकंड में सेट करती है। मान UIApplication.backgroundFetchIntervalMinimum (लगभग 15 मिनट) सिस्टम को बताता है कि ऐप को जितनी बार ऊर्जा-कुशल हो उतनी बार जगाए। application(_:didFinishLaunchingWithOptions:) में अंतराल सेट करना मानक अभ्यास है।

swift
func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey : Any]?
)-> Bool {
    UIApplication.shared.setMinimumBackgroundFetchInterval(
        UIApplication.backgroundFetchIntervalMinimum
    )
    return true
}

Info.plist और क्षमता

जब Xcode में Background Fetch सक्षम किया जाता है, यह स्वचालित रूप से Info.plist अपडेट करता है — UIBackgroundModes कुंजी को fetch मान के साथ जोड़ता है। यह एक अनिवार्य कदम है: इसके बिना ऐप को performFetchWithCompletionHandler कॉल नहीं मिलेगी। आप P list Source या Build Settings के माध्यम से सत्यापित कर सकते हैं।

Swift में Background Fetch कोड उदाहरण

आइए एक समाचार ऐप के लिए पूर्ण Background Fetch कार्यान्वयन देखें। कार्यान्वयन में डेटा लोडिंग, कैशिंग और कम्पलीशन हैंडलर कॉल शामिल है। कोड AppDelegate में निष्पादित होता है — एकमात्र स्थान जहाँ सिस्टम fetch को कॉल करता है।

swift
func application(
    _ application: UIApplication,
    performFetchWithCompletionHandler handler: @escaping (UIBackgroundFetchResult) -> Void
) {
    let url = URL(string: "https://api.example.com/latest")!

    URLSession.shared.dataTask(with: url) { data, response, error in
        guard let data = data, error == nil else {
            handler(.failed)
            return
        }

        do {
            let articles = try JSONDecoder().decode([Article].self, from: data)
            cacheArticles(articles)
            handler(articles.isEmpty ? .noData : .newData)
        } catch {
            handler(.failed)
        }
    }.resume()
}

लोड किए गए डेटा को कैश करना

Background Fetch के माध्यम से डेटा लोड करने के बाद, इसे स्थानीय स्टोरेज — CoreData, UserDefaults या File Manager में सहेजना आवश्यक है। जब तक ऐप खुलता है, डेटा पहले से उपलब्ध होना चाहिए। थ्रेड-सुरक्षित लेखन के लिए बैकग्राउंड कॉन्टेक्स्ट के साथ CoreData का उपयोग करें। सहेजने के बाद, मुख्य थ्रेड पर UI अपडेट करें।

swift
func cacheArticles(_ articles: [Article]) {
    let container = NSPersistentContainer(name: "AppModel")
    container.performBackgroundTask { context in
        articles.forEach { article in
            let entity = ArticleEntity(context: context)
            entity.id = Int64(article.id)
            entity.title = article.title
            entity.body = article.body
        }
        try? context.save()
    }
}

Background Fetch का परीक्षण

परीक्षण के लिए, सिम्युलेटर का उपयोग करें — Xcode में Debug — Simulate Background Fetch चुनें। भौतिक डिवाइस पर, आपको सिस्टम द्वारा fetch करने का निर्णय लेने तक प्रतीक्षा करनी होगी। गति बढ़ाने के लिए, आप न्यूनतम अंतराल 1 मिनट सेट कर सकते हैं, लेकिन बैटरी कम होने पर सिस्टम इसे अनदेखा कर सकता है।

सीमाएँ और खामियाँ

Background Fetch की कई सीमाएँ हैं जिन्हें ऐप आर्किटेक्चर डिज़ाइन करते समय ध्यान में रखना महत्वपूर्ण है। मुख्य बात यह है कि सिस्टम पूरी तरह से कॉल आवृत्ति को नियंत्रित करता है, और डेवलपर इसकी गारंटी नहीं दे सकता। न्यूनतम अंतराल सेट होने पर भी, सिस्टम घंटों तक fetch को कॉल नहीं कर सकता।

निष्पादन समय की सीमा

सिस्टम कार्य निष्पादित करने के लिए ऐप को सीमित समय आवंटित करता है — आमतौर पर 30 सेकंड तक। यदि ऐप उस समय के भीतर कम्पलीशन हैंडलर को कॉल नहीं करता है, तो सिस्टम जबरन प्रक्रिया समाप्त कर देता है और भविष्य में जागने की आवृत्ति कम कर देता है। सभी नेटवर्क अनुरोध संक्षिप्त होने चाहिए — प्रति कॉल 1-2 से अधिक नहीं।

बैटरी पर निर्भरता

iOS Background Fetch शेड्यूल करते समय बैटरी स्तर को ध्यान में रखता है। जब चार्ज 20% से नीचे होता है, तो जागने की आवृत्ति कम हो जाती है। जब लो पावर मोड सक्षम होता है, तो सिस्टम सभी ऐप के लिए बैकग्राउंड अपडेट पूरी तरह से अक्षम कर सकता है। उपयोगकर्ता सेटिंग्स में किसी विशिष्ट ऐप के लिए Background App Refresh भी अक्षम कर सकता है।

नेटवर्क सीमाएँ

Background Fetch से शुरू URLSession मानक मोड में काम करता है — बैकग्राउंड सत्र समर्थन के बिना। बड़े डाउनलोड के लिए, बैकग्राउंड कॉन्फ़िगरेशन के साथ URLSession का उपयोग करें। सिस्टम fetch पूरा होने के बाद भी डाउनलोड जारी रखेगा, लेकिन अगले जागने तक प्रगति ट्रैक नहीं की जाएगी।

Background Fetch से BGTaskScheduler में स्थानांतरण

iOS 13 से शुरू करते हुए, Apple BGTaskScheduler को Background Fetch के प्रतिस्थापन के रूप में अनुशंसित करता है। BGTaskScheduler अधिक लचीली शेड्यूलिंग, दो कार्य प्रकार (refresh और processing) और पहचानकर्ताओं के साथ कार्य पंजीकरण प्रदान करता है। स्थानांतरण में कई कदम शामिल हैं और सभी नई परियोजनाओं के लिए अनुशंसित है।

चरण-दर-चरण स्थानांतरण

पहला कदम — BGTaskSchedulerPermittedIdentifiers कुंजी के माध्यम से Info.plist में कार्य पहचानकर्ता परिभाषित करना। दूसरा — BGTaskScheduler.shared.register के माध्यम से AppDelegate में कार्य पंजीकृत करना। तीसरा — performFetchWithCompletionHandler कॉल को register को पारित हैंडलर से बदलना। चौथा — कार्य शेड्यूल करने के लिए submit कॉल करना।

swift
// पहले (Background Fetch)
UIApplication.shared.setMinimumBackgroundFetchInterval(
    UIApplication.backgroundFetchIntervalMinimum
)

// स्थानांतरण के बाद (BGTaskScheduler)
BGTaskScheduler.shared.register(
    forTaskWithIdentifier: "com.example.refresh",
    using: nil
) { task in
    self.handleAppRefresh(task: task as! BGAppRefreshTask)
}

let request = BGAppRefreshTaskRequest(
    identifier: "com.example.refresh"
)
request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60)
try? BGTaskScheduler.shared.submit(request)

BGTaskScheduler के लाभ

BGTaskScheduler अधिक नियंत्रण प्रदान करता है: लंबे संचालन के लिए BGProcessingTask (10 मिनट तक), requiresNetworkConnectivity और requiresExternalPower के माध्यम से निष्पादन शर्तें, और सुचारू समाप्ति के लिए expiration हैंडलर। सिस्टम ऐप उपयोग का भी विश्लेषण करता है, लेकिन डेवलपर अधिक सटीक आवश्यकताएँ निर्धारित कर सकता है।

Background Fetch कब रखना है

यदि ऐप iOS 12 और उससे नीचे का समर्थन करता है, तो Background Fetch आवधिक अपडेट के लिए एकमात्र विकल्प बना रहता है। BGTaskScheduler केवल iOS 13+ से उपलब्ध है। इस मामले में, एक रैपर का उपयोग करें: if #available(iOS 13, *) के माध्यम से उपलब्धता जाँचें और उपयुक्त API कॉल करें।

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

iOS कितनी बार Background Fetch को कॉल करता है?

सटीक आवृत्ति दस्तावेज़ित नहीं है और उपयोगकर्ता के व्यवहार पर निर्भर करती है। सिस्टम विश्लेषण करता है कि उपयोगकर्ता कितनी बार ऐप खोलता है और तदनुसार आवृत्ति समायोजित करता है। औसतन, सक्रिय उपयोग के साथ, fetch प्रति घंटे 1–3 बार कॉल हो सकता है। कम उपयोग के साथ — प्रति दिन 1–2 बार।

मेरा Background Fetch क्यों नहीं कॉल हो रहा है?

तीन शर्तें जाँचें: Background Fetch क्षमता Xcode में सक्षम है, minimumBackgroundFetchInterval सेट किया गया है, और उपयोगकर्ता ने सेटिंग्स में ऐप के लिए Background App Refresh अक्षम नहीं किया है। यह भी जाँचें कि डिवाइस लो पावर मोड में नहीं है और बैटरी स्तर 20% से ऊपर है।

Background Fetch और BGAppRefreshTask में क्या अंतर है?

Background Fetch पुराना API (iOS 7) है, BGAppRefreshTask नया API (iOS 13+) है। BGAppRefreshTask अधिक नियंत्रण प्रदान करता है: expiration हैंडलर, पुनर्निर्धारण क्षमता और स्थिति जाँच। Background Fetch लागू करने में सरल है लेकिन कम लचीला है। Apple नई परियोजनाओं के लिए BGAppRefreshTask का उपयोग करने की अनुशंसा करता है।

क्या Background Fetch के माध्यम से बड़ी फ़ाइलें डाउनलोड की जा सकती हैं?

अनुशंसित नहीं है। Background Fetch समय-सीमित है (30 सेकंड तक)। बड़े डाउनलोड के लिए, बैकग्राउंड कॉन्फ़िगरेशन के साथ URLSession का उपयोग करें — सिस्टम fetch पूरा होने के बाद भी डाउनलोड जारी रखेगा। विकल्प BGProcessingTask (iOS 13+) है, जो 10 मिनट तक और चार्जिंग शर्तों की अनुमति देता है।

क्या Background Fetch बैटरी की खपत करता है?

हाँ, प्रत्येक जागरण प्रोसेसर चालू करने, नेटवर्क स्टैक आरंभ करने और डेटा लोड करने के लिए ऊर्जा की खपत करता है। iOS आवृत्ति को अनुकूलित करता है प्रभाव को कम करने के लिए। सही कार्यान्वयन के साथ — केवल नया डेटा लोड करना, तेज़ कम्पलीशन हैंडलर कॉल — बैटरी पर प्रभाव न्यूनतम है।

सारांश

  • Background Fetch iOS 7 से उपलब्ध, समय-समय पर बैकग्राउंड डेटा लोड करने के लिए एक iOS API है और इसे BGTaskScheduler से बदलने की अनुशंसा की जाती है।
  • सिस्टम नियंत्रित करता है उपयोगकर्ता व्यवहार का विश्लेषण करके कॉल आवृत्ति — डेवलपर जागने के समय की गारंटी नहीं दे सकता।
  • तीन कम्पलीशन हैंडलर स्थितियाँ — .newData, .noData, .failed — भविष्य में ऐप जागने की आवृत्ति को प्रभावित करती हैं।
  • 30 सेकंड की सीमा — लंबे संचालन या एकाधिक अनुक्रमिक नेटवर्क अनुरोध न चलाएँ।
  • क्षमता अनिवार्य है — Xcode में Background Fetch + कोड में minimumBackgroundFetchInterval सेट करना।
  • BGTaskScheduler iOS 13+ से आधुनिक प्रतिस्थापन है, जो अधिक नियंत्रण और दो कार्य प्रकार प्रदान करता है।
  • iOS 12 और उससे नीचे का समर्थन करने वाली परियोजनाओं के लिए, if #available के माध्यम से BGTaskScheduler उपलब्धता जाँच के साथ Background Fetch का उपयोग करें।

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

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

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

यह भी पढ़ें