iOS-da Background Modes — nədir, hansı rejimlər var və quraşdırma

Müəllif: IT Sectr Dərc olunub: 2026-03-27 Oxuma vaxtı: 9 dəq

Background Modes — iOS-un bəyan edilmiş imkanlar toplusudur ki, proqramın fon rejiminə keçdikdən sonra kodun icrasını davam etdirməsinə imkan verir. Hər rejim müəyyən bir tapşırıq növünə uyğundur: audio, geolokasiya, VoIP, Bluetooth, fetch və processing. Apple, 2026-ya görə, Background Modes-un səhv istifadəsi App Store-da baxış zamanı proqramların rədd edilməsinin ümumi səbəblərindən biridir.

Əsas məqamlar

  • Background Modes — fonda qanuni kod icrası üçün iOS capability dəsti.
  • Audio rejimi — Control Center vasitəsilə idarə olunan fonda musiqi, podkast, audiokitab oxutma.
  • Geolokasiya — naviqasiya və fitnes izləyiciləri üçün fonda yer təyini izləmə.
  • Bluetooth — fonda BLE cihazları ilə iş: fitnes bilərziklər, sensorlar, periferiya.
  • Apple yoxlaması — rejimlərin haqsız istifadəsi proqramın App Store-dan rədd edilməsinə səbəb olur.

iOS-da Background Modes nədir?

Background Modes — Xcode layihəsinin capability-ləridir ki, proqramın fonda müəyyən əməliyyat növlərini yerinə yetirmək niyyətini bəyan edir. Android-dən fərqli olaraq, burada proqram fonda istənilən Service-i işə sala bilər, iOS Info.plist-də rejimin açıq şəkildə göstərilməsini tələb edir. Hər rejimin ciddi istifadə qaydaları var və Apple tərəfindən baxış zamanı yoxlanılır.

Background Modes necə işləyir

Proqram fon rejiminə keçdikdə, iOS onu 3–5 saniyədən sonra dayandırır. Əgər proqram Background Mode bəyan edirsə və müvafiq API-dən (məsələn, audio üçün AVAudioSession) aktiv istifadə edirsə, sistem onu xüsusi icra rejiminə keçirir. Proqram qalır operativ yaddaşda və rejimin növü ilə məhdudlaşan kodu icra edə bilər.

Mövcud rejimlərin tam siyahısı

Aşağıdakı Background Modes iOS tərəfindən dəstəklənir: Audio, Location, VoIP, Bluetooth LE, Background Fetch, Background Processing, External Accessory Communication, Push to Talk (PTT) və HealthKit. Hər rejim proqram təsvirində əsaslandırma tələb edir.

RejimInfo.plist açarıTəyinatiOS versiyası
AudioaudioFonda audio, AirPlay4.0+
LocationlocationYer təyini izləmə4.0+
VoIPvoipVoIP push bildirişləri4.0+
BLEbluetooth-centralBLE cihazları ilə iş7.0+
FetchfetchDövri məlumat yükləmə7.0+
ProcessingprocessingUzunmüddətli fon tapşırıqları13.0+
Push to Talkpush-to-talkSəsli push-to-talk16.0+

Audio rejimi (Audio, AirPlay və Picture in Picture)

Audio Background Mode — ən çox yayılmış rejimdir, musiqi pleyerləri, podkast proqramları və audio xidmətləri tərəfindən istifadə olunur. Proqram səsi oxutmağa davam edə, Control Center vasitəsilə idarə oluna və Lock Screen-də göstərilə bilər. Aktivləşdirmək üçün .playback kateqoriyası ilə AVAudioSession-u konfiqurasiya etmək kifayətdir.

Audio sessiyasının konfiqurasiyası

Fonda audio işləməsi üçün AVAudioSession-u konfiqurasiya etmək və aktivləşdirmək lazımdır. .playback kateqoriyası sistemə proqramın səs oxutduğunu və fonda aktiv qalmalı olduğunu bildirir. Bu konfiqurasiya olmadan səs proqram bağlandıqdan 5–10 saniyə sonra dayanacaq.

swift
import AVFoundation

func configureAudioSession() {
    let session = AVAudioSession.sharedInstance()
    do {
        try session.setCategory(
            .playback,
            mode: .default,
            options: []
        )
        try session.setActive(true)
    } catch {
        print("Audio sessiyası xətası: \(error)")
    }
}

Control Center-dən oxutmanın idarə edilməsi

