Background Fetch: یہ کیا ہے، کام کرنے کا اصول اور اپ ڈیٹ کنفیگریشن

مصنف: IT Sectr اشاعت: 2026-03-27 مطالعے کا وقت: 8 منٹ

Background Fetch ایک iOS طریقہ کار ہے جو نیا مواد ڈاؤن لوڈ کرنے کے لیے پس منظر میں وقتاً فوقتاً ایپ کو جگاتا ہے۔ سسٹم صارف کے رویے کا تجزیہ کرتا ہے اور اپ ڈیٹ کے لیے بہترین اوقات کا انتخاب کرتا ہے۔ Apple، 2026 کے مطابق، ایپ کو آپریشن انجام دینے کے لیے 30 سے 120 سیکنڈ ملتے ہیں، جس کے بعد سسٹم عمل کو معطل یا ختم کر دیتا ہے۔

اہم نکات

  • Background Fetch پس منظر میں وقتاً فوقتاً مواد کو اپ ڈیٹ کرنے کے لیے ایک iOS API ہے۔
  • سسٹم کنٹرول کرتا ہے صارف کے رویے کے تجزیے کی بنیاد پر جاگنے کی تعدد کو۔
  • کم سے کم وقفہ UIApplication.minimumBackgroundFetchInterval کے ذریعے سیٹ کیا جاتا ہے۔
  • فرسودگی — iOS 13+ سے یہ طریقہ کار legacy سمجھا جاتا ہے، 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 استعمال کریں۔ محفوظ کرنے کے بعد، مرکزی تھریڈ میں یوزر انٹرفیس اپ ڈیٹ کریں۔

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 زیادہ لچکدار نظام الاوقات، دو قسم کے کام (ریفریش اور پروسیسنگ) اور شناخت کنندگان کے ساتھ کام کی رجسٹریشن فراہم کرتا ہے۔ منتقلی میں کئی مراحل شامل ہیں اور تمام نئے پروجیکٹس کے لیے تجویز کی جاتی ہے۔

مرحلہ وار منتقلی

پہلا مرحلہ — 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 کے ذریعے عملدرآمد کی شرائط، اور مناسب اختتام کے لیے میعاد ختمی ہینڈلر۔ سسٹم ایپ کے استعمال کا بھی تجزیہ کرتا ہے، لیکن ڈویلپر زیادہ درست تقاضے مقرر کر سکتا ہے۔

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 زیادہ کنٹرول فراہم کرتی ہے: میعاد ختمی ہینڈلر، دوبارہ نظام الاوقات کی صلاحیت اور حالت کی جانچ۔ 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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں