Настройка geofencing-уведомлений для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка geofencing-уведомлений для 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка geofencing-уведомлений для 1С-Битрикс

Геофенсинг — триггер, срабатывающий при входе пользователя в заданную географическую зону или выходе из неё. В контексте Битрикса это чаще всего push-уведомление мобильного приложения: «Вы рядом с нашим магазином — сегодня скидка 10%».

Из чего состоит решение

Геофенсинг не реализуется силами только серверной части Битрикса. Нужны три компонента:

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

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

Регистрация геозон на стороне приложения

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

  • Android: com.google.android.gms.location.GeofencingClient (Geofencing API Google Play Services)
  • iOS: CLLocationManager с методом startMonitoring(for: CLCircularRegion)

Приложение загружает список зон при старте с сервера Битрикса и регистрирует их в системе. При входе/выходе ОС генерирует событие — приложение отправляет POST-запрос на ваш API.

API на стороне Битрикса

Создаёте 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: логируете отправленные уведомления в таблицу b_user_counter или HL-инфоблок, и повторно не отправляете, если с прошлого уведомления по этой зоне прошло менее N часов.

Этап Время
Проектирование структуры зон и API 3–4 ч
Разработка серверного API 6–10 ч
Настройка FCM / APNs 2–3 ч
Интеграция в мобильное приложение 8–16 ч
Логика cooldown и антиспама 2–4 ч