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