Junior — Middle
Kas teil on kogemusi taustal ülesannete täitmise režiimi rakendamisel või töötamisel rakendustes?
sobes.tech AI
Vastus AI-lt
iOS-is kasutatakse sageli Background Tasks API-d (näiteks BGTaskScheduler), mis võimaldab planeerida ülesannete täitmist siis, kui süsteem seda kõige optimaalsemaks peab. Samuti saab kasutada taustarežiime (Background Modes) projekti seadetes, näiteks sisu taustpäevast uuendamist, heli taasesitust, geolokatsiooni saamist jne.
Näide BGAppRefreshTask kasutamisest andmete taustpäevast uuendamiseks:
import BackgroundTasks
func scheduleAppRefresh() {
let request = BGAppRefreshTaskRequest(identifier: "com.example.app.refresh")
request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60) // vähemalt 15 minutit
do {
try BGTaskScheduler.shared.submit(request)
} catch {
print("Ülesande planeerimine ebaõnnestus: \(error)")
}
}
func handleAppRefresh(task: BGAppRefreshTask) {
scheduleAppRefresh() // planeeri järgmine ülesanne
let queue = OperationQueue()
queue.maxConcurrentOperationCount = 1
let operation = DataFetchOperation() // sinu andmete laadimise operatsioon
task.expirationHandler = {
queue.cancelAllOperations()
}
operation.completionBlock = {
task.setTaskCompleted(success: !operation.isCancelled)
}
queue.addOperation(operation)
}
Samuti saab kasutada URLSession-i taustakonfiguratsioonidega andmete laadimiseks taustal. Oluline on arvestada süsteemi piirangutega, et mitte ressursse üle koormata.