Sobes.tech
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.