Background Modes în iOS — ce este, ce moduri există și configurare

Autor: IT Sectr Publicat: 2026-03-27 Timp de citire: 9 min

Background Modes — este un set de capacități declarabile iOS care permit aplicației să continue execuția codului după trecerea în modul de fundal. Fiecare mod corespunde unui anumit tip de sarcini: audio, geolocație, VoIP, Bluetooth, fetch și processing. Potrivit Apple, 2026, utilizarea incorectă a Background Modes este una dintre cauzele frecvente ale respingerii aplicațiilor la revizuirea în App Store.

Principalele

  • Background Modes — set de capability iOS pentru execuția legitimă a codului în fundal.
  • Modul audio — redarea muzicii, podcasturilor, cărților audio în fundal cu control prin Control Center.
  • Geolocație — urmărirea locației în fundal pentru navigație și trackere de fitness.
  • Bluetooth — lucrul cu dispozitive BLE în fundal: brățări fitness, senzori, periferice.
  • Verificarea Apple — utilizarea nejustificată a modurilor duce la respingerea aplicației din App Store.

Ce sunt Background Modes în iOS?

Background Modes — sunt capability ale proiectului Xcode care declară intenția aplicației de a executa anumite tipuri de operații în fundal. Spre deosebire de Android, unde aplicația poate porni orice Service în fundal, iOS necesită specificarea explicită a modului în Info.plist. Fiecare mod are reguli stricte de utilizare și este verificat de Apple la revizuire.

Cum funcționează Background Modes

Când aplicația trece în fundal, iOS o suspendă după 3–5 secunde. Dacă aplicația declară Background Mode și utilizează activ API-ul corespunzător (de exemplu, AVAudioSession pentru audio), sistemul o transferă în modul special de execuție. Aplicația rămâne în memoria RAM și poate executa cod limitat de tipul modului.

Lista completă a modurilor disponibile

iOS suportă următoarele Background Modes: Audio, Location, VoIP, Bluetooth LE, Background Fetch, Background Processing, External Accessory Communication, Push to Talk (PTT) și HealthKit. Fiecare mod necesită justificare în descrierea aplicației.

ModCheia Info.plistDestinațieVersiunea iOS
AudioaudioAudio în fundal, AirPlay4.0+
LocationlocationUrmărirea locației4.0+
VoIPvoipNotificări Push VoIP4.0+
BLEbluetooth-centralLucrul cu dispozitive BLE7.0+
FetchfetchÎncărcarea periodică a datelor7.0+
ProcessingprocessingSarcini lungi de fundal13.0+
Push to Talkpush-to-talkPush to Talk vocal16.0+

Modul audio (Audio, AirPlay și Picture in Picture)

Audio Background Mode — cel mai răspândit mod, utilizat de playere muzicale, aplicații de podcast și servicii audio. Aplicația poate continua redarea sunetului, poate fi controlată prin Control Center și afișată pe Lock Screen. Pentru activare este suficient să configurați AVAudioSession cu categoria .playback.

Configurarea sesiunii audio

Pentru funcționarea audio în fundal trebuie să configurați AVAudioSession și să o activați. Categoria .playback informează sistemul că aplicația redă sunet și trebuie să rămână activă în fundal. Fără această configurare, sunetul se va opri la minimizarea aplicației în 5–10 secunde.

swift
import AVFoundation

func configureAudioSession() {
    let session = AVAudioSession.sharedInstance()
    do {
        try session.setCategory(
            .playback,
            mode: .default,
            options: []
        )
        try session.setActive(true)
    } catch {
        print("Eroare sesiune audio: \(error)")
    }
}

Controlul redării din Control Center

Pentru integrarea cu Control Center și Lock Screen trebuie să configurați MPRemoteCommandCenter. Acesta procesează comenzile Play, Pause, Next și Previous Track. De asemenea, trebuie să actualizați MPNowPlayingInfoProperty pentru afișarea metadatelor: numele melodiei, artistul, coperta și progresul redării.

Picture in Picture pentru video

Începând cu iOS 14, Background Mode audio suportă și Picture in Picture pentru video. Aplicația poate continua să arate videoul într-o fereastră plutitoare la minimizare. Pentru activare utilizați AVPictureInPictureController cu AVPlayerLayer. Modul funcționează numai dacă aplicația redă o pistă audio.

Geolocație (Location updates)

Location Background Mode permite aplicației să primească actualizări de geolocație în fundal. Este utilizat în navigatoare, trackere de fitness, aplicații de livrare și rețele sociale. Fără acest mod, aplicația primește locația o singură dată la trecerea în fundal, după care actualizările încetează.

Tipuri de urmărire a locației

