iBeacon è un protocollo proprietario di Apple per beacon Bluetooth Low Energy, che consente ai dispositivi iOS di determinare la propria posizione in ambienti interni con precisione centimetrica. Il protocollo si basa sulla trasmissione broadcast di pacchetti BLE con un identificatore univoco contenente valori UUID, Major e Minor. Secondo le Apple iBeacon Design Guidelines (2025), la tecnologia viene utilizzata per la navigazione in centri commerciali, musei, aeroporti e stadi, supportando il rilevamento passivo senza associazione attiva dei dispositivi.
Punti chiave
iBeacon è una tecnologia di posizionamento indoor sviluppata da Apple e presentata al WWDC 2013. A differenza del GPS, che non funziona all'interno degli edifici, iBeacon utilizza beacon Bluetooth Low Energy — piccoli dispositivi a batteria che trasmettono pacchetti di identificazione fissi. I dispositivi iOS e Android ricevono questi pacchetti e calcolano la distanza approssimativa dal beacon in base al livello del segnale (RSSI).
Il protocollo iBeacon è stato il primo standard di massa per i beacon BLE, lanciato da Apple nel 2013 con iOS 7. Inizialmente, la tecnologia è stata utilizzata nel commercio al dettaglio: gli Apple Store hanno implementato iBeacon per informare i clienti sugli sconti all'ingresso in determinate zone. Entro il 2025, l'infrastruttura iBeacon conta milioni di beacon installati in tutto il mondo, sebbene siano emersi protocolli alternativi — Eddystone di Google e AltBeacon open source.
iBeacon viene utilizzato in cinque scenari principali: navigazione indoor (centri commerciali, aeroporti, musei), notifiche contestuali (sconti all'ingresso del negozio), automazione dei flussi di lavoro (marcatura di presenza), logistica e gestione del magazzino, e guide turistiche con riproduzione automatica dei contenuti all'avvicinamento a un oggetto. Secondo ABI Research (2025), il mercato dei beacon BLE è stimato in 3,2 miliardi di dispositivi in funzione.
Il pacchetto iBeacon è un Advertising PDU (Protocol Data Unit), trasmesso sul canale pubblicitario BLE alle frequenze 2402, 2426 e 2480 MHz. Il formato del pacchetto è fisso e composto da quattro campi: prefisso Apple iBeacon (0x4C000215), UUID di 16 byte, Major di 2 byte e Minor di 2 byte, oltre a TX Power di 1 byte per la calibrazione della distanza. La dimensione totale dei dati è di 30 byte, che rientra in un singolo BLE Advertising PDU.
| Campo | Dimensione | Descrizione |
|---|---|---|
| Prefisso Apple | 9 byte | Company ID (0x004C) + iBeacon type (0x0215) |
| UUID | 16 byte | Identificatore univoco dell'organizzazione o dell'app |
| Major | 2 byte | Identificatore di zona (0-65535), es.: numero negozio |
| Minor | 2 byte | Identificatore di punto (0-65535), es.: numero scaffale |
| TX Power | 1 byte | Potenza di calibrazione del segnale a 1 metro (dBm) |
Gli identificatori iBeacon formano una gerarchia a tre livelli. L'UUID viene assegnato all'organizzazione (ad esempio, una catena di negozi), Major al negozio o piano specifico, Minor al punto specifico all'interno della zona (area cassa, reparto prodotto). Questa gerarchia consente all'app di reagire in modo flessibile a diversi livelli di contesto: all'ingresso del negozio (UUID + Major), l'app può caricare la mappa del piano e, all'avvicinamento a un reparto specifico (Minor), mostrare le informazioni sul prodotto.
Il campo TX Power è il valore di riferimento del livello del segnale (RSSI) a 1 metro di distanza dal beacon. Alla ricezione del pacchetto, il dispositivo registra l'RSSI effettivo e calcola la distanza con la formula: distance = 10^((TX_Power - RSSI) / (10 * n)), dove n è il coefficiente di attenuazione del mezzo (solitamente 2-4). La corretta calibrazione del TX Power è fondamentale per la precisione del posizionamento: un errore di 1 dBm comporta un'imprecisione fino al 30% a 5 metri di distanza.
iOS definisce tre zone di prossimità in base alla distanza calcolata dal beacon: Immediate (meno di 0,5 metri), Near (da 0,5 a 3 metri) e Far (da 3 a 30-50 metri a seconda delle condizioni). La distanza esatta non viene comunicata — solo la categoria. Ciò è intenzionale: l'RSSI è soggetto a interferenze, riflessioni del segnale e influenza del corpo umano, quindi le categorie forniscono una determinazione della posizione più stabile.
Immediate è la zona di contatto diretto, quando il dispositivo si trova a pochi centimetri dal beacon. Utilizzata in scenari che richiedono la massima precisione: pagamento tramite terminale, apertura di serratura digitale, verifica a un posto di controllo. Nella zona Immediate, l'RSSI varia generalmente da -30 a -60 dBm.
La zona Near è l'area di lavoro principale di iBeacon, che copre distanze da 0,5 a 3 metri. Utilizzata per la navigazione indoor — ad esempio, all'avvicinamento a una vetrina con un prodotto, l'app mostra informazioni dettagliate. Nella zona Near, l'RSSI varia da -60 a -80 dBm con calibrazione TX Power = -59 dBm.
Far è la zona massima di rilevamento del segnale del beacon. Utilizzata per il monitoraggio dell'ingresso in una regione (ad esempio, ingresso in un centro commerciale). A distanza Far, l'RSSI è generalmente inferiore a -80 dBm e la precisione della determinazione della distanza diminuisce significativamente. Per il monitoraggio dell'ingresso, vengono utilizzate le API di sistema region monitoring, non la determinazione della zona esatta.
Una regione iBeacon è un'area virtuale definita dall'UUID (e opzionalmente Major + Minor). iOS consente di monitorare fino a 20 regioni simultaneamente con CLLocationManager. All'ingresso in una regione, il sistema risveglia l'app anche in modalità background o terminata e invia una notifica tramite il delegate locationManager:didEnterRegion. All'uscita dalla regione, viene chiamato locationManager:didExitRegion.
import CoreLocation
let locationManager = CLLocationManager()
let region = CLBeaconRegion(
uuid: UUID(uuidString: "E2C56DB5-DFFB-48D2-B060-D0F5A71096E0")!,
identifier: "myBeaconRegion"
)
locationManager.delegate = self
locationManager.requestAlwaysAuthorization()
locationManager.startMonitoring(for: region)
Per determinare la zona (Immediate, Near, Far), viene utilizzato il ranging — la scansione in tempo reale dei beacon. A differenza del monitoraggio, il ranging funziona solo in modalità attiva dell'app e richiede l'autorizzazione all'accesso alla posizione. Il metodo locationManager:didRangeBeacons:inRegion restituisce un array di CLBeacon con i campi proximity (CLProximity.immediate, .near, .far, .unknown), accuracy (distanza calibrata in metri) e rssi.
func locationManager(
_ manager: CLLocationManager,
didRangeBeacons beacons: [CLBeacon],
in region: CLBeaconRegion
) {
for beacon in beacons {
switch beacon.proximity {
case .immediate:
print("Prossimità immediata")
case .near:
print("Prossimità vicina")
case .far:
print("Prossimità lontana")
default:
print("Prossimità sconosciuta")
}
}
}
Android non ha il supporto nativo per iBeacon, poiché il protocollo è una soluzione proprietaria di Apple. Tuttavia, con librerie di terze parti come AltBeacon di Radius Networks (ora parte dell'organizzazione Open Beacon), gli sviluppatori possono integrare iBeacon nelle applicazioni Android. La libreria AltBeacon implementa la scansione dei pacchetti BLE, l'analisi del formato iBeacon e l'emulazione del ranging e del monitoraggio delle regioni simili all'API iOS.
val beaconManager = BeaconManager.getInstanceForApplication(context)
beaconManager.beaconParsers.add(
BeaconParser().setBeaconLayout(
"m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"
)
)
beaconManager.backgroundBetweenScanPeriod = 5000
beaconManager.foregroundScanPeriod = 1100
beaconManager.bind(this)
Il formato di analisi di iBeacon nella libreria AltBeacon è definito dalla stringa layout: “m:2-3=0215” — verifica di due byte del marcatore iBeacon, “i:4-19” — UUID di 16 byte, “i:20-21” — Major, “i:22-23” — Minor, “p:24-24” — TX Power. Lo stesso formato è supportato per Eddystone e altri protocolli, rendendo AltBeacon una libreria universale per lavorare con i beacon BLE su Android.
Su Android, il lavoro con iBeacon presenta tre limitazioni principali: la scansione in background è limitata dai produttori (Xiaomi, Huawei, Samsung spesso terminano i processi in background), la precisione dell'RSSI è inferiore rispetto a iOS a causa delle differenze negli stack BLE, ed è richiesta l'autorizzazione ACCESS_FINE_LOCATION da Android 6.0 e BLUETOOTH_SCAN da Android 12.
Eddystone è un protocollo beacon BLE aperto di Google, presentato nel 2015. A differenza di iBeacon, Eddystone supporta quattro tipi di pacchetti: Eddystone-UID (identificatore fisso), Eddystone-URL (trasmissione di URL per Physical Web), Eddystone-TLM (telemetria del beacon — carica della batteria, temperatura) e Eddystone-EID (identificatore crittografato per protezione dalla clonazione). Sebbene Google abbia interrotto lo sviluppo di Physical Web nel 2022, il protocollo Eddystone continua ad essere utilizzato nelle soluzioni aziendali.
| Parametro | iBeacon | Eddystone |
|---|---|---|
| Proprietario | Apple | Google (aperto) |
| Tipi di pacchetti | 1 (UID) | 4 (UID, URL, TLM, EID) |
| Dati | UUID+Major+Minor | ID/URL + telemetria |
| Supporto nativo iOS | Sì (CoreLocation) | No (tramite CoreBluetooth) |
| Physical Web | No | Sì (Eddystone-URL) |
| Sicurezza | Nessuna crittografia | EID con rotazione delle chiavi |
La scelta tra iBeacon e Eddystone dipende dalla piattaforma target e dallo scenario di utilizzo. iBeacon è preferibile per le app iOS grazie all'integrazione nativa con CoreLocation e al monitoraggio delle regioni in background. Eddystone è più adatto per progetti orientati ad Android e scenari Physical Web, dove il beacon trasmette un URL senza installazione dell'app. Per progetti multipiattaforma, viene spesso utilizzato AltBeacon, che supporta entrambi i protocolli.
Nell'implementazione di iBeacon, gli sviluppatori incontrano diverse limitazioni che devono essere considerate nella fase di progettazione dell'architettura. Una valutazione errata di questi fattori porta a navigazione instabile, falsi trigger e scarica della batteria dei beacon più rapida del previsto.
Il livello del segnale RSSI subisce fluttuazioni significative a causa di riflessioni da pareti, strutture metalliche, presenza di persone e altri dispositivi wireless nella banda 2,4 GHz. In ambienti chiusi, la variazione dell'RSSI per lo stesso beacon può raggiungere 10-15 dBm al minuto, rendendo il calcolo della distanza impreciso senza l'uso di filtri (media mobile, filtro di Kalman).
iOS supporta il monitoraggio di un massimo di 20 regioni contemporaneamente per app. Per progetti che richiedono la copertura di vaste aree (aeroporto, stadio), ciò non è sufficiente. La soluzione è utilizzare la commutazione dinamica delle regioni: all'ingresso in una regione, le regioni vicine vengono attivate e quelle remote disattivate.
Il ritardo tra l'ingresso in una regione e la ricezione della notifica può variare da 1 a 30 secondi a seconda delle condizioni. iOS scansiona i beacon periodicamente per risparmiare batteria, quindi non ci si deve aspettare una reazione immediata. Per scenari critici in termini di tempo (apertura della porta all'avvicinamento), si consiglia l'uso di Immediate ranging, ma funziona solo in modalità attiva dell'app.
Domande frequenti
iBeacon è un protocollo di Apple per beacon Bluetooth Low Energy, che consente ai dispositivi iOS e Android di determinare la propria posizione in ambienti interni con precisione centimetrica basata sull'analisi del livello del segnale (RSSI) dei pacchetti BLE trasmessi.
Bluetooth è un protocollo di comunicazione wireless generale per la trasmissione di dati tra dispositivi, che richiede l'associazione. iBeacon è un protocollo specializzato su BLE, progettato esclusivamente per la trasmissione broadcast di identificatori senza stabilire una connessione. I beacon iBeacon non trasmettono dati — segnalano solo la loro presenza.
iBeacon opera in modalità Advertising — il beacon trasmette continuamente pacchetti BLE broadcast con informazioni ID. Il dispositivo riceve il pacchetto ma non si connette al beacon. Ciò consente di risparmiare la batteria del beacon (fino a 2-3 anni con una CR2032) e di rilevare passivamente i beacon senza scansione attiva.
No, iBeacon non è progettato per localizzare dispositivi. I beacon iBeacon sono trasmettitori fissi e l'iPhone funge da ricevitore. L'iPhone non trasmette segnali iBeacon (eccetto la funzione Find My che utilizza un altro protocollo basato su BLE). Per localizzare il telefono, vengono utilizzate altre tecnologie (rete Find My, UWB).
La portata di iBeacon dipende dalle impostazioni del beacon e dalle condizioni ambientali. Portata tipica: Immediate — fino a 0,5 m, Near — fino a 3 m, Far — fino a 30-50 m. Con beacon con amplificatore di segnale e in spazi aperti, la portata può raggiungere 70 m, ma la precisione della determinazione della distanza a tale distanza è minima.
Riepilogo
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.
Leggi anche