Sobes.tech
Junior — Middle

Tətbiqdə arxa plan proseslərini işlətmək və istifadəçi ilə aktiv qarşılıqlı əlaqə olmadan işləməyə davam etmək mümkündürmü?

sobes.tech Süni İntellekt

AI-dan cavab

Bəli, iOS tətbiqlərində fon prosesləri başlatmaq mümkündür ki, tətbiq istifadəçi ilə aktiv qarşılıqlı əlaqə olmadan vəzifələri yerinə yetirməyə davam edə bilsin. Bunun üçün fon rejimləri (Background Modes) istifadə olunur və layihənin tənzimləmələrində aktivləşdirilməlidir.

Fon vəzifələrinə nümunələr:

  • Audio oynatma
  • Coğrafi mövqenin işlənməsi
  • Məlumatların yüklənməsi və yüklənməsi
  • Planlaşdırılmış vəzifələrin yerinə yetirilməsi (Background Fetch)

Lakin, iOS batareyanı qorumaq üçün fon işinin vaxtını və imkanlarını sərt şəkildə məhdudlaşdırır. Uzunmüddətli vəzifələr üçün BackgroundTasks API-dən istifadə etmək olar, bu API fon vəzifələrinin planlaşdırılmasına imkan verir.

BackgroundTasks istifadə edərək fon vəzifəsinin başlanğıcı nümunəsi:

import BackgroundTasks

func scheduleAppRefresh() {
    let request = BGAppRefreshTaskRequest(identifier: "com.example.apprefresh")
    request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60) // 15 dəqiqədən sonra
    do {
        try BGTaskScheduler.shared.submit(request)
    } catch {
        print("Vəzifənin planlaşdırılması mümkün olmadı: \(error)")
    }
}

func handleAppRefresh(task: BGAppRefreshTask) {
    scheduleAppRefresh() // növbəti vəzifəni planlaşdır
    // Məlumatların yenilənməsini həyata keçirin
    task.expirationHandler = {
        // Vaxt bitdikdə resursları azad edin
    }
    // Sonunda, task.setTaskCompleted(success: true) çağırın
}

Bu şəkildə, tətbiq istifadəçi ilə aktiv qarşılıqlı əlaqə olmadan fon əməliyyatlarını yerinə yetirə bilər, iOS məhdudiyyətlərini nəzərə alaraq.