CLLocationManager suportă mai multe strategii de urmărire: schimbări semnificative (significant-change location), urmărire standard (standard location) și monitorizare regiuni (region monitoring). Pentru lucrul în fundal cu precizie maximă utilizați allowsBackgroundLocationUpdates = true și pausesLocationUpdatesAutomatically = false.

Eficiența energetică și precizia

Urmărirea continuă a locației în fundal este unul dintre cele mai consumatoare scenarii de energie. iOS ajustează automat frecvența actualizărilor în funcție de viteza de deplasare: la mers pe jos la fiecare 10–30 de secunde, la condus la fiecare 1–5 secunde. Pentru navigație utilizați desiredAccuracy = kCLLocationAccuracyBestForNavigation.

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

Schimbări semnificative ale locației

Modul significant-change location funcționează fără Location Background Mode — sistemul trezește aplicația numai la schimbarea semnificativă a coordonatelor (de obicei 500 m și mai mult). Nu necesită pornirea continuă a GPS-ului, ceea ce economisește bateria. Este potrivit pentru aplicații meteo care actualizează datele la deplasarea utilizatorului.

Modul Bluetooth (LE accessories)

Bluetooth LE Background Mode permite aplicației să interacționeze cu dispozitive BLE în fundal. Este utilizat de brățări fitness, senzori medicali, dispozitive Smart Home și navigare Beacon. Modul se împarte în două subtipuri: bluetooth-central (aplicația se conectează la dispozitive) și bluetooth-peripheral (aplicația acționează ca dispozitiv).

Lucrul în modul Central

Aplicația în rolul de Central poate scana și conecta dispozitive BLE în fundal. Pentru aceasta trebuie să specificați bluetooth-central în Background Modes și să apelați CBCentralManager.scanForPeripherals cu opțiunea CBCentralManagerScanOptionAllowDuplicatesKey. În fundal, scanarea funcționează cu frecvență redusă — sistemul poate întârzia detectarea pentru economisirea energiei.

Lucrul în modul Peripheral

Aplicația în rolul de Peripheral poate face publicitate serviciilor și răspunde la cererile altor dispozitive. Modul bluetooth-peripheral permite aplicației să rămână vizibilă pentru alte dispozitive BLE chiar și în fundal. Este utilizat în aplicații HealthKit și soluții IoT.

Beacon și Region Monitoring

Monitorizarea iBeacon funcționează în fundal fără permisiuni suplimentare — sistemul înregistrează singur intrarea și ieșirea din regiunea Beacon. Dar pentru scanarea conținutului Beacon (proximity UUID, major, minor) este necesară permisiunea Bluetooth și bluetooth-central Background Mode. Utilizați CLLocationManager cu CLBeaconRegion pentru monitorizare.

VoIP și PushKit pentru aplicații de comunicare

VoIP Background Mode este destinat aplicațiilor de comunicare vocală (Skype, Zoom, WhatsApp). Modul permite aplicației să rămână conectată la server pentru a primi apeluri primite. Începând cu iOS 8, pentru VoIP se utilizează PushKit — un framework care procesează notificările Push de la serverul VoIP fără implicarea APNs.

PushKit pentru apeluri primite

PushKit este singurul mecanism care garantează livrarea notificării VoIP pe dispozitiv. La primirea notificării PushKit, sistemul trezește aplicația, chiar dacă aceasta a fost încheiată. Aplicația trebuie să stabilească conexiunea cu serverul în 30 de secunde și să afișeze o notificare locală despre apelul primit.

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()
    }
}

Reguli de utilizare PushKit

PushKit nu poate fi utilizat pentru notificări obișnuite — doar pentru VoIP, comunicări watchOS și furnizori de fișiere. Apple verifică aceasta la revizuire. În caz de utilizare nejustificată, aplicația este respinsă. Începând cu iOS 13, PushKit doar livrează notificarea — apelarea CXProvider (CallKit) pentru afișarea ecranului de apel este obligatorie.

Modurile Fetch și Processing

Background Fetch și Background Processing — moduri pentru actualizarea conținutului în fundal și executarea sarcinilor lungi. Fetch — actualizări periodice scurte (până la 30 s), Processing — sarcini lungi (până la 10 min) cu condiții (Wi-Fi, încărcare). Processing este disponibil doar de la iOS 13+.

Background Fetch — actualizare rapidă

Modul Fetch permite sistemului să trezească periodic aplicația pentru descărcarea de conținut proaspăt. Sistemul analizează comportamentul utilizatorului și alege momentul optim. Aplicația trebuie să apeleze completion handler în 30 de secunde. Fetch este potrivit pentru aplicații de știri, fluxuri de rețele sociale și meteo.

Background Processing — sarcini lungi

BGProcessingTask este destinată sarcinilor care pot fi executate fără participarea utilizatorului: curățarea cache-ului, sincronizarea unei baze de date mari, procesarea fișierelor media. Sistemul rulează sarcina doar în condiții favorabile — dispozitivul la încărcat, conectat la Wi-Fi, nu în modul Low Power. Disponibil până la 10 minute.

