बैकग्राउंड कार्य और रिफ़्रेश
BGTaskScheduler से बैकग्राउंड कार्य शेड्यूल कीजिए।
बैकग्राउंड कार्य और रिफ़्रेश, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
पृष्ठभूमि कार्य क्यों आवश्यक हैं
iOS बैटरी बचाने के लिए ऐप्स को सक्रिय रूप से निलंबित करता है। पृष्ठभूमि में रहते हुए उपयोगी कार्य—जैसे फ़ीड ताज़ा करना या डाउनलोड संसाधित करना—करने के लिए उसे BGTaskScheduler के माध्यम से शेड्यूल करें। सिस्टम तय करता है कि उसे कब चलाना है और आपकी आवश्यकताओं को ऊर्जा तथा उपयोग के पैटर्न के साथ संतुलित करता है।
import BackgroundTasks
// You request work; the system schedules it later
// at an opportune moment (charging, on Wi-Fi, etc.)दो कार्य प्रकार
दो प्रकार होते हैं: छोटे और बार-बार होने वाले अपडेट के लिए BGAppRefreshTask (कुछ सेकंड), और लंबे, अधिक संसाधन वाले कार्यों के लिए BGProcessingTask (कुछ मिनट), जैसे डेटाबेस का रखरखाव; इसमें बिजली या नेटवर्क की आवश्यकता वैकल्पिक रूप से रखी जा सकती है।
import BackgroundTasks
// BGAppRefreshTask -> quick content refresh
// BGProcessingTask -> long maintenance, can require
// external power / networkपहचानकर्ता घोषित करना
हर कार्य के लिए एक विशिष्ट पहचानकर्ता चाहिए, जिसे आप Info.plist में BGTaskSchedulerPermittedIdentifiers के अंतर्गत सूचीबद्ध करते हैं। इस घोषणा के बिना पंजीकरण विफल हो जाता है। रिवर्स-DNS शैली की स्ट्रिंग्स का उपयोग करें।
// Info.plist:
// BGTaskSchedulerPermittedIdentifiers = [
// "com.example.app.refresh",
// "com.example.app.cleanup"
// ]
let ids = "declare every identifier in Info.plist"
_ = idsहैंडलर register करना
ऐप शुरू होने पर हर पहचानकर्ता के लिए BGTaskScheduler.shared.register के साथ एक हैंडलर register करें। यह ऐप का प्रारंभ पूरा होने से पहले होना आवश्यक है। बाद में जब भी सिस्टम कार्य चलाने का निर्णय लेता है, हैंडलर चलता है।
import BackgroundTasks
func registerTasks() {
BGTaskScheduler.shared.register(
forTaskWithIdentifier: "com.example.app.refresh",
using: nil) { task in
handleRefresh(task as! BGAppRefreshTask)
}
}अनुरोध submit करना
Register करने से केवल हैंडलर जुड़ता है। वास्तव में कार्य चलाने का अनुरोध करने के लिए BGAppRefreshTaskRequest बनाएँ, सबसे शुरुआती आरंभ-तिथि सेट करें और उसे submit करें। सिस्टम इस तिथि को संकेत मानता है, गारंटी नहीं।
import BackgroundTasks
func scheduleRefresh() {
let request = BGAppRefreshTaskRequest(
identifier: "com.example.app.refresh")
request.earliestBeginDate = Date(
timeIntervalSinceNow: 15 * 60)
try? BGTaskScheduler.shared.submit(request)
}हमेशा फिर से शेड्यूल करें
Submit किया गया अनुरोध अधिकतम एक बार चलता है। लगातार ताज़ा करते रहने के लिए आपका हैंडलर समाप्त होने से पहले अगला अनुरोध submit करे। पहले फिर से शेड्यूल करें और उसके बाद कार्य करें, ताकि काम के बीच ऐप क्रैश होने पर चक्र न रुके।
import BackgroundTasks
func handleRefresh(_ task: BGAppRefreshTask) {
scheduleRefresh() // queue the next run first
// ... then perform this run's work
}पूरा होने का संकेत देना
काम पूरा होने पर आपको task.setTaskCompleted(success:) कॉल करना आवश्यक है। इसे भूलने पर आपका पृष्ठभूमि बजट व्यर्थ जाता है और भविष्य के कार्यों को कम प्राथमिकता मिल सकती है। कार्य सफल हुआ या नहीं, यह जानकारी दें, ताकि सिस्टम शेड्यूलिंग को उसके अनुसार ढाल सके।
import BackgroundTasks
func handleRefresh(_ task: BGAppRefreshTask) {
scheduleRefresh()
Task {
let ok = await fetchLatest()
task.setTaskCompleted(success: ok)
}
}
func fetchLatest() async -> Bool { true }समाप्ति हैंडलर का सम्मान करना
सिस्टम समय से पहले समय वापस ले सकता है। task.expirationHandler को इस तरह सेट करें कि चल रहे कार्यों को cancel करके सफ़ाई की जाए, ताकि समय कम कर दिए जाने पर आप सही ढंग से बाहर निकल सकें। इसे समय-सीमा की चेतावनी समझें।
import BackgroundTasks
func handle(_ task: BGAppRefreshTask) {
let work = Task { await fetchLatest() }
task.expirationHandler = {
work.cancel() // stop before the OS suspends us
}
}
func fetchLatest() async -> Bool { true }आवश्यकताओं वाले प्रसंस्करण कार्य
भारी कार्यों के लिए BGProcessingTaskRequest में आप requiresNetworkConnectivity और requiresExternalPower सेट कर सकते हैं। सिस्टम इन स्थितियों की प्रतीक्षा करता है, इसलिए लंबे कार्य रात भर चार्ज होते समय वाई-फ़ाई पर चल सकते हैं।
import BackgroundTasks
func scheduleCleanup() {
let req = BGProcessingTaskRequest(
identifier: "com.example.app.cleanup")
req.requiresExternalPower = true
req.requiresNetworkConnectivity = false
try? BGTaskScheduler.shared.submit(req)
}डिबगर में जाँच करना
सिस्टम के शेड्यूल करने के लिए आपको घंटों प्रतीक्षा नहीं करनी पड़ेगी। डिबगर में रुकें और किसी register किए गए कार्य को तुरंत शुरू करने के लिए LLDB कमांड चलाएँ, ताकि आप हैंडलर को शुरू से अंत तक जाँच सकें।
// In LLDB while paused:
// e -l objc -- (void)[[BGTaskScheduler sharedScheduler]
// _simulateLaunchForTaskWithIdentifier:
// @"com.example.app.refresh"]
let test = "force-launch task via LLDB"
_ = testपूरा ताज़ा-चक्र
सभी हिस्सों को जोड़ें: ऐप शुरू होने पर register करें, पृष्ठभूमि में जाने पर submit करें, और हैंडलर में फिर से शेड्यूल करें, समाप्ति हैंडलर से सुरक्षा दें, असमकालिक कार्य करें और पूरा होने की सूचना दें।
import BackgroundTasks
func handleRefresh(_ task: BGAppRefreshTask) {
scheduleRefresh()
let work = Task { await fetchLatest() }
task.expirationHandler = { work.cancel() }
Task {
let ok = await work.value
task.setTaskCompleted(success: ok)
}
}
func fetchLatest() async -> Bool { true }त्वरित जाँच
बार-बार चलने वाले ताज़ा कार्य के जीवनचक्र को याद करें।
पुनरावलोकन
आपने पृष्ठभूमि शेड्यूलिंग सीखी:
- छोटे ताज़ा कार्यों के लिए
BGAppRefreshTaskऔर बिजली/नेटवर्क आवश्यकताओं वाले लंबे रखरखाव कार्यों के लिएBGProcessingTask। - पहचानकर्ताओं को Info.plist में घोषित करें, ऐप शुरू होने पर हैंडलर
registerकरें औरearliestBeginDateवाली तिथि के साथ अनुरोधsubmitकरें। - हैंडलर के अंदर अगली बार का कार्य फिर से शेड्यूल करें,
expirationHandlerसेट करें और हमेशाsetTaskCompletedकॉल करें। - जाँच करने के लिए LLDB के माध्यम से कार्यों को तुरंत शुरू करें और test करें।
एआई शिक्षक के साथ Swift सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 122
- पाठ
- 409
अक्सर पूछे जाने वाले प्रश्न
क्या “बैकग्राउंड कार्य और रिफ़्रेश” पाठ निःशुल्क है?
हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “बैकग्राउंड कार्य और रिफ़्रेश” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“बैकग्राउंड कार्य और रिफ़्रेश” में मैं क्या सीखूँगा?
BGTaskScheduler से बैकग्राउंड कार्य शेड्यूल कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“बैकग्राउंड कार्य और रिफ़्रेश” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- पुश नोटिफ़िकेशन के लिए पंजीकरण
- नोटिफ़िकेशन पेलोड सँभालना
- बैकग्राउंड कार्य और रिफ़्रेश
- नोटिफ़िकेशन ऐक्शन और श्रेणियाँ