Налаштування geofencing-повідомлень для 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування geofencing-повідомлень для 1С-Бітрікс
Проста
~1 робочий день
Часті питання

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

Етапи розробки

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

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування геофенсинг-повідомлень для 1С-Bitrix

Геофенсинг — спусковий механізм, що спрацьовує при входженні користувача у задану географічну зону або виході з неї. У контексті Bitrix це чаще за все push-повідомлення мобільного додатку: «Ви рядом з нашим магазином — сьогодні знижка 10%».

З чого складається рішення

Геофенсинг не реалізується силами лише серверної частини Bitrix. Потрібні три компоненти:

  1. Мобільний додаток (iOS/Android) з фоновим моніторингом геолокації — реєструє зони і надсилає події на сервер
  2. Серверний API на Bitrix — приймає події входу/виходу, приймає рішення про надсилання сповіщення
  3. Push-інфраструктура — Firebase Cloud Messaging (FCM) для Android, APNs для iOS

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

Реєстрація геозон на стороні додатку

Нативні SDK обох платформ підтримують геофенсинг:

  • Android: com.google.android.gms.location.GeofencingClient
  • iOS: CLLocationManager з методом startMonitoring(for: CLCircularRegion)

Додаток завантажує список зон при старті з сервера Bitrix і реєструє їх у системі. При входженні/виході ОС генерує подію — додаток надсилає POST-запит на ваш API.

API на стороні Bitrix

Створюєте REST-еындпоінт /local/ajax/geofence-event.php:

<?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: логуєте отримані сповіщення у таблицю, і повторно не надсилаєте, якщо з попереднього сповіщення по цій зоні пройшло менше N годин.

Етап Час
Проектування структури зон і API 3–4 ч
Розробка серверного API 6–10 ч
Настройка FCM / APNs 2–3 ч
Інтеграція у мобільний додаток 8–16 ч
Логіка cooldown та антиспама 2–4 ч