Planificare și cerințe

Pentru BGProcessingTask trebuie să specificați requiresExternalPower și requiresNetworkConnectivity. Sistemul poate amâna execuția pe o perioadă nedeterminată dacă condițiile nu sunt îndeplinite. Spre deosebire de BGAppRefreshTask, care trebuie să se execute cel puțin o dată pe zi, Processing poate să nu se execute săptămâni dacă dispozitivul este rareori la încărcat.

App Store Review Guidelines pentru Background Modes

Apple verifică strict utilizarea Background Modes la revizuirea aplicațiilor. Regula principală: fiecare mod activat trebuie justificat prin funcționalitatea aplicației. Dacă aplicația declară Location Mode dar nu utilizează geolocația, va fi respinsă cu solicitarea de a elimina capability.

Cauze frecvente de respingere

Cele mai frecvente încălcări: Location Mode fără necesitate evidentă (aplicația solicită acces „Always" pentru afișarea reclamelor), Audio Mode fără redarea sunetului în fundal, VoIP fără PushKit, BLE Mode fără dispozitive Bluetooth. Apple poate respinge aplicația chiar și la etapa de actualizare dacă modul nu mai este utilizat.

Descrierea în revizuire

La trimiterea spre revizuire, specificați în Notes justificarea concretă pentru fiecare mod. De exemplu, „Location Background Mode este utilizat pentru urmărirea traseului utilizatorului în funcția de fitness". Fără explicație, revizorul poate respinge aplicația. Pentru funcții confidențiale (VoIP), Apple poate solicita un cont de test.

Recomandări pentru minimizarea modurilor

Utilizați setul minim necesar de moduri. Dacă aplicația are nevoie de încărcare în fundal o dată pe oră — nu activați Location Mode, utilizați Fetch sau BGAppRefreshTask. Modurile suplimentare nu doar duc la respingere, dar creează și o impresie negativă: utilizatorul vede în setări că aplicația utilizează geolocația în fundal.

Întrebări frecvente

Câte Background Modes pot fi activate într-o singură aplicație?

Nu există limită de număr, dar fiecare mod trebuie justificat prin funcționalitatea aplicației. Activarea tuturor modurilor fără necesitate — o cauză garantată de respingere la revizuire. Limita practică este de 2–3 moduri pe aplicație, altfel utilizatorul va vedea numeroase solicitări de permisiuni.

Cum verific dacă Background Mode este activ?

Utilizați UIApplication.shared.applicationState — aplicația poate verifica dacă se află în fundal (state == .background). De asemenea, puteți urmări notificările UIApplication.didEnterBackgroundNotification și willEnterForegroundNotification pentru schimbarea comportamentului.

Care este diferența între Audio și AirPlay Background Modes?

Audio — redarea sunetului prin difuzor sau căști. AirPlay — transmiterea audio și video pe Apple TV și alte dispozitive AirPlay. În practică, Audio Mode acoperă ambele scenarii, deoarece AirPlay utilizează sesiunea audio. Un mod separat AirPlay nu este necesar de la iOS 7+.

Pot folosi Background Location doar când aplicația este deschisă?

Da, pentru aceasta utilizați requestWhenInUseAuthorization() în loc de requestAlwaysAuthorization(). Aplicația va primi locația doar pe primul plan. Dacă este necesară urmărirea pe termen scurt în fundal — apelați startUpdatingLocation() și opriți în willResignActive.

Cum afectează Background Modes bateria?

Fiecare mod crește consumul de energie. Location Mode — cel mai costisitor, poate reduce durata de funcționare cu 30–50% la urmărirea continuă. Audio Mode — moderat (15–20%). Fetch și Processing — minim (2–5%). BLE Mode — scăzut (5–10%) datorită eficienței energetice Bluetooth LE.

Rezumat

  • Background Modes — capability declarabile iOS care permit aplicației să execute legitim cod în fundal.
  • Audio Mode — cel mai răspândit, pentru redarea muzicii, podcasturilor și video prin AVAudioSession cu categoria .playback.
  • Location Mode — pentru navigare și fitness, cel mai consumator de energie, necesită requestAlwaysAuthorization și allowsBackgroundLocationUpdates.
  • BLE Mode — lucrul cu dispozitive Bluetooth în fundal prin CBCentralManager cu scanare în fundal.
  • VoIP și PushKit — pentru aplicații de comunicare, garantează livrarea apelurilor primite prin PKPushRegistry.
  • Fetch și Processing — sarcini scurte și lungi în fundal cu diferite condiții de execuție și limite de timp.
  • Apple verifică strict justificarea fiecărui mod — utilizarea nejustificată duce la respingerea aplicației din App Store.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și