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 অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন