Sobes.tech
Middle

Tətbiqin arxa planda işləməsini necə təmin etmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Tətbiqin arxa planda işləməsini təmin etmək üçün iOS müxtəlif mexanizmlərdən istifadə edir, vəzifənin növündən asılı olaraq:

  • Arxa Plan Modları: Bunlar sistem tərəfindən əvvəlcədən təyin olunmuş rejimlərdir və arxa planda müəyyən əməliyyatların həyata keçirilməsinə imkan verir. Ən çox istifadə olunanlar:

    • audio: Audio oynatma və ya qeydiyyat.
    • location: Mövqenin izlənməsi.
    • voip: VoIP ilə işləmək.
    • fetch: Müntəzəm olaraq yeni məzmunu yükləmək.
    • processing: Resurs tələb edən tapşırıqları yerinə yetirmək.
    • remote-notification: Push bildirişlərinin işlənməsi.

    Arxa plan rejimlərini aktiv etmək üçün müvafiq açarları Info.plist-ə əlavə etmək və ya Xcode-də Capabilities istifadə etmək lazımdır.

  • Arxa Plan Tapşırığı: Tətbiqin arxa planda işləməsi üçün məhdud müddət verir və tətbiq arxa plana keçdikdən sonra bu müddət ərzində tapşırığı tamamlamasına imkan verir.

    var backgroundTask: UIBackgroundTaskIdentifier = .invalid
    
    func registerBackgroundTask() {
        backgroundTask = UIApplication.shared.beginBackgroundTask {
            // Vaxtın bitməsini idarə et
            self.endBackgroundTask()
        }
        // Arxa plan tapşırığını yerinə yetir
        // ...
    }
    
    func endBackgroundTask() {
        UIApplication.shared.endBackgroundTask(backgroundTask)
        backgroundTask = .invalid
    }
    
  • Arxa Plan Fetch: Sistemə tətbiqi müntəzəm olaraq arxa planda işə salmağa və yeni məzmunu yoxlamağa imkan verir.

    // AppDelegate-də, didFinishLaunchingWithOptions içində
    UIApplication.shared.setMinimumBackgroundFetchInterval(UIApplication.backgroundFetchIntervalMinimum)
    
    // didFinishLaunchingWithOptions və ya ayrıca metodda
    func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
        // Asinxron məlumat yükləməsini yerinə yetiririk
        // Tamamlandıqda, completionHandler çağırılır:
        // .newData, .noData, .failed
        completionHandler(.newData)
    }
    
  • Arxa Plan Emalı: Resurs tələb edən və uzun müddət ala bilən tapşırıqları yerinə yetirmək üçün nəzərdə tutulub. BGTaskScheduler ilə istifadə olunur.

    import BackgroundTasks
    
    let taskID = "com.yourapp.mytask"
    
    func registerBackgroundTasks() {
        BGTaskScheduler.shared.register(forTaskWithIdentifier: taskID) { task in
            // Tapşırığı yerinə yetir
            self.handleBackgroundTask(task: task as! BGProcessingTask)
        }
    }
    
    func handleBackgroundTask(task: BGProcessingTask) {
        // Uzun müddətli tapşırığı yerinə yetir
        // Tapşırığı tamamla
        task.setTaskCompleted(success: true)
    }
    
    // Tapşırığın planlaşdırılması
    func scheduleBackgroundProcessingTask() {
        let request = BGProcessingTaskRequest(identifier: taskID)
        // İcra mühitinin tələblərini qur (məsələn, şəbəkə mövcuddurmu, batareya yüklənirmi)
        request.requiresNetworkConnectivity = true
    
        do {
            try BGTaskScheduler.shared.submit(request)
        } catch {
            print("Tapşırıq planlaşdırıla bilmədi: \(error)")
        }
    }
    
  • Push Bildirişləri: Sakit pushlar tətbiqi arxa planda aktivləşdirmək və yeni məzmunu yükləmək üçün istifadə edilə bilər.

  • İş Meneceri (Android) iOS üçün analoq (dolayısı ilə): BGTaskScheduler Android Work Manager-ə bənzəyir və sistem resursları və məhdudiyyətləri nəzərə alaraq arxa plan tapşırıqlarını planlaşdırmağa imkan verir.

Xüsusi mexanizmin seçimi yerinə yetirilməli olan vəzifənin növündən asılıdır. Uyğunsuz mexanizmin istifadəsi tətbiqin App Store-də rədd olunmasına və sistem tərəfindən arxa plan proseslərinin tez bağlanmasına səbəb ola bilər. Sistem resurslarına da diqqətli olmaq vacibdir: batareya, yaddaş və CPU.