Junior — Middle
What methods can be used to perform background tasks in an application?
sobes.tech AI
Answer from AI
In iOS, there are several approaches to perform tasks in the background:
- Background Tasks (BGTaskScheduler) — a modern API for scheduling background tasks that the system executes at optimal times.
- Background Fetch — allows the app to periodically update content in the background.
- NSURLSession with background configuration — for uploading and downloading data in the background.
- Dispatch Queues (GCD) — for executing asynchronous tasks, but they only work while the app is active.
- OperationQueue — similar to GCD but with more flexible dependency management.
- Silent Push Notifications — allow waking up the app to perform tasks in the background.
Example of using BGTaskScheduler:
import BackgroundTasks
func scheduleAppRefresh() {
let request = BGAppRefreshTaskRequest(identifier: "com.example.apprefresh")
request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60) // in 15 minutes
do {
try BGTaskScheduler.shared.submit(request)
} catch {
print("Failed to schedule task: \(error)")
}
}
BGTaskScheduler.shared.register(forTaskWithIdentifier: "com.example.apprefresh", using: nil) { task in
// Executing background task
task.setTaskCompleted(success: true)
}