Background Modes in iOS — cosa sono, quali tipi di modalità esistono e configurazione

Autore: IT Sectr Pubblicato: 2026-03-27 Tempo di lettura: 9 min

Background Modes sono un insieme di capacità dichiarabili di iOS che consentono a un’app di continuare a eseguire codice dopo essere passata in background. Ogni modalità corrisponde a un tipo specifico di attività: audio, geolocalizzazione, VoIP, Bluetooth, fetch e processing. Secondo Apple, 2026, l’uso improprio dei Background Modes è una delle cause comuni di rifiuto delle app durante la revisione nell’App Store.

Punti chiave

  • Background Modes — insieme di capacità iOS per l’esecuzione legittima di codice in background.
  • Modalità Audio — riproduzione di musica, podcast, audiolibri in background con controllo tramite Centro di Controllo.
  • Geolocalizzazione — tracciamento della posizione in background per navigazione e tracker fitness.
  • Bluetooth — lavoro con dispositivi BLE in background: braccialetti fitness, sensori, periferiche.
  • Revisione Apple — l’uso improprio delle modalità porta al rifiuto dell’app dall’App Store.

Cosa sono i Background Modes in iOS?

Background Modes sono capacità del progetto Xcode che dichiarano l’intenzione dell’app di eseguire tipi specifici di operazioni in background. A differenza di Android, dove un’app può avviare qualsiasi Service in background, iOS richiede una dichiarazione esplicita della modalità in Info.plist. Ogni modalità ha regole di utilizzo rigorose e viene verificata da Apple durante la revisione.

Come funzionano i Background Modes

Quando un’app passa in background, iOS la sospende entro 3–5 secondi. Se l’app dichiara una Background Mode e utilizza attivamente l’API corrispondente (ad esempio AVAudioSession per l’audio), il sistema la inserisce in una modalità di esecuzione speciale. L’app rimane in memoria e può eseguire codice limitato dal tipo di modalità.

Elenco completo delle modalità disponibili

iOS supporta le seguenti Background Modes: Audio, Posizione, VoIP, Bluetooth LE (accessori BLE), Background Fetch (aggiornamenti periodici), Background Processing (attività lunghe), External Accessory Communication, Push to Talk (PTT) e HealthKit. Ogni modalità richiede una giustificazione nella descrizione dell’app.

ModalitàChiave Info.plistScopoVersione iOS
AudioaudioAudio in background, AirPlay4.0+
LocationlocationTracciamento posizione4.0+
VoIPvoipNotifiche push VoIP4.0+
BLEbluetooth-centralLavoro con dispositivi BLE7.0+
FetchfetchDownload periodico di dati7.0+
ProcessingprocessingAttività lunghe in background13.0+
Push to Talkpush-to-talkVoce push-to-talk16.0+

Modalità Audio (Audio, AirPlay e Picture in Picture)

Modalità Audio in Background è la modalità più comune, utilizzata da lettori musicali, app di podcast e servizi audio. L’app può continuare la riproduzione audio, essere controllata tramite il Centro di Controllo e apparire sulla schermata di blocco. Per attivarla, è sufficiente configurare AVAudioSession con la categoria .playback.

Configurazione della sessione audio

Affinché l’audio funzioni in background, è necessario configurare AVAudioSession e attivarla. La categoria .playback indica al sistema che l’app sta riproducendo audio e deve rimanere attiva in background. Senza questa configurazione, l’audio si fermerà 5–10 secondi dopo aver minimizzato l’app.

swift
import AVFoundation

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

Controllo della riproduzione dal Centro di Controllo

Per l’integrazione con il Centro di Controllo e la schermata di blocco, è necessario configurare MPRemoteCommandCenter. Gestisce i comandi Play, Pausa, Successivo e Precedente. È inoltre necessario aggiornare MPNowPlayingInfoProperty per visualizzare i metadati: nome del brano, artista, copertina e stato di avanzamento della riproduzione.

Picture in Picture per video

A partire da iOS 14, la Modalità Audio in Background supporta anche Picture in Picture per i video. L’app può continuare a mostrare il video in una finestra fluttuante quando viene minimizzata. Per attivarlo, utilizzare AVPictureInPictureController con AVPlayerLayer. Questa modalità funziona solo se l’app sta riproducendo una traccia audio.

Geolocalizzazione (Aggiornamenti di posizione)

Modalità Posizione in Background consente all’app di ricevere aggiornamenti di posizione in background. Viene utilizzata in app di navigazione, tracker fitness, app di consegna e social network. Senza questa modalità, l’app riceve la posizione solo una volta quando passa in background, dopodiché gli aggiornamenti si fermano.

Tipi di tracciamento della posizione

CLLocationManager supporta diverse strategie di tracciamento: cambiamenti significativi di posizione, tracciamento standard e monitoraggio di regioni. Per lavorare in background con la massima precisione, utilizzare allowsBackgroundLocationUpdates = true e pausesLocationUpdatesAutomatically = false.

Efficienza energetica e precisione

Il tracciamento continuo della posizione in background è uno degli scenari a maggiore consumo energetico. iOS regola automaticamente la frequenza degli aggiornamenti in base alla velocità di movimento: camminando, aggiornamenti ogni 10–30 secondi; guidando, ogni 1–5 secondi. Per la navigazione, utilizzare desiredAccuracy = kCLLocationAccuracyBestForNavigation.

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

Cambiamenti significativi di posizione

La modalità significant-change location funziona senza la Modalità Posizione in Background — il sistema riattiva l’app solo quando le coordinate cambiano significativamente (di solito 500 m o più). Non richiede GPS costante, risparmiando batteria. Adatta per app meteo che aggiornano i dati quando l’utente si sposta.

Modalità Bluetooth (Accessori LE)

Modalità Bluetooth LE in Background consente all’app di interagire con dispositivi BLE in background. Viene utilizzata da braccialetti fitness, sensori medici, dispositivi Smart Home e navigazione tramite beacon. La modalità si divide in due sottotipi: bluetooth-central (l’app si connette ai dispositivi) e bluetooth-peripheral (l’app funge da dispositivo).

Lavoro in modalità Central

Un’app che funge da Central può scansionare e connettersi a dispositivi BLE in background. Per farlo, specificare bluetooth-central in Background Modes e chiamare CBCentralManager.scanForPeripherals con l’opzione CBCentralManagerScanOptionAllowDuplicatesKey. In background, la scansione funziona a frequenza ridotta — il sistema può ritardare la scoperta per risparmiare energia.

Lavoro in modalità Peripheral

Un’app che funge da Peripheral può annunciare servizi e rispondere alle richieste di altri dispositivi. La modalità bluetooth-peripheral consente all’app di rimanere visibile ad altri dispositivi BLE anche in background. Viene utilizzata nelle app HealthKit e nelle soluzioni IoT.

Monitoraggio di Beacon e Regioni

Il monitoraggio iBeacon funziona in background senza autorizzazioni aggiuntive — il sistema stesso tiene traccia dell’ingresso e dell’uscita dalle regioni Beacon. Tuttavia, per scansionare il contenuto del Beacon (UUID di prossimità, major, minor), sono necessari l’autorizzazione Bluetooth e la modalità bluetooth-central Background Mode. Utilizzare CLLocationManager con CLBeaconRegion per il monitoraggio.

VoIP e PushKit per app di comunicazione

Modalità VoIP in Background è progettata per app di comunicazione vocale (Skype, Zoom, WhatsApp). Questa modalità consente all’app di rimanere connessa al server per ricevere chiamate in arrivo. A partire da iOS 8, per VoIP viene utilizzato PushKit — un framework che gestisce le notifiche push dal server VoIP senza coinvolgere APNs.

PushKit per chiamate in arrivo

PushKit è l’unico meccanismo che garantisce la consegna delle notifiche VoIP al dispositivo. Alla ricezione di una notifica PushKit, il sistema riattiva l’app, anche se era stata terminata. L’app deve stabilire una connessione con il server entro 30 secondi e mostrare una notifica locale per la chiamata in arrivo.

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

Regole di utilizzo di PushKit

PushKit non può essere utilizzato per notifiche ordinarie — solo per VoIP, comunicazioni watchOS e provider di file. Apple verifica questo durante la revisione. L’uso improprio porta al rifiuto dell’app. A partire da iOS 13, PushKit consegna solo la notifica — è obbligatorio chiamare CXProvider (CallKit) per visualizzare la schermata di chiamata.

Modalità Fetch e Processing

Background Fetch e Background Processing sono modalità per aggiornamenti di contenuto in background e attività lunghe. Fetch è per aggiornamenti periodici brevi (fino a 30 s), Processing è per attività lunghe (fino a 10 min) con condizioni (Wi-Fi, ricarica). Processing è disponibile solo su iOS 13+.

Background Fetch — Aggiornamenti rapidi

La modalità Fetch consente al sistema di riattivare periodicamente l’app per scaricare nuovi contenuti. Il sistema analizza il comportamento dell’utente e seleziona il momento ottimale. L’app deve chiamare il completion handler entro 30 secondi. Fetch è adatto per app di notizie, feed di social media e meteo.

Background Processing — Attività lunghe

BGProcessingTask è progettata per attività che possono essere eseguite senza intervento dell’utente: pulizia della cache, sincronizzazione di database di grandi dimensioni, elaborazione di file multimediali. Il sistema avvia l’attività solo in condizioni favorevoli — dispositivo in carica, connesso al Wi-Fi, non in modalità basso consumo. Disponibile fino a 10 minuti.

Pianificazione e requisiti

Per BGProcessingTask, è necessario specificare requiresExternalPower e requiresNetworkConnectivity. Il sistema può rimandare l’esecuzione a tempo indeterminato se le condizioni non sono soddisfatte. A differenza di BGAppRefreshTask, che deve essere eseguito almeno una volta al giorno, Processing potrebbe non essere eseguito per settimane se il dispositivo viene caricato raramente.

Linee guida di revisione dell’App Store per Background Modes

Apple verifica rigorosamente l’uso dei Background Modes durante la revisione delle app. La regola principale: ogni modalità attivata deve essere giustificata dalla funzionalità dell’app. Se un’app dichiara la Modalità Posizione ma non utilizza la geolocalizzazione, verrà rifiutata con la richiesta di rimuovere la capacità.

Cause comuni di rifiuto

Le violazioni più comuni: Modalità Posizione senza necessità esplicita (l’app richiede l’accesso “Sempre” per mostrare pubblicità), Modalità Audio senza riproduzione audio in background, VoIP senza PushKit, Modalità BLE senza dispositivi Bluetooth. Apple può rifiutare l’app anche in fase di aggiornamento se la modalità non viene più utilizzata.

Descrizione nelle note di revisione

Quando si invia per la revisione, fornire una giustificazione specifica per ogni modalità nelle Note. Ad esempio, “La Modalità Posizione in Background viene utilizzata per tracciare il percorso dell’utente nella funzionalità fitness.” Senza spiegazione, il revisore può rifiutare l’app. Per funzionalità riservate (VoIP), Apple può richiedere un account di test.

Raccomandazioni per minimizzare le modalità

Utilizzare il set minimo necessario di modalità. Se la tua app necessita di download di dati in background una volta all’ora — non attivare la Modalità Posizione, utilizzare Fetch o BGAppRefreshTask. Le modalità extra non solo portano al rifiuto, ma creano anche un’impressione negativa: l’utente vede nelle Impostazioni che l’app utilizza la geolocalizzazione in background.

Domande frequenti

Quante Background Modes possono essere attivate in una singola app?

Non c’è limite al numero, ma ogni modalità deve essere giustificata dalla funzionalità dell’app. Attivare tutte le modalità senza necessità è un motivo garantito di rifiuto durante la revisione. Un limite pratico è di 2–3 modalità per app, altrimenti l’utente vedrà numerose richieste di autorizzazione.

Come verificare se una Background Mode è attiva?

Utilizzare UIApplication.shared.applicationState — l’app può verificare se è in background (state == .background). È possibile anche osservare le notifiche UIApplication.didEnterBackgroundNotification e willEnterForegroundNotification per cambiare comportamento.

Qual è la differenza tra le modalità Audio e AirPlay Background?

Audio — riproduzione del suono attraverso l’altoparlante o le cuffie. AirPlay — streaming audio e video verso Apple TV e altri dispositivi AirPlay. In pratica, la Modalità Audio copre entrambi gli scenari poiché AirPlay utilizza la sessione audio. Una modalità AirPlay separata non è richiesta da iOS 7+.

Posso usare la Posizione in Background solo quando l’app è aperta?

Sì, per questo utilizzare requestWhenInUseAuthorization() invece di requestAlwaysAuthorization(). L’app riceverà la posizione solo in primo piano. Se è necessario un breve tracciamento in background, chiamare startUpdatingLocation() e fermarlo in willResignActive.

In che modo i Background Modes influiscono sulla batteria?

Ogni modalità aumenta il consumo energetico. La Modalità Posizione è la più esigente, può ridurre la durata della batteria del 30–50% con tracciamento continuo. La Modalità Audio è moderata (15–20%). Fetch e Processing sono minimi (2–5%). La Modalità BLE è bassa (5–10%) grazie all’efficienza energetica del Bluetooth LE.

Riepilogo

  • Background Modes — capacità dichiarabili di iOS che consentono a un’app di eseguire legittimamente codice in background.
  • Modalità Audio — la più comune, per riprodurre musica, podcast e video tramite AVAudioSession con la categoria .playback.
  • Modalità Posizione — per navigazione e fitness, la più energivora, richiede requestAlwaysAuthorization e allowsBackgroundLocationUpdates.
  • Modalità BLE — lavoro con dispositivi Bluetooth in background tramite CBCentralManager con scansione in background.
  • VoIP e PushKit — per app di comunicazione, garantisce la consegna delle chiamate in arrivo tramite PKPushRegistry.
  • Fetch e Processing — attività brevi e lunghe in background con diverse condizioni di esecuzione e limiti di tempo.
  • Apple verifica rigorosamente la giustificazione di ogni modalità — l’uso improprio porta al rifiuto dell’app dall’App Store.

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche