আপনি যদি আপনার iOS অ্যাপ্লিকেশনে ব্যাকগ্রাউন্ডে টাইমার রান করতে চান, তবে Apple beginBackgroundTaskWithExpirationHandler মেথড প্রদান করে, এর সম্পর্কে আরো জানতে পারেন এখানে: https://developer.apple.com/documentation/uikit/uiapplication/1623031-beginbackgroundtaskwithexpiration
আমরা একই মেথড ব্যবহার করে ব্যাকগ্রাউন্ডে টাইমার রান করার কোড লিখব।
চলুন শুরু করি।
Step 1 − Xcode → Single View Application → নাম দিন BackgroundTimer।
Step 2 − AppDelegate.swift খুলুন এবং applicationDidEnterBackground মেথডের নিচে কোড লিখুন।
backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask(expirationHandler: {
UIApplication.shared.endBackgroundTask(self.backgroundTaskIdentifier!)
})
_ = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.doSomething), userInfo: nil, repeats: true)
Step 3 − নতুন ফাংশন doSomething() লিখুন।
@objc func doSomething() {
print("I'm running")
}
ফাইনাল কোড নিচের মতো হবে
func applicationDidEnterBackground(_ application: UIApplication) {
backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask(expirationHandler: {
UIApplication.shared.endBackgroundTask(self.backgroundTaskIdentifier!)
})
_ = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.doSomething), userInfo: nil, repeats: true)
}
@objc func doSomething() {
print("I'm running")
}
অ্যাপ্লিকেশন রান করুন
এখানে আমরা "I'm running" প্রিন্ট করছি যখন অ্যাপ ব্যাকগ্রাউন্ডে যাবে। অ্যাপ ব্যাকগ্রাউন্ডে যাওয়ার সাথে সাথে কনসোলে "I'm running" প্রিন্ট হওয়া শুরু হবে। হোম বাটন ট্যাপ করে টেস্ট করুন। তবে Apple ডকুমেন্টেশন অনুযায়ী এবং টেস্ট অনুযায়ী, অ্যাপ ব্যাকগ্রাউন্ডে থাকলে সর্বোচ্চ ৩ মিনিট টাইমার রান করতে পারবে।
অ্যাপ্লিকেশন রান করাকালীন, অ্যাপকে ব্যাকগ্রাউন্ডে নিয়ে ৩ মিনিট অপেক্ষা করুন, ৩ মিনিট পর "I'm running" প্রিন্ট হবে না। আবার অ্যাপকে ফোরগ্রাউন্ডে আনলে "I'm running" আবার প্রিন্ট হওয়া শুরু হবে।
