Background Task: کلیدی تصورات، کاموں کی رجسٹریشن اور پس منظر میں عملدرآمد

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

Background Task ایک iOS میکانزم ہے جو ایپلیکیشن کو پس منظر میں جانے کے بعد آپریشن مکمل کرنے کی اجازت دیتا ہے۔ سسٹم کام کو انجام دینے کے لیے محدود وقت (30 سیکنڈ تک) مختص کرتا ہے، جس کے بعد ایپلیکیشن کو زبردستی معطل کر دیا جاتا ہے۔ Apple، 2026 کے مطابق، پس منظر کے کام کو صحیح طریقے سے مکمل کرنے کے لیے ایکسپائریشن ہینڈلر کا استعمال لازمی شرط ہے۔

اہم نکات

  • Background Task — ایپ کے پس منظر میں جانے کے بعد آپریشن مکمل کرنے کے لیے iOS میکانزم۔
  • beginBackgroundTask — پس منظر کے کام کو رجسٹر کرنے کے لیے UIApplication کا کلیدی طریقہ۔
  • ایکسپائریشن ہینڈلر — مختص وقت ختم ہونے پر سسٹم کے ذریعے بلایا جانے والا کوڈ بلاک۔
  • 30 سیکنڈ کی حد — معیاری عملدرآمد کا وقت، Background Modes کے ذریعے بڑھایا جا سکتا ہے۔
  • UIApplication.shared.endBackgroundTask — کام کو صحیح طریقے سے مکمل کرنے کے لیے لازمی کال۔

iOS میں Background Task کیا ہے؟

Background Task ایک پروگرامیٹک iOS میکانزم ہے جو ایپلیکیشن کو پس منظر میں جانے کے بعد عملدرآمد کا وقت بڑھانے کی اجازت دیتا ہے۔ جب صارف ایپلیکیشن کو چھوٹا کرتا ہے، سسٹم UIApplicationDelegate.applicationDidEnterBackground کو کال کرتا ہے۔ اگر اس وقت کوئی اہم آپریشن چل رہا ہو (ڈیٹا محفوظ کرنا، درخواست بھیجنا)، ایپلیکیشن beginBackgroundTask کے ذریعے اضافی وقت کی درخواست کر سکتی ہے۔

Background Tasks کی ضرورت کیوں

Background Task استعمال کیے بغیر، ایپلیکیشن پس منظر میں جانے کے 3–5 سیکنڈ کے اندر زبردستی معطل کر دی جاتی ہے۔ تمام نامکمل آپریشنز میں خلل پڑتا ہے: ڈیٹا محفوظ نہیں ہوتا، نیٹ ورک کی درخواستیں منسوخ ہو جاتی ہیں، حالتیں کھو جاتی ہیں۔ Background Task ایپلیکیشن کو ان آپریشنز کو صحیح طریقے سے مکمل کرنے کے لیے 30 سیکنڈ تک کا وقت دیتا ہے۔

  • حالت محفوظ کرنا — CoreData، UserDefaults یا فائل سسٹم میں ڈیٹا لکھنا۔
  • نیٹ ورک کی درخواستیں مکمل کرنا — سرور کے جواب کا انتظار اور نتیجہ پر کارروائی۔
  • تجزیہ بھیجنا — معطلی سے پہلے تجزیہ سرور کو واقعات بھیجنا۔
  • وسائل کی صفائی — فائل ڈسکرپٹر بند کرنا، میموری خالی کرنا۔
  • کیشنگ — اگلی لانچ پر بحالی کے لیے درمیانی نتائج لکھنا۔

تاریخ اور ارتقاء

beginBackgroundTask iOS 4.0 میں ظاہر ہوا — ملٹی ٹاسکنگ کو سپورٹ کرنے والی پہلی ریلیز۔ iOS 4 سے پہلے، ہوم بٹن دبانے پر ایپلیکیشن مکمل طور پر ختم ہو جاتی تھی۔ iOS 7 نے Background Fetch اور URLSession پس منظر ترتیب متعارف کرائی۔ iOS 13 سے شروع کرتے ہوئے، Apple نئے پروجیکٹس کے لیے BGTaskScheduler کی سفارش کرتا ہے، لیکن beginBackgroundTask قلیل مدتی آپریشنز کے لیے متعلقہ رہتا ہے۔

beginBackgroundTask کیسے کام کرتا ہے: زندگی کا چکر

beginBackgroundTask UIApplication کا ایک طریقہ ہے جو کام کو رجسٹر کرتا ہے اور ایک منفرد UIBackgroundTaskIdentifier واپس کرتا ہے۔ سسٹم پس منظر میں عملدرآمد کے ٹائمر کو بڑھاتا ہے۔ وقت ختم ہونے پر ایکسپائریشن ہینڈلر بلایا جاتا ہے، جس کے بعد ایپلیکیشن کو کام کو صحیح طریقے سے مکمل کرنے کے لیے endBackgroundTask(identifier:) کال کرنا چاہیے۔

مرحلہ وار عملدرآمد کا عمل

مرحلہ 1 — ایپلیکیشن didEnterBackground اطلاع وصول کرتی ہے۔ مرحلہ 2 — beginBackgroundTask(expirationHandler:) کو بلایا جاتا ہے۔ مرحلہ 3 — اہم آپریشن (محفوظ کرنا، نیٹ ورک کی درخواست) انجام دیا جاتا ہے۔ مرحلہ 4 — مکمل ہونے پر، endBackgroundTask(identifier:) کو بلایا جاتا ہے۔ اگر آپریشن 30 سیکنڈ میں مکمل نہیں ہوتا — سسٹم ایکسپائریشن ہینڈلر کو بلاتا ہے، اور ایپلیکیشن کو فوری طور پر کام ختم کرنا چاہیے۔

swift
var backgroundTaskID: UIBackgroundTaskIdentifier = .invalid

func startBackgroundTask() {
    backgroundTaskID = UIApplication.shared.beginBackgroundTask {
        // ایکسپائریشن ہینڈلر
        UIApplication.shared.endBackgroundTask(backgroundTaskID)
        backgroundTaskID = .invalid
    }
}

func finishBackgroundTask() {
    UIApplication.shared.endBackgroundTask(backgroundTaskID)
    backgroundTaskID = .invalid
}

UIApplication.shared.backgroundTimeRemaining

backgroundTimeRemaining پراپرٹی پس منظر کے کام کے زبردستی ختم ہونے سے پہلے بقیہ سیکنڈز کی تعداد واپس کرتی ہے۔ قدر حقیقی وقت میں کم ہوتی ہے۔ اگر ایپلیکیشن پس منظر میں نہیں ہے — یہ DBL_MAX واپس کرتی ہے۔ رویہ کو ڈھالنے کے لیے اس پراپرٹی کا استعمال کریں: جب 5 سیکنڈ سے کم رہ جائے تو لمبے آپریشنز کو روکیں اور پیشرفت محفوظ کریں۔

متعدد کام

ایک ایپلیکیشن ایک ساتھ متعدد Background Tasks رجسٹر کر سکتی ہے۔ ہر کام کو اپنا شناخت کنندہ ملتا ہے۔ کل عملدرآمد کا وقت مجموعی ہوتا ہے — اگر 3 کام رجسٹرڈ ہیں تو ایپلیکیشن 90 سیکنڈ تک حاصل کر سکتی ہے۔ تاہم، اگر وسائل ختم ہو جائیں یا بیٹری کی حد سے تجاوز ہو جائے تو سسٹم ایپلیکیشن کو پہلے ختم کر سکتا ہے۔

ایکسپائریشن ہینڈلر: لازمی تکمیل کا انتظام

ایکسپائریشن ہینڈلر ایک کوڈ بلاک ہے جسے سسٹم پس منظر کے کام کے لیے مختص وقت ختم ہونے پر بلاتا ہے۔ ایکسپائریشن ہینڈلر کا ہونا Apple کی لازمی شرط ہے۔ اس کے بغیر، ایپلیکیشن سسٹم کے ذریعے زبردستی ختم کی جا سکتی ہے اور ڈیٹا کھو سکتا ہے۔

ایکسپائریشن ہینڈلر میں کیا ہونا چاہیے

