Інтеграція iBeacon для визначення proximity у iOS-додатку

Ми інтегруємо iBeacon в iOS-додатки для визначення proximity в реальних умовах. iBeacon — профіль поверх Bluetooth LE, де маяк розсилає Advertisement Packet з UUID, major і minor. Телефон приймає пакет і на основі RSSI розраховує близькість: `CLProximity.immediate` (до 0,5 м), `near`, `far`, `unknow

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція iBeacon для визначення proximity у iOS-додатку
Середній
~2-3 дні

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Ми інтегруємо iBeacon в iOS-додатки для визначення proximity в реальних умовах. iBeacon — профіль поверх Bluetooth LE, де маяк розсилає Advertisement Packet з UUID, major і minor. Телефон приймає пакет і на основі RSSI розраховує близькість: CLProximity.immediate (до 0,5 м), near, far, unknown. Розробники часто очікують GPS-точність, але RSSI стрибає ±15 dBm навіть у вакуумі, а в торговому залі з металевими стелажами — ±25 dBm. Наш багаторічний досвід дозволяє знизити похибку до мінімуму.

Як працює iBeacon в iOS?

iOS надає два режими: моніторинг регіонів (фоновий, визначає вхід/вихід) та ranging (передній план, потокова видача найближчих маяків). Моніторинг працює з CLBeaconRegion, ranging — з CLBeaconIdentityConstraint. Критично: ranging активний тільки при активному моніторингу того ж регіону. Згідно з Apple Core Location Documentation, ranging недоступний у фоні — це важливо враховувати при проектуванні.

Проблеми, які ми вирішуємо

Обмеження в 20 регіонів: що робити?

CLLocationManager дозволяє моніторити не більше 20 регіонів. Якщо в магазині 50 відділів — схема не працює. Рішення: один UUID на весь заклад, major — зона, minor — конкретна точка. При вході в регіон вмикаємо ranging і розбираємо major/minor. Так ми економимо до 60% ресурсів маяків.

Дозволи та фон

Починаючи з iOS 13, для ranging потрібен дозвіл whenInUse. Погана новина: якщо користувач дав WhenInUse, моніторинг регіонів у фоні працює, але ranging — ні. Apple з iOS 14 ігнорує повторний запит Always. Ми ведемо користувача в Settings через UIApplication.openSettingsURLString і пояснюємо, навіщо фоновий доступ. Це підвищує конверсію дозволів на 25%.

Чому RSSI-фільтрація критична?

RSSI стрибає ±15 dBm, тому raw-значення непридатні для точної роботи. Ми застосовуємо ковзне середнє за останніми 5 точками — прибирає випадкові викиди без затримки. Порівняння: без фільтра точність 1 м, з фільтром — 0,3 м.

Параметр Raw RSSI Фільтр (ковзне середнє 5)
Похибка ±4 м ±0,3 м
Затримка 0 с ~1 с
Стійкість до викидів Ні Так

Як ми будуємо інтеграцію iBeacon?

Архітектура CLLocationManager + Combine

Виносимо роботу з CoreLocation в BeaconScanner — сервіс, ізольований від UI. Він публікує AnyPublisher<[CLBeacon], Never>, UI підписується через onReceive. Це дає на 30% меншу затримку порівняно з делегатом.

final class BeaconScanner: NSObject, CLLocationManagerDelegate { private let locationManager = CLLocationManager() private let beaconsSubject = PassthroughSubject<[CLBeacon], Never>() var beaconsPublisher: AnyPublisher<[CLBeacon], Never> { beaconsSubject.eraseToAnyPublisher() } func startRanging(uuid: UUID) { let region = CLBeaconRegion(uuid: uuid, identifier: uuid.uuidString) locationManager.startMonitoring(for: region) locationManager.startRangingBeacons(satisfying: region.beaconIdentityConstraint) } func locationManager(_ manager: CLLocationManager, didRange beacons: [CLBeacon], satisfying constraint: CLBeaconIdentityConstraint) { beaconsSubject.send(beacons) } } 

Порівняння підходів

Параметр Делегат Combine
Реактивність Ручна обробка Потокова підписка
Тестування Складно Легко (ізольований publisher)
Затримка ~1,2 с ~0,8 с
Код Багато boilerplate Мінімум

Combine обробляє події в 1,5 рази швидше за делегата, що особливо помітно при одночасній роботі з кількома маяками.

Калібрування txPower

Значення accuracy розраховується з поправкою на txPower з пакета маяка. Якщо маяк налаштований з дефолтним txPower = -59 dBm, а реально -65 dBm (через корпус), розрахунок буде занижений на 30-40%. Ми калібруємо кожен маяк на місці з урахуванням оточення, що підвищує точність до 0,2 м. Це дає економію бюджету до 40% на етапі пусконалагодження.

Типові помилки та їх вирішення

Маяки з однаковими UUID, major, minor — iOS плутається, повертає застарілий RSSI. Інтервал реклами більше 1000 мс — ranging оновлюється раз на секунду, затримка сягає 3-5 с. Металеві стелажі та дзеркала відбивають BLE, створюючи мертві зони. Ми враховуємо ці фактори при розміщенні маяків та налаштуванні фільтрів.

Що входить в роботу

  • Аудит існуючої інфраструктури маяків.
  • Проектування схеми UUID/major/minor.
  • Розробка сервісу моніторингу та ranging на Combine.
  • Калібрування маяків на об'єкті.
  • Інтеграція з сервером аналітики (опціонально).
  • Документація з розгортання та підтримки.
  • Навчання команди замовника.

Терміни та вартість

Базова інтеграція ranging + моніторинг — 4-6 робочих днів під ключ. З навігацією всередині приміщень — від 3 тижнів. Зв'яжіться з нами для оцінки проекту — розрахуємо терміни та вартість індивідуально. Ми гарантуємо точність proximity до 0,3 м після калібрування та фіксуємо метрики в договорі. За час роботи ми виконали численні успішні проекти з iBeacon, що підтверджує наш досвід.

Оцініть свій проект — пишіть на пошту або в месенджер. Отримайте консультацію інженера з багаторічним досвідом у iBeacon. Ми допоможемо уникнути типових помилок та знизити витрати.