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 MHz. Форматът на пакета е строго фиксиран и се състои от четири полета: префикс Apple iBeacon (0x4C000215), 16-байтов UUID, 2-байтови стойности Major и 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 GHz. На закрито разсейването на 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 мрежа, UWB).
Обхватът на iBeacon зависи от настройките на маяка и условията на средата. Типичен обхват: Immediate — до 0,5 m, Near — до 3 m, Far — до 30-50 m. При използване на маяци с усилвател на сигнала и на открити пространства обхватът може да достигне 70 m, но точността на определяне на разстоянието на такова разстояние е минимална.
Резюме
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също