ایکسپائریشن ہینڈلر کو ایپلیکیشن کی حالت محفوظ کرنے کے لیے کم سے کم اقدامات کرنے چاہئیں: موجودہ ڈیٹا کو مستقل ذخیرہ میں محفوظ کریں، متعلقہ شناخت کنندہ کے ساتھ endBackgroundTask کو کال کریں اور شناخت کنندہ کو .invalid پر سیٹ کریں۔ ایکسپائریشن ہینڈلر کے اندر نئے لمبے آپریشنز شروع کرنا ممنوع ہے — عملدرآمد کا وقت 1–2 سیکنڈ تک محدود ہے۔

swift
func handleExpiration() {
    // عملدرآمد کی پیشرفت محفوظ کی جا رہی ہے
    saveProgressToUserDefaults()

    // فعال نیٹ ورک کی درخواستیں منسوخ کی جا رہی ہیں
    currentTask?.cancel()

    // Background Task ختم کیا جا رہا ہے
    UIApplication.shared.endBackgroundTask(backgroundTaskID)
    backgroundTaskID = .invalid
}

// ایکسپائریشن ہینڈلر کے ساتھ رجسٹریشن
backgroundTaskID = UIApplication.shared.beginBackgroundTask(
    withName: "SaveDocument",
    expirationHandler: handleExpiration
)

ایکسپائریشن ہینڈلر کے ساتھ عام غلطیاں

سب سے عام غلطی ایکسپائریشن ہینڈلر کے اندر endBackgroundTask کو کال نہ کرنا ہے۔ اس صورت میں، سسٹم کام کو فعال سمجھتا رہتا ہے، ایپلیکیشن معطل حالت میں نہیں جاتی اور بیٹری ختم ہو جاتی ہے۔ دوسری غلطی ایکسپائریشن ہینڈلر کے اندر لمبے آپریشنز شروع کرنا ہے۔ سسٹم ان کے مکمل ہونے سے پہلے ایپلیکیشن ختم کر سکتا ہے اور ڈیٹا کھو جائے گا۔

بقیہ وقت کی جانچ

ایکسپائریشن ہینڈلر میں، عملدرآمد کا وقت انتہائی محدود ہوتا ہے — عام طور پر 1 سیکنڈ سے کم۔ لہذا، ہینڈلر کے اندر آپ انجام نہیں دے سکتے: پیچیدہ حسابات، نیٹ ورک کی درخواستیں، CoreData میں بڑی مقدار میں ڈیٹا لکھنا۔ صرف ایٹمی آپریشنز: UserDefaults میں ایک کلید لکھنا، حالت کا جھنڈا سیٹ کرنا، endBackgroundTask کال کرنا۔

Swift میں Background Task کوڈ کی مثالیں

جب ایپلیکیشن پس منظر میں جائے تو دستاویز محفوظ کرنے کے لیے ایک مکمل Background Task نفاذ دیکھیں۔ مثال میں کام کی رجسٹریشن، بقیہ وقت کی جانچ کے ساتھ آپریشن کا نفاذ، اور endBackgroundTask کے ذریعے صحیح تکمیل شامل ہے۔

پیشرفت کے ساتھ دستاویز محفوظ کرنا

پس منظر میں جاتے وقت، ایپلیکیشن ایک بڑی دستاویز کی محفوظ کاری شروع کرتی ہے۔ Background Task آپریشن کے لیے 30 سیکنڈ تک کا وقت فراہم کرتا ہے۔ اگر وقت ختم ہو جائے — ایکسپائریشن ہینڈلر درمیانی نتائج محفوظ کرتا ہے۔ محفوظ کاری مکمل ہونے کے بعد، وسائل خالی کرنے کے لیے endBackgroundTask بلایا جاتا ہے۔

swift
class DocumentManager {
    private var backgroundTaskID: UIBackgroundTaskIdentifier = .invalid

    func saveDocumentInBackground(document: Document) {
        backgroundTaskID = UIApplication.shared.beginBackgroundTask {
            self.saveProgress(document)
            self.endBackgroundTask()
        }

        DispatchQueue.global().async {
            document.save()
            self.endBackgroundTask()
        }
    }

    private func endBackgroundTask() {
        UIApplication.shared.endBackgroundTask(backgroundTaskID)
        backgroundTaskID = .invalid
    }
}

سرور کو ڈیٹا بھیجنا

پس منظر میں نیٹ ورک کی درخواستوں کو خصوصی توجہ کی ضرورت ہے — ایکسپائریشن ہینڈلر جواب ملنے سے پہلے درخواست روک سکتا ہے۔ dataTask کے ساتھ URLSession استعمال کریں اور بھیجنے سے پہلے backgroundTimeRemaining چیک کریں۔ اگر 5 سیکنڈ سے کم رہ گئے ہیں — اگلی ایپلیکیشن بیداری تک بھیجنا ملتوی کریں۔

swift
func sendCriticalData(data: Data) {
    backgroundTaskID = UIApplication.shared.beginBackgroundTask {
        // دوبارہ بھیجنے کے لیے ڈیٹا محفوظ کیا جا رہا ہے
        saveForRetry(data)
        self.endBackgroundTask()
    }

    let task = URLSession.shared.dataTask(with: request) { _, _, error in
        if error != nil {
            saveForRetry(data)
        }
        self.endBackgroundTask()
    }
    task.resume()
}

بقیہ وقت کی نگرانی

لمبے آپریشنز کے لیے، UIApplication.shared.backgroundTimeRemaining کی نگرانی کریں۔ اگر قدر ایک حد (10 سیکنڈ) سے نیچے گر جائے تو موجودہ آپریشن روک دیں اور درمیانی نتائج محفوظ کرنا شروع کریں۔ یہ ایکسپائریشن ہینڈلر کے زبردستی بلائے جانے سے پہلے صحیح تکمیل کی اجازت دیتا ہے۔

Background Task استعمال کرنے کے بہترین طریقے

Background Task ایک طاقتور میکانزم ہے، لیکن اس کا غلط استعمال بیٹری اور کارکردگی کے مسائل کا باعث بنتا ہے۔ Apple کی سفارشات اور کمیونٹی کے ثابت شدہ طریقوں پر عمل کرنا عام غلطیوں سے بچنے اور مستحکم ایپلیکیشن آپریشن کو یقینی بنانے میں مدد دے گا۔

عملدرآمد کا وقت کم سے کم کریں

Background Task کو جتنی جلدی ہو سکے مکمل کریں۔ پس منظر میں عملدرآمد کا ہر سیکنڈ بیٹری کی طاقت استعمال کرتا ہے۔ بہترین وقت — 5 سیکنڈ سے کم۔ اگر آپریشن زیادہ وقت لے — BGTaskScheduler یا Background Modes استعمال کرنے پر غور کریں۔ حقیقی ضرورت کے بغیر beginBackgroundTask کالز کے ذریعے کام کو مصنوعی طور پر نہ بڑھائیں۔

شناخت کنندگان کا صحیح استعمال

UIBackgroundTaskIdentifier کو کلاس یا سٹرکٹ پراپرٹی کے طور پر محفوظ کریں۔ اسے کبھی عالمی متغیر کے طور پر منتقل نہ کریں — یہ متعدد کاموں کے ساتھ تنازع کا باعث بنتا ہے۔ دوہری تکمیل کو روکنے کے لیے endBackgroundTask کال کرنے کے بعد شناخت کنندہ کو .invalid پر سیٹ کریں۔

Background Task کی جانچ

Xcode Simulator میں، ہوم بٹن (Command + Shift + H) کے ذریعے ایپلیکیشن کو پس منظر میں منتقل کریں۔ پس منظر میں بیداری کی جانچ کے لیے Debug — Simulate Background Fetch استعمال کریں۔ وقت ختم ہونے کا محاکمہ کرنے کے لیے، ماحولی متغیر BACKGROUND_TASK_SIMULATE_EXPIRATION = YES سیٹ کریں — ایکسپائریشن ہینڈلر 5 سیکنڈ کے اندر بلایا جائے گا۔

swift
// آپریشن شروع کرنے سے پہلے بقیہ وقت کی جانچ
let remaining = UIApplication.shared.backgroundTimeRemaining
guard remaining > 10.0 else {
    // ناکافی وقت — کام ملتوی کریں
    scheduleForNextLaunch()
    return
}

// وقت کے کنٹرول کے ساتھ آپریشن کا نفاذ
backgroundTaskID = UIApplication.shared.beginBackgroundTask {
    saveProgress()
    self.endBackgroundTask()
}

ریٹین سائیکل سے بچیں

ایکسپائریشن ہینڈلر self کو کیپچر کرتا ہے — یہ ریٹین سائیکل بنا سکتا ہے اگر backgroundTaskID اسی آبجیکٹ کی پراپرٹی کے طور پر محفوظ ہو۔ کلوزر میں [weak self] استعمال کریں یا شناخت کنندہ کو علیحدہ محفوظ کریں۔ ریٹین سائیکل میموری لیک کا باعث بنتا ہے — آبجیکٹ ایپلیکیشن ختم ہونے تک جاری نہیں ہوگا۔

Background Task بمقابلہ BGTaskScheduler: طریقوں کا موازنہ

iOS 13 کی ریلیز کے ساتھ، Apple نے BGTaskScheduler متعارف کرایا — پرانے Background Task API کا ایک جدید متبادل۔ دونوں میکانزم ایک جیسے کام حل کرتے ہیں، لیکن BGTaskScheduler زیادہ کنٹرول اور لچک فراہم کرتا ہے۔ فرق کو سمجھنا کسی خاص منظرنامے کے لیے صحیح آلہ منتخب کرنے میں مدد دے گا۔

خصوصیتBackground TaskBGTaskScheduler
iOS ورژن4.0+13.0+
زیادہ سے زیادہ وقت30 سیکنڈ30 سیکنڈ / 10 منٹ (processing)
آغازdidEnterBackgroundشیڈولنگ + سسٹم
عملدرآمد کی ضمانتصرف پس منظر میں جاتے وقتسسٹم کے لیے کسی بھی مناسب وقت
ایکسپائریشن ہینڈلرہاں، لازمیہاں، task.expirationHandler کے ذریعے
انٹرنیٹشروع میں درکارrequiresNetworkConnectivity کے ذریعے دستیاب
چارجنگدرکار نہیںprocessing کے لیے اختیاری

Background Task کب استعمال کریں

beginBackgroundTask قلیل مدتی آپریشنز کے لیے موزوں ہے جنہیں پس منظر میں جاتے وقت فوری طور پر انجام دینے کی ضرورت ہوتی ہے: حالت محفوظ کرنا، نیٹ ورک کی درخواست مکمل کرنا، ڈیٹا کیش کرنا۔ API سادہ ہے اور Info.plist کنفیگریشن یا شناخت کنندہ رجسٹریشن کی ضرورت نہیں ہے۔ ان آپریشنز کے لیے مثالی جو 10 سیکنڈ سے کم وقت لیتے ہیں۔

BGTaskScheduler کب استعمال کریں

BGTaskScheduler ان کاموں کے لیے موزوں ہے جو کسی بھی مناسب وقت پر انجام دیے جا سکتے ہیں: متواتر ہم آہنگی، کیش صفائی، ویجیٹ اپ ڈیٹس۔ سسٹم خود صارف کے رویے اور بیٹری کی حالت کو مدنظر رکھتے ہوئے بہترین وقت منتخب کرتا ہے۔ لمبے آپریشنز (10 منٹ تک) کے لیے BGProcessingTask استعمال کریں۔

مشترکہ استعمال

دونوں API ایک ہی ایپلیکیشن میں استعمال کی جا سکتی ہیں۔ Background Task — پس منظر میں جاتے وقت فوری آپریشنز کے لیے (مسودہ محفوظ کرنا)۔ BGTaskScheduler — طے شدہ اپ ڈیٹس کے لیے (ہر 6 گھنٹے میں ہم آہنگی)۔ ذمہ داریوں کی علیحدگی ڈیٹا کے صحیح تحفظ اور توانائی سے موثر پس منظر کی دیکھ بھال کو یقینی بناتی ہے۔

اکثر پوچھے گئے سوالات

کیا didEnterBackground کے باہر beginBackgroundTask کال کیا جا سکتا ہے؟

ہاں، beginBackgroundTask کو ایپلیکیشن کے عملدرآمد کے کسی بھی وقت بلایا جا سکتا ہے۔ تاہم، سسٹم وقت کی تقسیم صرف پس منظر میں جانے کے بعد شروع ہوگی۔ اگر ایپلیکیشن پیش منظر میں ہے تو beginBackgroundTask کال کرنے کا کوئی اثر نہیں — backgroundTimeRemaining DBL_MAX واپس کرتا ہے اور کام پس منظر میں جانے پر فعال ہوگا۔

اگر endBackgroundTask کال نہ کیا جائے تو کیا ہوتا ہے؟

اگر endBackgroundTask کال نہ کیا جائے تو سسٹم ایپلیکیشن کو پس منظر میں فعال سمجھتا رہتا ہے۔ 30 سیکنڈ بعد ایکسپائریشن ہینڈلر بلایا جائے گا، لیکن اگر اس میں بھی endBackgroundTask نہیں ہے — ایپلیکیشن میموری میں رہتی ہے، بیٹری ختم کرتی ہے۔ iOS 13+ میں، سسٹم ایسی ایپلیکیشن کو 3 منٹ بعد زبردستی ختم کر دیتا ہے۔

Background Task کو 30 سیکنڈ سے زیادہ کیسے بڑھایا جائے؟

معیاری وقت 30 سیکنڈ ہے۔ اسے صرف Background Modes: آڈیو (پلے بیک)، مقام (جیولوکیشن)، Bluetooth (BLE) کے ذریعے بڑھایا جا سکتا ہے۔ یا BGProcessingTask (iOS 13+) کے ذریعے — چارجنگ اور Wi-Fi کے ساتھ 10 منٹ تک۔ beginBackgroundTask خود حد بڑھانے کا کوئی طریقہ فراہم نہیں کرتا۔

کیا Background Task iPad پر کام کرتا ہے؟

ہاں، iPadOS iOS جیسی حدود کے ساتھ beginBackgroundTask کو مکمل طور پر سپورٹ کرتا ہے۔ Stage Manager والے iPad پر، ایپلیکیشن میموری میں زیادہ دیر رہ سکتی ہے — سسٹم بڑی RAM کی وجہ سے ایپلیکیشنز کو کم کثرت سے معطل کرتا ہے۔ لیکن پس منظر کے کام کی 30 سیکنڈ کی حد برقرار رہتی ہے۔

حقیقی ڈیوائس پر Background Task کو کیسے ڈیبگ کریں؟

ڈیوائس کو Xcode سے منسلک کریں، ایپلیکیشن لانچ کریں، اسے چھوٹا کریں — کنسول میں سسٹم لاگز ظاہر ہوں گے۔ تفصیلی لاگز جمع کرنے کے لیے sysdiagnose استعمال کریں: ڈیوائس سے sysdiagnose کو زبردستی متحرک کریں (والیوم اپ + والیوم ڈاؤن + پاور)۔ Xcode ڈیبگ نیویگیٹر میں، پس منظر کے کام کی سرگرمی کی نگرانی کریں۔

خلاصہ

  • Background Task — iOS 4.0 سے دستیاب، پس منظر میں جانے کے بعد آپریشن مکمل کرنے کے لیے iOS میکانزم۔
  • beginBackgroundTask — UIApplication کا طریقہ جو کام رجسٹر کرتا ہے اور اس کی تکمیل کے لیے شناخت کنندہ واپس کرتا ہے۔
  • ایکسپائریشن ہینڈلر — لازمی کوڈ بلاک جسے 30 سیکنڈ کی حد ختم ہونے پر سسٹم بلاتا ہے۔
  • endBackgroundTask — کام کو صحیح طریقے سے مکمل کرنے کے لیے لازمی کال؛ اس کے بغیر ایپلیکیشن میموری میں رہتی ہے۔
  • BGTaskScheduler — شیڈولنگ، دو کام کی اقسام اور عملدرآمد کی شرائط کے ساتھ جدید متبادل (iOS 13+)۔
  • backgroundTimeRemaining — بقیہ وقت چیک کرنے اور کام کے رویے کو ڈھالنے کے لیے پراپرٹی۔
  • فوری قلیل مدتی آپریشنز کے لیے Background Task اور نئے پروجیکٹس میں طے شدہ پس منظر کی اپ ڈیٹس کے لیے BGTaskScheduler استعمال کریں۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

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

مزید پڑھیں