Background Modes iOS की एक घोषणा योग्य क्षमताओं का सेट है जो ऐप को बैकग्राउंड में जाने के बाद कोड निष्पादित करना जारी रखने की अनुमति देता है। प्रत्येक मोड एक विशिष्ट प्रकार के कार्य से मेल खाता है: ऑडियो, जियोलोकेशन, VoIP, Bluetooth, fetch और processing। Apple, 2026 के अनुसार, Background Modes का गलत उपयोग App Store समीक्षा में ऐप अस्वीकृति के सामान्य कारणों में से एक है।
मुख्य बिंदु
Background Modes Xcode प्रोजेक्ट की क्षमताएं हैं जो बैकग्राउंड में विशिष्ट प्रकार के संचालन करने के ऐप के इरादे की घोषणा करती हैं। Android के विपरीत, जहां ऐप बैकग्राउंड में कोई Service शुरू कर सकता है, iOS को Info.plist में मोड की स्पष्ट घोषणा की आवश्यकता होती है। प्रत्येक मोड के सख्त उपयोग नियम हैं और Apple द्वारा समीक्षा के दौरान जांचा जाता है।
जब ऐप बैकग्राउंड में जाता है, iOS इसे 3–5 सेकंड में निलंबित कर देता है। यदि ऐप Background Mode घोषित करता है और संबंधित API (जैसे ऑडियो के लिए AVAudioSession) का सक्रिय रूप से उपयोग करता है, तो सिस्टम इसे एक विशेष निष्पादन मोड में डालता है। ऐप मेमोरी में रहता है और मोड प्रकार द्वारा सीमित कोड निष्पादित कर सकता है।
iOS निम्नलिखित Background Modes का समर्थन करता है: Audio (ऑडियो), Location (स्थान), VoIP, Bluetooth LE (BLE एक्सेसरीज़), Background Fetch (आवधिक अपडेट), Background Processing (लंबे कार्य), External Accessory Communication, Push to Talk (PTT), और HealthKit। प्रत्येक मोड को ऐप विवरण में औचित्य की आवश्यकता होती है।
| मोड | Info.plist कुंजी | उद्देश्य | iOS संस्करण |
|---|---|---|---|
| Audio | audio | बैकग्राउंड ऑडियो, AirPlay | 4.0+ |
| Location | location | स्थान ट्रैकिंग | 4.0+ |
| VoIP | voip | VoIP पुश सूचनाएं | 4.0+ |
| BLE | bluetooth-central | BLE उपकरणों के साथ काम | 7.0+ |
| Fetch | fetch | आवधिक डेटा डाउनलोड | 7.0+ |
| Processing | processing | लंबे बैकग्राउंड कार्य | 13.0+ |
| Push to Talk | push-to-talk | पुश-टू-टॉक वॉइस | 16.0+ |
Audio Background Mode सबसे आम मोड है, जिसका उपयोग संगीत प्लेयर, पॉडकास्ट ऐप्स और ऑडियो सेवाओं द्वारा किया जाता है। ऐप ऑडियो प्लेबैक जारी रख सकता है, कंट्रोल सेंटर के माध्यम से नियंत्रित किया जा सकता है और लॉक स्क्रीन पर दिखाई दे सकता है। इसे सक्रिय करने के लिए, .playback श्रेणी के साथ AVAudioSession कॉन्फ़िगर करना पर्याप्त है।
बैकग्राउंड में ऑडियो के काम करने के लिए, AVAudioSession को कॉन्फ़िगर और सक्रिय करना आवश्यक है। .playback श्रेणी सिस्टम को बताती है कि ऐप ऑडियो चला रहा है और बैकग्राउंड में सक्रिय रहना चाहिए। इस कॉन्फ़िगरेशन के बिना, ऐप को छोटा करने के 5–10 सेकंड बाद ऑडियो बंद हो जाएगा।
import AVFoundation
func configureAudioSession() {
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(
.playback,
mode: .default,
options: []
)
try session.setActive(true)
} catch {
print("ऑडियो सत्र त्रुटि: \(error)")
}
}
कंट्रोल सेंटर और लॉक स्क्रीन के साथ एकीकरण के लिए, MPRemoteCommandCenter कॉन्फ़िगर करना आवश्यक है। यह प्ले, पॉज़, अगला और पिछला ट्रैक कमांड को संभालता है। मेटाडेटा प्रदर्शित करने के लिए MPNowPlayingInfoProperty को अपडेट करना भी आवश्यक है: ट्रैक नाम, कलाकार, कलाकृति और प्लेबैक प्रगति।
iOS 14 से शुरू, Audio Background Mode वीडियो के लिए Picture in Picture का भी समर्थन करता है। ऐप छोटा करने पर फ्लोटिंग विंडो में वीडियो दिखाना जारी रख सकता है। सक्रिय करने के लिए, AVPlayerLayer के साथ AVPictureInPictureController का उपयोग करें। यह मोड केवल तभी काम करता है जब ऐप ऑडियो ट्रैक चला रहा हो।
Location Background Mode ऐप को बैकग्राउंड में स्थान अपडेट प्राप्त करने की अनुमति देता है। इसका उपयोग नेविगेशन ऐप्स, फ़िटनेस ट्रैकर्स, डिलीवरी ऐप्स और सोशल नेटवर्क में किया जाता है। इस मोड के बिना, ऐप बैकग्राउंड में जाने पर केवल एक बार स्थान प्राप्त करता है, जिसके बाद अपडेट बंद हो जाते हैं।
CLLocationManager कई ट्रैकिंग रणनीतियों का समर्थन करता है: महत्वपूर्ण परिवर्तन स्थान, मानक स्थान ट्रैकिंग और क्षेत्र निगरानी। अधिकतम सटीकता के साथ बैकग्राउंड कार्य के लिए, allowsBackgroundLocationUpdates = true और pausesLocationUpdatesAutomatically = false का उपयोग करें।
बैकग्राउंड में निरंतर स्थान ट्रैकिंग सबसे अधिक ऊर्जा-गहन परिदृश्यों में से एक है। iOS स्वचालित रूप से गति के अनुसार अपडेट आवृत्ति को अनुकूलित करता है: चलने पर हर 10–30 सेकंड, गाड़ी चलाने पर हर 1–5 सेकंड। नेविगेशन के लिए, desiredAccuracy = kCLLocationAccuracyBestForNavigation का उपयोग करें।
let locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.activityType = .fitness
locationManager.startUpdatingLocation()
significant-change location मोड Location Background Mode के बिना काम करता है — सिस्टम ऐप को तभी जगाता है जब निर्देशांक महत्वपूर्ण रूप से बदलते हैं (आमतौर पर 500 मी या अधिक)। इसे निरंतर GPS की आवश्यकता नहीं होती, जिससे बैटरी बचती है। मौसम ऐप्स के लिए उपयुक्त जो उपयोगकर्ता के स्थानांतरित होने पर डेटा अपडेट करते हैं।
Bluetooth LE Background Mode ऐप को बैकग्राउंड में BLE उपकरणों के साथ इंटरैक्ट करने की अनुमति देता है। इसका उपयोग फ़िटनेस बैंड, मेडिकल सेंसर, स्मार्ट होम उपकरणों और बीकन नेविगेशन में किया जाता है। मोड दो उपप्रकारों में विभाजित है: bluetooth-central (ऐप उपकरणों से जुड़ता है) और bluetooth-peripheral (ऐप एक उपकरण के रूप में कार्य करता है)।
Central के रूप में कार्य करने वाला ऐप बैकग्राउंड में BLE उपकरणों को स्कैन और कनेक्ट कर सकता है। ऐसा करने के लिए, Background Modes में bluetooth-central निर्दिष्ट करें और CBCentralManager.scanForPeripherals को CBCentralManagerScanOptionAllowDuplicatesKey विकल्प के साथ कॉल करें। बैकग्राउंड में, स्कैनिंग कम आवृत्ति पर चलती है — सिस्टम ऊर्जा बचाने के लिए खोज में देरी कर सकता है।
Peripheral के रूप में कार्य करने वाला ऐप सेवाओं का विज्ञापन कर सकता है और अन्य उपकरणों के अनुरोधों का जवाब दे सकता है। bluetooth-peripheral मोड ऐप को बैकग्राउंड में भी अन्य BLE उपकरणों को दिखाई देने की अनुमति देता है। इसका उपयोग HealthKit ऐप्स और IoT समाधानों में किया जाता है।
iBeacon निगरानी बिना अतिरिक्त अनुमतियों के बैकग्राउंड में काम करती है — सिस्टम स्वयं बीकन क्षेत्रों में प्रवेश और निकास को ट्रैक करता है। लेकिन बीकन सामग्री (proximity UUID, major, minor) स्कैन करने के लिए Bluetooth अनुमति और bluetooth-central Background Mode की आवश्यकता होती है। निगरानी के लिए CLBeaconRegion के साथ CLLocationManager का उपयोग करें।
VoIP Background Mode वॉइस संचार ऐप्स (Skype, Zoom, WhatsApp) के लिए डिज़ाइन किया गया है। यह मोड ऐप को इनकमिंग कॉल प्राप्त करने के लिए सर्वर से जुड़ा रहने की अनुमति देता है। iOS 8 से शुरू, VoIP के लिए PushKit का उपयोग किया जाता है — एक फ्रेमवर्क जो APNs को शामिल किए बिना VoIP सर्वर से पुश सूचनाओं को संभालता है।
PushKit एकमात्र तंत्र है जो डिवाइस पर VoIP सूचनाओं की डिलीवरी की गारंटी देता है। जब PushKit सूचना प्राप्त होती है, सिस्टम ऐप को जगाता है, भले ही वह समाप्त कर दिया गया हो। ऐप को 30 सेकंड के भीतर सर्वर के साथ कनेक्शन स्थापित करना और इनकमिंग कॉल के लिए स्थानीय सूचना प्रदर्शित करनी चाहिए।
import PushKit
class VoIPHandler: NSObject, PKPushRegistryDelegate {
func pushRegistry(
_ registry: PKPushRegistry,
didReceiveIncomingPushWith payload: PKPushPayload,
for type: PKPushType,
completion: @escaping () -> Void
) {
let caller = payload.dictionaryPayload["caller"] as! String
reportIncomingCall(from: caller)
completion()
}
}
PushKit का उपयोग सामान्य सूचनाओं के लिए नहीं किया जा सकता — केवल VoIP, watchOS संचार और फ़ाइल प्रदाताओं के लिए। Apple समीक्षा के दौरान इसकी जांच करता है। अनुचित उपयोग से ऐप अस्वीकृति होती है। iOS 13 से शुरू, PushKit केवल सूचना वितरित करता है — कॉल स्क्रीन प्रदर्शित करने के लिए CXProvider (CallKit) को कॉल करना अनिवार्य है।
Background Fetch और Background Processing बैकग्राउंड सामग्री अपडेट और लंबे कार्यों के लिए मोड हैं। Fetch छोटे आवधिक अपडेट (30 सेकंड तक) के लिए है, Processing शर्तों (Wi-Fi, चार्जिंग) के साथ लंबे कार्यों (10 मिनट तक) के लिए है। Processing केवल iOS 13+ पर उपलब्ध है।
Fetch मोड सिस्टम को नई सामग्री डाउनलोड करने के लिए समय-समय पर ऐप जगाने की अनुमति देता है। सिस्टम उपयोगकर्ता व्यवहार का विश्लेषण करता है और इष्टतम समय चुनता है। ऐप को 30 सेकंड के भीतर completion handler को कॉल करना होगा। Fetch समाचार ऐप्स, सोशल मीडिया फ़ीड और मौसम के लिए उपयुक्त है।
BGProcessingTask उन कार्यों के लिए डिज़ाइन की गई है जो उपयोगकर्ता के हस्तक्षेप के बिना चल सकते हैं: कैश सफाई, बड़े डेटाबेस सिंक्रनाइज़ेशन, मीडिया फ़ाइल प्रसंस्करण। सिस्टम केवल अनुकूल परिस्थितियों में कार्य शुरू करता है — डिवाइस चार्ज हो रहा है, Wi-Fi से जुड़ा है, लो पावर मोड में नहीं है। 10 मिनट तक उपलब्ध।
BGProcessingTask के लिए, requiresExternalPower और requiresNetworkConnectivity निर्दिष्ट करना आवश्यक है। यदि शर्तें पूरी नहीं होती हैं तो सिस्टम निष्पादन को अनिश्चित काल के लिए स्थगित कर सकता है। BGAppRefreshTask के विपरीत, जिसे दिन में कम से कम एक बार निष्पादित किया जाना चाहिए, Processing हफ्तों तक निष्पादित नहीं हो सकता है यदि डिवाइस शायद ही कभी चार्ज होता है।
Apple ऐप समीक्षा के दौरान Background Modes के उपयोग की सख्ती से जांच करता है। मुख्य नियम: प्रत्येक सक्षम मोड को ऐप की कार्यक्षमता द्वारा उचित ठहराया जाना चाहिए। यदि कोई ऐप Location Mode घोषित करता है लेकिन जियोलोकेशन का उपयोग नहीं करता है, तो इसे क्षमता हटाने की आवश्यकता के साथ अस्वीकार कर दिया जाएगा।
सबसे आम उल्लंघन: Location Mode स्पष्ट आवश्यकता के बिना (ऐप विज्ञापन दिखाने के लिए “हमेशा” एक्सेस का अनुरोध करता है), बैकग्राउंड ऑडियो प्लेबैक के बिना Audio Mode, PushKit के बिना VoIP, Bluetooth उपकरणों के बिना BLE Mode। Apple अद्यतन चरण में भी ऐप को अस्वीकार कर सकता है यदि मोड अब उपयोग नहीं किया जाता है।
समीक्षा के लिए सबमिट करते समय, नोट्स में प्रत्येक मोड के लिए विशिष्ट औचित्य प्रदान करें। उदाहरण के लिए, “Location Background Mode का उपयोग फ़िटनेस सुविधा में उपयोगकर्ता के मार्ग को ट्रैक करने के लिए किया जाता है।” स्पष्टीकरण के बिना, समीक्षक ऐप को अस्वीकार कर सकता है। गोपनीय सुविधाओं (VoIP) के लिए, Apple परीक्षण खाते का अनुरोध कर सकता है।
मोड का न्यूनतम आवश्यक सेट उपयोग करें। यदि आपके ऐप को प्रति घंटे एक बार बैकग्राउंड डेटा डाउनलोड की आवश्यकता है — Location Mode सक्षम न करें, Fetch या BGAppRefreshTask का उपयोग करें। अतिरिक्त मोड न केवल अस्वीकृति की ओर ले जाते हैं, बल्कि नकारात्मक प्रभाव भी पैदा करते हैं: उपयोगकर्ता सेटिंग्स में देखता है कि ऐप बैकग्राउंड में जियोलोकेशन का उपयोग करता है।
अक्सर पूछे जाने वाले प्रश्न
संख्या की कोई सीमा नहीं है, लेकिन प्रत्येक मोड को ऐप की कार्यक्षमता द्वारा उचित ठहराया जाना चाहिए। बिना आवश्यकता के सभी मोड सक्षम करना समीक्षा के दौरान अस्वीकृति का एक गारंटीकृत कारण है। व्यावहारिक सीमा 2–3 मोड प्रति ऐप है, अन्यथा उपयोगकर्ता कई अनुमति अनुरोध देखेगा।
UIApplication.shared.applicationState का उपयोग करें — ऐप जांच सकता है कि वह बैकग्राउंड में है या नहीं (state == .background)। व्यवहार स्विच करने के लिए UIApplication.didEnterBackgroundNotification और willEnterForegroundNotification सूचनाओं का भी निरीक्षण किया जा सकता है।
Audio — स्पीकर या हेडफ़ोन के माध्यम से ध्वनि चलाना। AirPlay — Apple TV और अन्य AirPlay उपकरणों पर ऑडियो और वीडियो स्ट्रीम करना। व्यवहार में, Audio Mode दोनों परिदृश्यों को कवर करता है क्योंकि AirPlay ऑडियो सत्र का उपयोग करता है। iOS 7+ से अलग AirPlay मोड की आवश्यकता नहीं है।
हां, इसके लिए requestAlwaysAuthorization के बजाय requestWhenInUseAuthorization() का उपयोग करें। ऐप केवल अग्रभूमि में स्थान प्राप्त करेगा। यदि बैकग्राउंड में अल्पकालिक ट्रैकिंग की आवश्यकता है, तो startUpdatingLocation() कॉल करें और willResignActive में रोकें।
प्रत्येक मोड बिजली की खपत बढ़ाता है। Location Mode सबसे अधिक मांग वाला है, निरंतर ट्रैकिंग के साथ बैटरी जीवन को 30–50% तक कम कर सकता है। Audio Mode मध्यम (15–20%) है। Fetch और Processing न्यूनतम (2–5%) हैं। BLE Mode Bluetooth LE की ऊर्जा दक्षता के कारण कम (5–10%) है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें