iBeacon — це пропрієтарний протокол Apple для Bluetooth Low Energy маячків, що дозволяє iOS-пристроям визначати своє місцезнаходження всередині приміщень з точністю до сантиметрів. В основі протоколу лежить широкомовна розсилка BLE-пакетів з унікальним ідентифікатором, що містить UUID, Major та Minor значення. За даними Apple iBeacon Design Guidelines (2025), технологія використовується в навігації по торгових центрах, музеях, аеропортах та на стадіонах, підтримуючи пасивне виявлення без активного сполучення пристроїв.
Головне
iBeacon — це технологія позиціонування всередині приміщень, розроблена Apple та представлена на WWDC 2013. На відміну від GPS, який не працює всередині будівель, iBeacon використовує Bluetooth Low Energy маячки — невеликі пристрої з батарейним живленням, які передають фіксовані ідентифікаційні пакети. Пристрої на iOS та Android приймають ці пакети та обчислюють приблизну відстань до маячка на основі рівня сигналу (RSSI).
Протокол iBeacon став першим масовим стандартом BLE-маячків, запущеним Apple у 2013 році в iOS 7. Спочатку технологія використовувалася в роздрібній торгівлі: магазини Apple Store впровадили iBeacon для інформування покупців про знижки при вході у визначені зони. До 2025 року інфраструктура iBeacon налічує мільйони встановлених маячків по всьому світу, хоча з'явилися альтернативні протоколи — Eddystone від Google та AltBeacon з відкритим кодом.
iBeacon застосовується у п'яти основних сценаріях: навігація всередині приміщень (торгові центри, аеропорти, музеї), контекстні сповіщення (знижки при вході в магазин), автоматизація робочих процесів (позначка про присутність), логістика та складський облік, а також туристичні гіди з автоматичним відтворенням контенту при наближенні до об'єкта. За даними ABI Research (2025), ринок BLE-маячків оцінюється в 3,2 млрд пристроїв в експлуатації.
Пакет iBeacon — це Advertising PDU (Protocol Data Unit), що передається в BLE-рекламному каналі на частотах 2402, 2426 та 2480 МГц. Формат пакета жорстко фіксований і складається з чотирьох полів: префікса Apple iBeacon (0x4C000215), 16-байтового UUID, 2-байтового Major та 2-байтового Minor значення, а також 1-байтового TX Power для калібрування відстані. Загальний розмір даних — 30 байт, що поміщається в один BLE Advertising PDU.
| Поле | Розмір | Опис |
|---|---|---|
| Префікс Apple | 9 байт | Company ID (0x004C) + iBeacon type (0x0215) |
| UUID | 16 байт | Унікальний ідентифікатор організації або додатку |
| Major | 2 байти | Ідентифікатор зони (0-65535), наприклад номер магазину |
| Minor | 2 байти | Ідентифікатор точки (0-65535), наприклад номер полиці |
| TX Power | 1 байт | Калібрувальна потужність сигналу на відстані 1 метр (dBm) |
Ідентифікатори iBeacon утворюють трирівневу ієрархію. UUID призначається організації (наприклад, мережа магазинів), Major — конкретному магазину або поверху, Minor — конкретній точці всередині зони (касова зона, відділ товару). Така ієрархія дозволяє додатку гнучко реагувати на різні рівні контексту: при вході в магазин (UUID + Major) додаток може завантажити карту поверху, а при підході до конкретного відділу (Minor) показати інформацію про товар.
Поле TX Power — це опорне значення рівня сигналу (RSSI) на відстані 1 метр від маячка. При отриманні пакета пристрій фіксує фактичний RSSI та обчислює відстань за формулою: distance = 10^((TX_Power - RSSI) / (10 * n)), де n — коефіцієнт загасання середовища (зазвичай 2-4). Правильне калібрування TX Power критично важливе для точності позиціонування: помилка в 1 dBm дає похибку до 30% на відстані 5 метрів.
iOS визначає три зони наближення на основі обчисленої відстані до маячка: Immediate (менше 0,5 метра), Near (від 0,5 до 3 метрів) та Far (від 3 до 30-50 метрів залежно від умов). Точна відстань не повідомляється — лише категорія. Це зроблено навмисно: RSSI схильний до перешкод, відбиття сигналу та впливу людського тіла, тому категорії дають більш стабільне визначення місцезнаходження.
Immediate — зона прямого контакту, коли пристрій знаходиться в кількох сантиметрах від маячка. Використовується для сценаріїв, що вимагають максимальної точності: оплата через термінал, відкриття цифрового замка, верифікація на пропускному пункті. В зоні Immediate RSSI зазвичай становить від -30 до -60 dBm.
Зона Near — основна робоча зона iBeacon, що охоплює відстань від 0,5 до 3 метрів. Використовується для навігації всередині приміщень — наприклад, при підході до вітрини з товаром додаток показує детальну інформацію. В зоні Near RSSI коливається від -60 до -80 dBm при калібруванні TX Power = -59 dBm.
Far — максимальна зона виявлення сигналу маячка. Використовується для моніторингу входу в регіон (наприклад, вхід у торговий центр). На дистанції Far RSSI зазвичай слабший за -80 dBm, і точність визначення відстані значно падає. Для моніторингу входу використовуються системні API region monitoring, а не визначення точної зони.
Регіон iBeacon — це віртуальна область, що визначається за UUID (та опціонально Major + Minor). iOS дозволяє моніторити до 20 регіонів одночасно за допомогою CLLocationManager. При вході в регіон система пробуджує додаток навіть у фоновому або завершеному стані та надсилає сповіщення через делегат locationManager:didEnterRegion. При виході з регіону викликається 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)
Для визначення зони (Immediate, Near, Far) використовується ranging — сканування маячків у реальному часі. На відміну від моніторингу, ranging працює лише в активному режимі додатку та вимагає дозволу на доступ до місцезнаходження. Метод locationManager:didRangeBeacons:inRegion повертає масив CLBeacon з полями proximity (CLProximity.immediate, .near, .far, .unknown), accuracy (калібрована відстань у метрах) та rssi.
func locationManager(
_ manager: CLLocationManager,
didRangeBeacons beacons: [CLBeacon],
in region: CLBeaconRegion
) {
for beacon in beacons {
switch beacon.proximity {
case .immediate:
print("Безпосередня близькість")
case .near:
print("Близька відстань")
case .far:
print("Далека відстань")
default:
print("Невідома близькість")
}
}
}
Android не має вбудованої підтримки iBeacon, оскільки протокол є пропрієтарним рішенням Apple. Однак за допомогою сторонніх бібліотек, таких як AltBeacon від Radius Networks (нині частина організації Open Beacon), розробники можуть інтегрувати iBeacon в Android-додатки. Бібліотека AltBeacon реалізує сканування BLE-пакетів, парсинг iBeacon-формату та емуляцію ranging і моніторингу регіонів, аналогічних iOS API.
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)
Формат парсингу iBeacon у бібліотеці AltBeacon визначається рядком layout: «m:2-3=0215» — перевірка двох байтів iBeacon-маркера, «i:4-19» — 16-байтовий UUID, «i:20-21» — Major, «i:22-23» — Minor, «p:24-24» — TX Power. Такий же формат підтримується для Eddystone та інших протоколів, що робить AltBeacon універсальною бібліотекою для роботи з BLE-маячками на Android.
На Android робота з iBeacon має три ключові обмеження: фонове сканування обмежене виробниками (Xiaomi, Huawei, Samsung часто вбивають фонові процеси), точність RSSI нижча, ніж на iOS, через відмінності в BLE-стеках, та для сканування потрібен дозвіл ACCESS_FINE_LOCATION починаючи з Android 6.0 та BLUETOOTH_SCAN з Android 12.
Eddystone — відкритий протокол BLE-маячків від Google, представлений у 2015 році. На відміну від iBeacon, Eddystone підтримує чотири типи пакетів: Eddystone-UID (фіксований ідентифікатор), Eddystone-URL (передача URL для Physical Web), Eddystone-TLM (телеметрія маячка — заряд батареї, температура) та Eddystone-EID (зашифрований ідентифікатор для захисту від клонування). Незважаючи на те, що Google припинила розвиток Physical Web у 2022 році, протокол Eddystone продовжує використовуватися в корпоративних рішеннях.
| Параметр | iBeacon | Eddystone |
|---|---|---|
| Власник | Apple | Google (відкритий) |
| Типи пакетів | 1 (UID) | 4 (UID, URL, TLM, EID) |
| Дані | UUID+Major+Minor | ID/URL + телеметрія |
| Нативна підтримка iOS | Так (CoreLocation) | Ні (через CoreBluetooth) |
| Physical Web | Ні | Так (Eddystone-URL) |
| Безпека | Немає шифрування | EID з ротацією ключів |
Вибір між iBeacon та Eddystone залежить від цільової платформи та сценарію використання. iBeacon кращий для iOS-додатків завдяки нативній інтеграції з CoreLocation та моніторингу регіонів у фоновому режимі. Eddystone краще підходить для Android-орієнтованих проектів та сценаріїв Physical Web, де маячок передає URL без встановлення додатку. Для крос-платформних проектів часто використовують AltBeacon, що підтримує обидва протоколи.
При впровадженні iBeacon розробники стикаються з рядом обмежень, які необхідно враховувати на етапі проектування архітектури. Некоректне врахування цих факторів призводить до нестабільної роботи навігації, хибних спрацьовувань та розряду батареї маячків швидше за розрахунковий термін.
Рівень сигналу RSSI схильний до значних коливань через відбиття від стін, металевих конструкцій, присутності людей та інших бездротових пристроїв у діапазоні 2,4 ГГц. У приміщенні розкид RSSI для одного маячка може досягати 10-15 dBm за хвилину, що робить обчислення відстані неточним без використання фільтрів (згладжування ковзним середнім, калманівська фільтрація).
iOS підтримує моніторинг не більше 20 регіонів одночасно на один додаток. Для проектів, що вимагають покриття великої території (аеропорт, стадіон), цього недостатньо. Рішення — використовувати динамічне перемикання регіонів: при вході в один регіон активуються сусідні, а віддалені деактивуються.
Затримка між входом у регіон та отриманням сповіщення може становити від 1 до 30 секунд залежно від умов. iOS сканує маячки періодично для економії батареї, тому миттєвої реакції очікувати не слід. Для критичних за часом сценаріїв (відкриття дверей при підході) рекомендується використовувати Immediate ranging, але воно працює лише в активному режимі додатку.
Часто задавані питання
iBeacon — це протокол Apple для Bluetooth Low Energy маячків, що дозволяє iOS та Android пристроям визначати своє місцезнаходження всередині приміщень з точністю до сантиметрів на основі аналізу рівня сигналу (RSSI) переданих BLE-пакетів.
Bluetooth — це загальний протокол бездротового зв'язку для передачі даних між пристроями, що вимагає сполучення. iBeacon — спеціалізований протокол поверх BLE, призначений виключно для широкомовної передачі ідентифікаторів без встановлення з'єднання. iBeacon маячки не передають дані — вони лише сповіщають про свою присутність.
iBeacon працює в режимі Advertising — маячок постійно передає широкомовні BLE-пакети з ID-інформацією. Пристрій приймає пакет, але не підключається до маячка. Це дозволяє економити батарею маячка (до 2-3 років роботи від однієї CR2032) та виявляти маячки пасивно без активного сканування.
Ні, iBeacon не призначений для пошуку пристроїв. Маячки iBeacon — це стаціонарні передавачі, а iPhone виступає в ролі приймача. iPhone не передає iBeacon-сигнали (за винятком функції Find My, що використовує інший протокол на базі BLE). Для пошуку телефону використовуються інші технології (Find My network, UWB).
Радіус дії iBeacon залежить від налаштувань маячка та умов середовища. Типова дальність: Immediate — до 0,5 м, Near — до 3 м, Far — до 30-50 м. При використанні маячків з підсилювачем сигналу та у відкритих просторах дальність може досягати 70 м, але точність визначення відстані на такій дистанції мінімальна.
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також