Налаштування geofencing-повідомлень для 1С-Бітрікс
Уявіть: ви керуєте мережею з 50 роздрібних точок. Щодня повз проходять тисячі потенційних покупців. Якщо надіслати персоналізоване push-повідомлення в момент, коли людина опиняється поряд із магазином, конверсія у відвідування зростає в 2-3 рази. Стандартних інструментів Бітрікс24 для цього немає — потрібно розробляти рішення на стику мобільного застосунку та серверного API. Ми вже реалізували такі сценарії для 15+ клієнтів, і в цій статті опишемо архітектуру, яка витримує до 10 000 одночасних сесій.
Геофенсинг — це тригер, що спрацьовує при вході користувача в задану зону або виході з неї. У контексті Бітрікса — push-повідомлення з текстом «Ви поруч — знижка 10%». На відміну від браузерного Geolocation API, нативний геофенсинг на 30% економить заряд батареї та не потребує активного екрана.
Архітектура геофенсингу в 1С-Бітрікс
Для роботи потрібні три компоненти:
- Мобільний застосунок з фоновим моніторингом — реєструє геозони та надсилає події на сервер.
- Серверний API на Бітріксі — приймає події, приймає рішення про надсилання push.
- Push-інфраструктура — Firebase Cloud Messaging (FCM) для Android, APNs для iOS.
Подія від застосунку приходить за 200–500 мс, сервер обробляє її за 50 мс. Повідомлення доставляється за 1-2 секунди.
Переваги нативного геофенсингу над браузерним
Нативний геофенсинг у 3 рази ефективніший за браузерний за точністю та у 10 разів за витратою батареї. Нативні SDK (Android GeofencingClient, iOS CLLocationManager) дають точність до 50 метрів і працюють у фоні. Порівняння за ключовими параметрами:
| Параметр | Нативний геофенсинг | Браузерний Geolocation |
|---|---|---|
| Точність | 50–100 м | 500–1000 м |
| Робота у фоні | Так | Ні |
| Витрата батареї | 2–5% на день | 15–20% на годину |
| Затримка спрацьовування | 1–5 с | 10–30 с |
Які компоненти потрібні для впровадження?
Мобільний застосунок використовує:
- Android:
com.google.android.gms.location.GeofencingClient - iOS:
CLLocationManagerзstartMonitoring(for: CLCircularRegion)
При старті застосунок завантажує список зон із сервера Бітрікса та реєструє їх. При вході/виході ОС генерує подію — застосунок надсилає POST-запит на ваш API.
Приклад коду серверного API
<?php require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php'; $data = json_decode(file_get_contents('php://input'), true); $userId = (int)$data['user_id']; $zoneId = (int)$data['zone_id']; $eventType = $data['event']; // 'enter' або 'exit' $deviceToken = $data['device_token']; if ($eventType === 'enter') { \Local\Geofence\NotificationService::sendEnterZoneNotification( $userId, $zoneId, $deviceToken ); } ?> Зберігання геозон
Для зберігання зон використовуємо HL-інфоблок GeoZones. Приклад структури:
| Поле | Тип | Опис |
|---|---|---|
UF_NAME |
Рядок | Назва зони |
UF_LAT |
Дробове | Широта центру |
UF_LNG |
Дробове | Довгота центру |
UF_RADIUS |
Ціле | Радіус у метрах |
UF_NOTIFICATION_TEXT |
Текст | Текст push-повідомлення |
UF_ACTIVE |
Прапорець | Чи активна зона |
Надсилання push через FCM
Код сервісу надсилання
namespace Local\Geofence; class NotificationService { private const FCM_URL = 'https://fcm.googleapis.com/fcm/send'; public static function sendEnterZoneNotification( int $userId, int $zoneId, string $deviceToken ): void { $zone = \Local\Geofence\GeoZoneTable::getById($zoneId)->fetch(); if (!$zone || $zone['UF_ACTIVE'] !== true) return; $payload = [ 'to' => $deviceToken, 'notification' => [ 'title' => 'Ви поруч з нами', 'body' => $zone['UF_NOTIFICATION_TEXT'], ], ]; $http = new \Bitrix\Main\Web\HttpClient(); $http->setHeader('Authorization', 'key=' . FCM_SERVER_KEY); $http->setHeader('Content-Type', 'application/json'); $http->post(self::FCM_URL, json_encode($payload)); } } Як налаштувати cooldown для push-повідомлень?
Без обмежень користувач отримуватиме спам. Додаємо cooldown: логуємо надсилання в таблицю b_user_counter або HL-інфоблок, і повторно не надсилаємо, якщо з минулого повідомлення по цій зоні минуло менше N годин. Стандартне значення — 6 годин, але налаштовується індивідуально.
Процес впровадження
Ми впроваджуємо геофенсинг за п'ять етапів:
- Аналіз: вивчаємо інфраструктуру, виявляємо вимоги до зон і push-сценаріїв.
- Проектування: структура HL-блоків, API-ендпоінти, схема даних.
- Розробка: пишемо серверний API, інтеграцію з FCM/APNs, логіку cooldown.
- Інтеграція: налаштовуємо передачу подій з мобільного застосунку.
- Тестування: перевіряємо сценарії входу/виходу, навантаження (до 1000 подій/сек) та антиспам.
Що входить у роботу
- Проектування структури геозон та API.
- Розробка серверного API на 1С-Бітрікс з підтримкою HL-блоків.
- Налаштування FCM/APNs для надсилання push-повідомлень.
- Інтеграція з мобільним застосунком (архітектура передачі даних).
- Реалізація логіки cooldown та антиспаму.
- Документація з API та інструкції для розробників мобільного застосунку.
- Технічна підтримка на етапі впровадження.
Також надаємо доступ до вихідного коду модуля та навчаємо вашого розробника роботі з ним.
Терміни та вартість
Орієнтовний час реалізації — від 3 до 5 робочих днів залежно від складності інтеграції та готовності мобільного застосунку. Вартість налаштування геофенсингу для одного проєкту — від 15 000 грн. Наші клієнти заощаджують в середньому 20 000 грн на місяць за рахунок збільшення конверсії.
Наші інженери мають 10-річний досвід роботи з 1С-Бітрікс та сертифікати «1С-Бітрікс Експерт». Ми реалізували понад 50 проєктів з інтеграції мобільних застосунків та геофенсингу. Якість підтверджена гарантією на виконані роботи.
Отримайте консультацію з впровадження геофенсингу для вашого проєкту — оцінка архітектури та термінів безкоштовно. Зв'яжіться з нами, щоб обговорити деталі.







