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

Хибні спрацювання iBeacon в iOS ламають сценарій: клієнт отримує підказку біля входу, а не біля потрібної полиці. Ми проєктуємо, налаштовуємо та супроводжуємо визначення близькості під ключ — від обстеження точок до регламентів підтримки. Точність спрацювань зростає в рази, а потік звернень до підтримки скорочується.

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

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

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

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

Чому iBeacon в iOS дає хибні спрацювання

iBeacon в iOS — це не маяк, який «знає» відстань, а ланцюжок перетворень: застосунок отримує рівень сигналу, система згладжує його за ковзним вікном і вже зі згладженого значення виводить приблизну відстань і зону.

Кожен шар вносить похибку, тому подія «гість увійшов» надходить не там і не тоді, де її чекає сценарій.

Загасання сигналу нелінійне: впритул до маяка рівень змінюється бурхливо, а на дальньому краю зони різниця між «всередині» й «зовні» майже непомітна на тлі шуму.

Корпус власника, орієнтація телефона в руці, вологість і метал у стіні зміщують значення — в одній і тій самій точці застосунок отримує різну відстань.

Відображення від вітрин, стійок і перегородок додають багатопроменевість: рівень короткочасно підскакує, і система вирішує, що людина підійшла впритул, хоча вона в іншому кінці залу.

Усереднення відстані згладжує шум, але платить затримкою, а при одному порозі входу й виходу гість на межі зони генерує десятки подій — той самий дребезг входу-виходу.

Допомагає гістерезис із двох порогів, витримка за часом і урахування швидкості переміщення, а не миттєве значення.

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

Сценарій, який на столі спрацьовував ідеально, на об’єкті розсипається — розбираємо, як це закривається проєктно.

Що дає стабільне визначення близькості в застосунку

Визначення близькості в iOS-застосунку будується на регіоні iBeacon: система тримає моніторинг у фоні й будить застосунок у момент перетину межі, а всередині зони працює ранжування за рівнем сигналу.

Затримка першого спрацювання — це не властивість маяка, а наслідок налаштування регіону й порогів входу. За коректного калібрування потужності сигналу на метр подія надходить через 1–2 секунди після входу в зону замість 10–15 у першій версії.

Хибні події майже завжди народжуються на межі, де рівень сигналу коливається біля порогу через відображення від стін, металевих стелажів і скла. Ми розводимо пороги входу й виходу (гістерезис) і підтверджуємо подію серією вимірювань, а не одним.

Частка хибних спрацювань падає з десятків відсотків до одиниць, а «дребезг» між сусідніми зонами зникає.

Стійкість зон біля стін і стелажів дає розстановка маяків, а не їхня потужність: перекриття сусідніх зон, висота й орієнтація, обмеження радіуса, щоб вітрина не «світила» в прохід.

До релізу ми проходимо точки з картою рівнів сигналу й фіксуємо фактичні межі — це дешевше, ніж ловити скарги в залі.

Кількість звернень до підтримки падає передусім завдяки зниклому класу відмов «не спрацювало» й «спрацювало не в тій зоні». Логіка обробки й черга подій живуть на пристрої: втрата зв’язку не перетворюється на пропущене торкання, а події доїжджають після відновлення мережі.

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

Формати роботи iBeacon в iOS: режими й обмеження

У iBeacon на iOS близькість будують двома механізмами, і вибір тут не «який кращий», а який припустимий у сценарії.

Режим стеження тримає оголошені зони й надсилає подію входу або виходу, зокрема коли застосунок згорнуто; режим присутності дає відстань до мітки, але живе лише поки застосунок активний на екрані.

Фонове опитування ефіру система веде рідко: подія може надійти із затримкою, а кількість одночасно відстежуваних зон обмежена зверху. Приміщення з сотнею міток напряму так не покрити — зони групують або переносять логіку на сервер.

Варіант Коли підходить Чого не вміє
Стеження за зонами Сценарій стартує за входом або виходом, зокрема з фону: повідомлення, самовивіз, чек-лист зміни Не дає відстані — лише «всередині» або «зовні», а межа зони пливе біля стін і металу
Режим присутності Потрібна шкала близькості: підказка біля полиці, навігація всередині приміщення Гасне при згортанні застосунку; відстань — оцінка, залежить від корпусу телефона й орієнтації
Мітки з датчиками Потрібна телеметрія крім близькості: температура, рух, розкриття корпусу Корисне навантаження пакета мале — потрібен власний розбір даних і контроль заряду мітки
Ручне підтвердження Потрібна гарантія, що людина справді на місці: відмітка, звітність, склад Не автоматизується й не дає відстані — лише факт підтвердження користувачем

Ручне підтвердження тримаємо резервом на спірні випадки: воно не замінює близькість, але закриває звітність там, де автоматиці довіряти не можна.

Порядок впровадження: обстеження точок, налаштування, перевірка

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

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

  1. Обстеження приміщень — проходимо маршрутами користувача й знімаємо рівень сигналу в контрольних точках. Відзначаємо метал, скляні вітрини, холодильне обладнання й перегородки: саме вони дають перевідбиття й «плаваючі» зони.
  2. Карта розміщення міток — схема з прив’язкою до плану поверху: точки монтажу, висота й орієнтація, крок між мітками. Рахуємо перекриття зон заздалегідь, щоб переходи між ними були передбачуваними, а не залежали від того, як людина повернула телефон.
  3. Налаштування правил спрацьовування — пороги за рівнем сигналу й гістерезис, щоб зона не «тремтіла» на межі; час утримання й затримка перед показом; пріоритет зон при перекритті. Окремі правила на вхід, перебування всередині та вихід.
  4. Поведінка у фоні та дозволи — перевіряємо запит доступу до Bluetooth і геопозиції, відновлення моніторингу після холодного старту й перезавантаження пристрою. Без цього сценарій працює в демо й мовчить у реальній експлуатації.
  5. Приймальні перевірки — прогін сценаріїв за маршрутами: частка коректних спрацювань, час до першої події, кількість хибних переходів між зонами. Вимірювання на різних моделях пристроїв і в годину пік, коли ефір зашумлений.
  6. Передача в експлуатацію — віддаємо конфігурацію, карту міток, регламент заміни елементів живлення й чек-лист діагностики. Далі сценарії правляться в налаштуваннях, без перезбирання застосунку.

Такий порядок прибирає головний ризик проєкту — мітки вже змонтовані, а поведінка застосунку не збігається із задуманим сценарієм.

Комплект постачання: конфігурації, схеми й регламенти супроводу

Впровадження вважається завершеним не коли маяки роздають сигнал, а коли ваша команда може супроводжувати систему без нас. Тому всі налаштування, схеми й домовленості фіксуються в артефактах — з ними нову точку додає штатний інженер, а не підрядник за окремою заявкою.

  • Реєстр міток — єдина таблиця з усіма встановленими маяками: ідентифікатори, прив’язка до приміщення, дата монтажу, відповідальний, стан елемента живлення й планова заміна.
  • Схеми розміщення — плани поверхів з фактичними точками монтажу й позначеними зонами впевненого приймання, щоб нову мітку ставили в перевіреному місці, а не на око.
  • Карта відповідності «мітка — сценарій» — який маяк запускає яку дію в застосунку на iOS, де проходять межі зон і який запас закладено, щоб подія не спрацьовувала ривками на краю.
  • Політики доступу до подій — хто із співробітників змінює сценарії, хто бачить лише статистику, як видаються й відкликаються права, що потрапляє до журналу дій.
  • Документація за сценаріями — опис кожного користувацького шляху: умови спрацьовування, пріоритет при конфлікті двох зон, поведінка при вимкненому бездротовому модулі й у фоні.
  • Регламент обслуговування точок — періодичність обходу, перевірка живлення й цілісності міток, порядок заміни й повторного калібрування, строки реакції на відхилення.
  • Порядок розгортання нової точки — покрокова інструкція від монтажу до перевірки, щоб розширення покриття залишалося рутинною задачею.
  • Протокол приймання й журнал обмежень — що перевірено на стенді та в полі, які умови знижують точність і як це відображається на сценарії.

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

Кейс: скоротили хибні спрацювання в торговельній залі

Мережа торговельних залів із кількома десятками точок прийшла з типовою для iBeacon iOS задачею: застосунок показує картку товару, коли покупець підходить до вітрини, і мовчить решту часу.

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

Що було

Частка хибних спрацювань сягала 38%: картка спливала біля входу й на касах, де маяків немає, — сигнал проходив крізь стіни й стелажі. Нова точка входила в роботу за 6–9 днів: маяк налаштовували вручну й перевіряли обходом залу. Підтримка приймала по 20–25 звернень на тиждень — «зона не спрацювала», «відкрилася двічі».

Що змінили

  • Пороги рахуємо за часом утримання, а не за разовим сплеском: картка відкривається лише при стійкій близькості до вітрини.
  • Калібруємо кожен маяк під геометрію конкретного залу й прив’язуємо до плану приміщення — замість одного значення на всю мережу.
  • Запровадили віддалений реєстр точок: нова вітрина описується конфігурацією, без перезбирання й повторного погодження застосунку.

Хибні спрацювання впали з 38% до 4%, запуск нової точки скоротився з 6–9 днів до одного робочого дня — конфігурація вирушає в зал разом із монтажем маяка. Звернення до підтримки знизилися до 4–5 на тиждень, і майже всі — про заміну елементів живлення, а не про логіку зон.

Відкат до попередніх порогів займає хвилини: конфігурація версіонується, тому експерименти з новими сценаріями йдуть без ризику для залу й без виїзду інженера.

Що робити, якщо застосунок уже використовує геозони?

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

Конфлікт виникає не в системі, а в коді: два незалежні потоки подій запускають один сценарій, і він відпрацьовує двічі.

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

Шар будуємо на штатних засобах Apple, без сторонніх служб і додаткового заліза — усе рахується на пристрої.

Варіант Коли підходить Обмеження
Два незалежні потоки сценарії не перетинаються дублі на межі зон, логіка розходиться
Спільний шар подій застосунок уже великий, додаємо точки потрібні правила пріоритету джерел
Поступова міграція за сценаріями зони відомі, потрібна точна близькість перехідний період, активні обидва джерела
Повний перехід на мітки усі точки обладнані мітками без мітки сценарій мовчить, потрібен резервний за геозоною

Пріоритет джерел задаємо явно: при збігу за часом перемагає подія мітки як достовірніша, геозона залишається підтвердженням і страховкою, якщо мітка не зчиталася.

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

Технічні сумніви: частота опитування, батареї, фонова робота

Перед стартом зазвичай спливають одні й ті самі питання: як часто опитувати мітки, що з батареями, як поводиться застосунок у фоні й чи можна змінювати сценарій без нового релізу.

Усі вони вирішуються на рівні архітектури, а не підкруткою параметрів після запуску — тому відповіді нижче ми перевіряємо до першого рядка коду.

З якою частотою опитувати мітки, щоб не посадити батарею телефона?

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

Застосунок буде працювати у фоні?

Так, але за правилами системи. Фоновий режим віддає події входу й виходу із зони, а не безперервний потік вимірювань. Точність у метрах показуємо, коли застосунок активний — так система не вивантажить процес і не покаже користувачеві зайвий запит дозволів.

Скільки живуть мітки iBeacon?

Строк служби мітки залежить від інтервалу мовлення й потужності сигналу: при рідкому мовленні вона працює роками. У проєкт закладаємо регламент заміни живлення, а ідентифікатор прив’язаний до точки, а не до конкретного пристрою, — заміна мітки не ламає логіку сценарію.

Чи можна змінювати сценарій без перезбирання застосунку?

Зони, ідентифікатори, правила спрацьовування й тексти виносимо у віддалену конфігурацію, яку клієнт забирає при запуску. Новий магазин, перестановка міток або правка логіки — це оновлення даних, а не випуск нової версії в магазині застосунків і не очікування перевірки.

Обговоримо задачу: розберемо сценарії та повернемося з планом

Щоб оцінка спиралася на реальний обсяг робіт, а не на здогадки, потрібно разом пройти кілька точок. iBeacon в iOS працює поверх регіонів і дозволів, тому сценарій поведінки й схема розстановки маяків визначають архітектуру застосунку сильніше, ніж інтерфейс. Нижче — перелік питань, які закриваємо на обговоренні задачі.

  • Перелік точок і зон: де стоять маяки, скільки їх, який радіус спрацьовування й де зони перекриваються — від цього залежить карта регіонів і логіка перемикання між ними.
  • Сценарії за подіями: що відбувається при вході в зону, при утриманні та при виході — повідомлення, екран, запис в історію, дія на сервері.
  • Поведінка у фоні та при закритому застосунку: які дозволи запитуємо, що робимо при відмові, як застосунок відновлюється після перезапуску системи.
  • Калібрування точності: потужність сигналу, пороги спрацьовування й гістерезис, щоб зона не «дребезжала» на межі й гість не отримував два повідомлення підряд.
  • Відповідальний за маяки: монтаж, заміна батарей, реєстр ідентифікаторів, хто оновлює конфігурацію при переїзді точки.
  • Зв’язка з обліковою системою й аналітикою: які події логуються, у якому вигляді йдуть на сервер, що бачить замовник у звітах.
  • Критерії приймання: скільки зон перевіряємо, на якій відстані, яка частка коректних спрацювань вважається нормою і за який час надходить реакція.

Опишіть задачу й дайте відповіді на ті пункти, що вже відомі, — повернемося з оцінкою та планом робіт за етапами, з фіксованими критеріями приймання.

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

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

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714