Junior — Middle
Van tapasztalata a háttérfeladatok végrehajtási módjának megvalósításában vagy munkájában alkalmazásokban?
sobes.tech MI
Válasz az MI-től
iOS-en a háttérben végzett feladatokhoz gyakran használják a Background Tasks API-t (például BGTaskScheduler), amely lehetővé teszi a feladatok ütemezését, amikor a rendszer ezt optimálisnak tartja. Emellett a projekt beállításaiban használhatók háttér módok (Background Modes), például tartalom háttérben történő frissítése, hang lejátszása, helymeghatározás stb.
A BGAppRefreshTask használatának példája adatok háttérben történő frissítéséhez:
import BackgroundTasks
func scheduleAppRefresh() {
let request = BGAppRefreshTaskRequest(identifier: "com.example.app.refresh")
request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60) // legalább 15 perc
do {
try BGTaskScheduler.shared.submit(request)
} catch {
print("Nem sikerült ütemezni a feladatot: \(error)")
}
}
func handleAppRefresh(task: BGAppRefreshTask) {
scheduleAppRefresh() // a következő feladat ütemezése
let queue = OperationQueue()
queue.maxConcurrentOperationCount = 1
let operation = DataFetchOperation() // az adatbetöltő műveleted
task.expirationHandler = {
queue.cancelAllOperations()
}
operation.completionBlock = {
task.setTaskCompleted(success: !operation.isCancelled)
}
queue.addOperation(operation)
}
Szintén használható a URLSession háttérkonfigurációkkal az adatok háttérben történő letöltéséhez. Fontos figyelembe venni a rendszer korlátozásait, hogy ne fogyasszunk túl sok erőforrást.