Control Center və Lock Screen ilə inteqrasiya üçün MPRemoteCommandCenter konfiqurasiya edilməlidir. O, Play, Pause, Next və Previous Track əmrlərini emal edir. Həmçinin MPNowPlayingInfoProperty yenilənməlidir ki, metadata göstərilsin: mahnı adı, ifaçı, üz qabığı və oxutma gedişatı.

Video üçün Picture in Picture

iOS 14-dən başlayaraq, audio Background Mode video üçün Picture in Picture dəstəkləyir. Proqram bağlandıqda videonu üzən pəncərədə göstərməyə davam edə bilər. Aktivləşdirmək üçün AVPlayerLayer ilə AVPictureInPictureController istifadə edin. Rejim yalnız proqram audio treki oxutduqda işləyir.

Geolokasiya (Location updates)

Location Background Mode proqrama fonda geolokasiya yeniləmələrini almağa imkan verir. Naviqatorlarda, fitnes izləyicilərində, çatdırılma proqramlarında və sosial şəbəkələrdə istifadə olunur. Bu rejim olmadan proqram yalnız bir dəfə fonda keçərkən lokasiya alır, sonra yeniləmələr dayanır.

Lokasiya izləmə növləri

CLLocationManager bir neçə izləmə strategiyası dəstəkləyir: əhəmiyyətli dəyişikliklər (significant-change location), standart izləmə (standard location) və region izləmə (region monitoring). Maksimal dəqiqliklə fonda iş üçün allowsBackgroundLocationUpdates = truepausesLocationUpdatesAutomatically = false istifadə edin.

Enerji səmərəliliyi və dəqiqlik

Fonda lokasiyanın davamlı izlənməsi ən enerji tələb edən ssenarilərdən biridir. iOS avtomatik olaraq yeniləmə tezliyini hərəkət sürətinə uyğunlaşdırır: gəzinti zamanı hər 10–30 saniyədən bir, avtomobildə isə hər 1–5 saniyədən bir yeniləmə. Naviqasiya üçün desiredAccuracy = kCLLocationAccuracyBestForNavigation istifadə edin.

swift
let locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.activityType = .fitness
locationManager.startUpdatingLocation()

Lokasiyanın əhəmiyyətli dəyişiklikləri

Significant-change location rejimi Location Background Mode olmadan işləyir — sistem proqramı yalnız koordinatların əhəmiyyətli dərəcədə dəyişməsi zamanı (adətən 500 m və daha çox) oyadır. GPS-in davamlı qoşulmasını tələb etmir, bu da batareyaya qənaət edir. İstifadəçi hərəkət etdikdə məlumatları yeniləyən hava proqramları üçün uyğundur.

Bluetooth rejimi (LE accessories)

Bluetooth LE Background Mode proqrama fonda BLE cihazları ilə qarşılıqlı əlaqəyə imkan verir. Fitnes bilərziklər, tibbi sensorlar, Smart Home cihazları və Beacon naviqasiyası tərəfindən istifadə olunur. Rejim iki alt növə bölünür: bluetooth-central (proqram cihazlara qoşulur) və bluetooth-peripheral (proqram cihaz kimi çıxış edir).

Central rejimində iş

Central rolunda proqram fonda BLE cihazlarını skan edə və onlara qoşula bilər. Bunun üçün Background Modes-da bluetooth-central göstərilməli və CBCentralManager.scanForPeripherals CBCentralManagerScanOptionAllowDuplicatesKey opsiyası ilə çağırılmalıdır. Fonda skan etmə aşağı tezliklə işləyir — sistem enerjiyə qənaət üçün aşkarlamanı gecikdirə bilər.

Peripheral rejimində iş

Peripheral rolunda proqram xidmətləri reklam edə və digər cihazların sorğularına cavab verə bilər. Bluetooth-peripheral rejimi proqrama hətta fonda da digər BLE cihazları üçün görünən qalmağa imkan verir. HealthKit proqramlarında və IoT həllərində istifadə olunur.

Beacon və Region Monitoring

iBeacon monitorinqi əlavə icazələr olmadan fonda işləyir — sistem özü Beacon regionuna giriş və çıxışı izləyir. Lakin Beacon məzmununu skan etmək (proximity UUID, major, minor) üçün Bluetooth icazəsi və bluetooth-central Background Mode tələb olunur. Monitorinq üçün CLBeaconRegion ilə CLLocationManager istifadə edin.

Kommunikasiya proqramları üçün VoIP və PushKit

VoIP Background Mode səsli rabitə proqramları (Skype, Zoom, WhatsApp) üçün nəzərdə tutulub. Rejim proqrama daxil olan zəngləri qəbul etmək üçün serverə qoşulu qalmağa imkan verir. iOS 8-dən başlayaraq, VoIP üçün PushKit istifadə olunur — APNs olmadan VoIP serverindən Push bildirişlərini emal edən freymvork.

Daxil olan zənglər üçün PushKit

PushKit cihaza VoIP bildirişinin çatdırılmasını təmin edən yeganə mexanizmdir. PushKit bildirişi alındıqda sistem proqramı oyadır, hətta proqram bağlanmış olsa belə. Proqram 30 saniyə ərzində serverə qoşulmalı və daxil olan zəng haqqında lokal bildiriş göstərməlidir.

swift
import PushKit

class VoIPHandler: NSObject, PKPushRegistryDelegate {
    func pushRegistry(
        _ registry: PKPushRegistry,
        didReceiveIncomingPushWith payload: PKPushPayload,
        for type: PKPushType,
        completion: @escaping () -> Void
    ) {
        let caller = payload.dictionaryPayload["caller"] as! String
        reportIncomingCall(from: caller)
        completion()
    }
}

PushKit istifadə qaydaları

PushKit adi bildirişlər üçün istifadə edilə bilməz — yalnız VoIP, watchOS rabitəsi və fayl provayderləri üçün. Apple bunu yoxlayır baxış zamanı. Haqsız istifadə zamanı proqram rədd edilir. iOS 13-dən etibarən, PushKit yalnız bildiriş çatdırır — zəng ekranını göstərmək üçün CXProvider (CallKit) çağırışı məcburidir.

Fetch və Processing rejimləri

Background FetchBackground Processing — fonda məzmun yeniləməsi və uzunmüddətli tapşırıqların icrası üçün rejimlər. Fetch — qısa dövri yeniləmələr (30 s-ə qədər), Processing — şərtlərlə (Wi-Fi, şarj) uzunmüddətli tapşırıqlar (10 dəq-ə qədər). Processing yalnız iOS 13+-dan etibarən mövcuddur.

Background Fetch — sürətli yeniləmə

Fetch rejimi sistemə dövri olaraq proqramı təzə məzmun yükləmək üçün oyatmağa imkan verir. Sistem istifadəçi davranışını təhlil edir və optimal vaxtı seçir. Proqram 30 saniyə ərzində completion handler-i çağırmalıdır. Fetch xəbər proqramları, sosial şəbəkə lentləri və hava proqramları üçün uyğundur.

Background Processing — uzunmüddətli tapşırıqlar

BGProcessingTask istifadəçinin iştirakı olmadan yerinə yetirilə bilən tapşırıqlar üçün nəzərdə tutulub: keşin təmizlənməsi, böyük verilənlər bazasının sinxronizasiyası, media fayllarının emalı. Sistem tapşırığı yalnız əlverişli şəraitdə işə salır — cihaz şarjda, Wi-Fi-a qoşulu, Low Power rejimində deyil. 10 dəqiqəyə qədər mövcuddur.

Planlaşdırma və tələblər

BGProcessingTask üçün requiresExternalPower və requiresNetworkConnectivity göstərilməlidir. Sistem şərtlər yerinə yetirilmədikdə icranı qeyri-müəyyən müddətə təxirə sala bilər. Gündə ən azı bir dəfə icra olunmalı olan BGAppRefreshTask-dən fərqli olaraq, Processing cihaz nadir hallarda şarj edilirsə həftələrlə icra olunmaya bilər.

Background Modes üçün App Store Review Guidelines

Apple proqramların baxışı zamanı Background Modes istifadəsini ciddi şəkildə yoxlayır. Əsas qayda: hər aktivləşdirilmiş rejim proqramın funksionallığı ilə əsaslandırılmalıdır. Proqram Location Mode bəyan edirsə, lakin geolokasiyadan istifadə etmirsə, capability-nin silinməsi tələbi ilə rədd ediləcək.

Rədd edilmənin ümumi səbəbləri

Ən çox yayılmış pozuntular: Location Mode açıq ehtiyac olmadan (proqram reklam göstərmək üçün “Always” girişi tələb edir), fonda səs oxutmadan Audio Mode, PushKit olmadan VoIP, Bluetooth cihazları olmadan BLE Mode. Apple proqramı yeniləmə mərhələsində belə rədd edə bilər, əgər rejim artıq istifadə edilmirsə.

Baxışda təsvir

Baxışa göndərərkən Notes-da hər rejimin konkret əsaslandırmasını göstərin. Məsələn, “Location Background Mode fitness funksiyasında istifadəçinin marşrutunu izləmək üçün istifadə olunur”. İzahat olmadan rəyçi proqramı rədd edə bilər. Məxfi funksiyalar (VoIP) üçün Apple test hesabı tələb edə bilər.

Rejimlərin minimuma endirilməsi tövsiyələri

Minimum zəruri rejim dəstindən istifadə edin. Proqrama saatda bir dəfə fonda məlumat yükləməsi lazımdırsa — Location Mode-u yox, Fetch və ya BGAppRefreshTask istifadə edin. Artıq rejimlər təkcə rədd edilməyə səbəb olmur, həm də mənfi təəssürat yaradır: istifadəçi parametrlərdə proqramın fonda geolokasiyadan istifadə etdiyini görür.

Tez-tez verilən suallar

Bir proqramda neçə Background Mode aktivləşdirilə bilər?

Say məhdudiyyəti yoxdur, lakin hər rejim proqramın funksionallığı ilə əsaslandırılmalıdır. Bütün rejimləri ehtiyacsız aktivləşdirmək baxış zamanı rədd edilmənin zəmanətli səbəbidir. Praktiki məhdudiyyət — proqram üçün 2–3 rejim, əks halda istifadəçi çoxsaylı icazə sorğuları görəcək.

Background Mode-un aktiv olub olmadığını necə yoxlamaq olar?

UIApplication.shared.applicationState istifadə edin — proqram fonda olub olmadığını yoxlaya bilər (state == .background). Həmçinin davranışı dəyişmək üçün UIApplication.didEnterBackgroundNotification və willEnterForegroundNotification bildirişlərini izləyə bilərsiniz.

Audio və AirPlay Background Modes arasında nə fərq var?

Audio — dinamik və ya qulaqlıq vasitəsilə səs oxutma. AirPlay — audio və videonun Apple TV və digər AirPlay cihazlarına ötürülməsi. Praktikada Audio Mode hər iki ssenarini əhatə edir, çünki AirPlay audio sessiyasından istifadə edir. iOS 7+-dan etibarən ayrıca AirPlay rejimi tələb olunmur.

Background Location yalnız proqram açıq olduqda istifadə edilə bilər?

Bəli, bunun üçün requestAlwaysAuthorization əvəzinə requestWhenInUseAuthorization() istifadə edin. Proqram yalnız ön planda lokasiya alacaq. Fonda qısamüddətli izləmə lazımdırsa — startUpdatingLocation() çağırın və willResignActive-də dayandırın.

Background Modes batareyaya necə təsir edir?

Hər rejim enerji istehlakını artırır. Location Mode — ən bahalı, davamlı izləmə zamanı iş müddətini 30–50% azalda bilər. Audio Mode — orta səviyyəli (15–20%). Fetch və Processing — minimal (2–5%). BLE Mode — aşağı (5–10%) Bluetooth LE-nin enerji səmərəliliyi sayəsində.

Nəticə

  • Background Modes — proqrama fonda qanuni kod icrasına imkan verən bəyan edilmiş iOS capabilities.
  • Audio Mode — ən geniş yayılmış, .playback kateqoriyası ilə AVAudioSession vasitəsilə musiqi, podkast və video oxutmaq üçün.
  • Location Mode — naviqasiya və fitnes üçün, ən enerji tələb edən, requestAlwaysAuthorization və allowsBackgroundLocationUpdates tələb edir.
  • BLE Mode — fonda CBCentralManager ilə fon skan etmə vasitəsilə Bluetooth cihazları ilə iş.
  • VoIP və PushKit — kommunikasiya proqramları üçün, PKPushRegistry vasitəsilə daxil olan zənglərin çatdırılmasını təmin edir.
  • Fetch və Processing — müxtəlif icra şərtləri və vaxt məhdudiyyətləri ilə qısa və uzunmüddətli fon tapşırıqları.
  • Apple hər rejimin əsaslandırılmasını ciddi yoxlayır — haqsız istifadə proqramın App Store-dan rədd edilməsinə səbəb olur.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun