Настройка геозависимых push-уведомлений в 1С-Битрикс

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

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

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    947
  • 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
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    830
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    732
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1075

Представьте: у вас интернет-магазин на 1С-Битрикс с мобильным приложением. Клиент подходит к вашему физическому магазину — вы хотите отправить ему персональное предложение с геозависимым push. Без геофенсинга это невозможно. Мы решаем эту задачу под ключ: от хранения токенов до интеграции с FCM и обработки ошибок. Бюджет такой интеграции — от 40 000 ₽, но экономия на маркетинговых рассылках окупает её за 2–3 месяца. Свяжитесь с нами — оценим ваш проект бесплатно.

Как серверная часть обрабатывает геозону?

Геозонное событие приходит с мобильного приложения. На сервере мы принимаем событие, идентифицируем пользователя и ищем все его активные токены в HL-инфоблоке DeviceTokens. Для каждого токена формируем push через FCM HTTP v1 API. Этот API в три раза надёжнее Legacy API и поддерживает OAuth2.

Какой стек доставки push мы используем?

Для мобильных push-уведомлений работают два канала:

  • FCM (Firebase Cloud Messaging) — Android и iOS (через Firebase APNs proxy)
  • APNs (Apple Push Notification service) — iOS напрямую

Для веб-сайта без мобильного приложения существуют Web Push (стандарт W3C), но они требуют открытого браузера или поддержки Service Worker и не работают в iOS Safari до iOS 16.4.

Битрикс имеет встроенный модуль push.sender — но он предназначен для Битрикс24 и Push & Pull сервера. Для кастомных push в мобильном приложении используем FCM напрямую из PHP.

Регистрация и хранение токенов устройств

Перед отправкой push нужно получить device token пользователя. Приложение при первом запуске запрашивает разрешение и получает токен от FCM/APNs, затем отправляет его на сервер.

Эндпоинт для регистрации токена (/local/ajax/register-token.php):

$userId      = $USER->GetID();
$deviceToken = $data['token'];
$platform    = $data['platform']; // 'android' или 'ios'

// Сохраняем в HL-инфоблок DeviceTokens
\Local\Push\DeviceTokenTable::add([
    'UF_USER_ID'  => $userId,
    'UF_TOKEN'    => $deviceToken,
    'UF_PLATFORM' => $platform,
    'UF_UPDATED'  => new \Bitrix\Main\Type\DateTime(),
]);

Один пользователь может иметь несколько токенов (телефон + планшет). Токены устаревают — FCM возвращает ошибку NotRegistered, по которой нужно удалять токен из базы. Согласно документации FCM, HTTP v1 API рекомендован для новых проектов.

Почему важно правильно хранить токены?

Неправильное хранение приводит к отправке на неактивные устройства, росту числа ошибок и блокировке от FCM. Мы ведём историю обновлений, удаляем токены после ошибки и поддерживаем актуальность.

Триггер по геозоне

Геозонное событие приходит с мобильного приложения (логику нативного геофенсинга см. в статье про geofencing-уведомления). Серверная часть получает событие и ищет все активные токены пользователя:

$tokens = \Local\Push\DeviceTokenTable::getList([
    'filter' => ['=UF_USER_ID' => $userId, '=UF_ACTIVE' => true],
    'select' => ['UF_TOKEN', 'UF_PLATFORM'],
])->fetchAll();

foreach ($tokens as $token) {
    \Local\Push\Sender::send(
        $token['UF_TOKEN'],
        $token['UF_PLATFORM'],
        $zone['UF_PUSH_TITLE'],
        $zone['UF_PUSH_BODY'],
        ['zone_id' => $zoneId, 'action' => 'open_promo']
    );
}

Отправка через FCM HTTP v1 API

Google переходит с legacy FCM API на HTTP v1 (OAuth2). Пример отправки одного push:

namespace Local\Push;

class Sender {
    public static function send(
        string $token,
        string $platform,
        string $title,
        string $body,
        array $data = []
    ): bool {
        $accessToken = self::getOAuthToken(); // OAuth2 через Service Account JSON

        $message = [
            'message' => [
                'token' => $token,
                'notification' => [
                    'title' => $title,
                    'body'  => $body,
                ],
                'data' => array_map('strval', $data),
            ],
        ];

        $http = new \Bitrix\Main\Web\HttpClient();
        $http->setHeader('Authorization', 'Bearer ' . $accessToken);
        $http->setHeader('Content-Type', 'application/json');
        $response = $http->post(
            'https://fcm.googleapis.com/v1/projects/' . FCM_PROJECT_ID . '/messages:send',
            json_encode($message)
        );

        $result = json_decode($response, true);
        return isset($result['name']); // name присутствует при успехе
    }
}

Для getOAuthToken() используется Google Client Library или собственная реализация JWT-подписи с Service Account.

Кастомный звук и иконка

Для Android-уведомлений можно задать канал уведомлений (Notification Channel), звук и иконку через секцию android в payload FCM. Для iOS — через секцию apns. Эти параметры задаются при разработке мобильного приложения, серверная часть только передаёт значения.

Мониторинг доставки

FCM HTTP v1 возвращает результат немедленно, но это лишь подтверждение принятия на обработку, не факт доставки. Для отслеживания открытий уведомлений нужна аналитика на стороне приложения (Firebase Analytics или собственный эндпоинт).

Как настроить geofence push: пошаговая инструкция

  1. Создайте HL-инфоблок DeviceTokens с полями: UF_USER_ID (int), UF_TOKEN (string), UF_PLATFORM (string), UF_ACTIVE (bool), UF_UPDATED (datetime).
  2. Реализуйте эндпоинт для регистрации токенов: принимает POST-запрос с token и platform, сохраняет запись.
  3. Напишите обработчик входа в геозону: при событии от приложения получаете userId, находите все активные токены.
  4. Для каждого токена вызывайте Sender::send() с заголовком и телом уведомления.
  5. Внедрите cooldown: перед отправкой проверяйте, когда было отправлено последнее уведомление для этой пары пользователь+зона.
Пример реализации cooldown
$lastSent = \Local\Push\SentHistoryTable::getRow([
    'filter' => ['=UF_USER_ID' => $userId, '=UF_ZONE_ID' => $zoneId],
    'select' => ['UF_SENT_AT'],
]);
if ($lastSent && (time() - $lastSent['UF_SENT_AT']->getTimestamp()) < 600) {
    return; // не отправляем чаще 10 минут
}

Что входит в работу

  • Настройка HL-блоков для хранения токенов и истории геозон
  • Эндпоинт регистрации токенов
  • Интеграция FCM HTTP v1 с OAuth2
  • Обработчик геозонных событий
  • Дедупликация и cooldown-логика
  • Тестирование на реальных устройствах
  • Документация по API и настройке

Процесс работы

Этап Описание Срок
Аналитика Сбор требований, согласование схемы геозон 1 день
Проектирование Проектирование HL-блоков и API 1 день
Разработка Написание кода, интеграция с FCM 2-3 дня
Тестирование Проверка на Android и iOS 1-2 дня
Деплой Развертывание на сервере, мониторинг 1 день
Компонент Время
Хранилище токенов (HL-инфоблок + API) 3–4 ч
Интеграция FCM HTTP v1 4–6 ч
Обработчик геозонных событий 2–3 ч
Логика дедупликации / cooldown 2–3 ч
Тестирование на реальных устройствах 3–5 ч

Сроки и стоимость

Базовая настройка занимает от 2 до 5 дней в зависимости от сложности. Стоимость рассчитывается индивидуально после оценки проекта. Мы гарантируем стабильную работу и поддержку после внедрения. Закажите консультацию — оценим ваш проект бесплатно.

Что включает профессиональная установка 1С-Битрикс

Мы начинаем установку 1С-Битрикс с проверки innodb_buffer_pool_size. Дефолтное значение MySQL (128 МБ) — приговор для интернет-магазина с каталогом на 10 000+ товаров. Мы ставим 70–80% от доступной RAM на выделенном сервере, 50% на VPS. Одна эта настройка ускоряет сайт в 2–3 раза по сравнению с дефолтом. Оценим ваш проект за один день — получите консультацию. Обращайтесь, чтобы заказать установку под ключ с гарантией производительности.

Как выбрать хостинг и редакцию для установки 1С-Битрикс?

BitrixVM — виртуальная машина с предустановленным стеком: nginx + Apache, PHP-FPM, MySQL/MariaDB, Sphinx, Push‑сервер. Для VPS — лучший старт. Всё уже сконфигурировано под Битрикс, включая OPcache, логротацию и firewall. Управление через веб‑панель на порту 8890.

VPS/VDS — золотая середина. Минимальная конфигурация для среднего интернет‑магазина: 2 vCPU, 4 ГБ RAM, SSD. Оптимальная: 4 vCPU, 8 ГБ RAM. ОС: Ubuntu 22.04 или Debian 12. Если не BitrixVM — настраиваем стек вручную под задачу. Виртуальный хостинг — только для визиток и лендингов. Требования: PHP 8.0+, MySQL 5.7+ / MariaDB 10.0+, 512 МБ RAM, .htaccess. Хостинг‑партнёры 1С-Битрикс — гарантия совместимости. Выделенный сервер — для highload. Типичная архитектура: веб‑сервер отдельно, база данных отдельно, Redis/Memcached отдельно. На редакции «Энтерпрайз» — веб‑кластер с балансировщиком. Облако (Yandex Cloud, VK Cloud, Selectel) — когда нагрузка скачет: распродажи, сезонные пики. Автомасштабирование через Managed Kubernetes или просто вертикальное масштабирование VM.

Выбор редакции — не менее важный шаг. Частая ошибка: берут «Малый бизнес» для магазина, который через полгода вырастает до B2B с оптовыми ценами и тремя складами. Переход на «Бизнес» — доплата разницы, данные не теряются, но лучше предусмотреть заранее. Наши специалисты подберут редакцию под текущие задачи и с запасом на рост. Например, лицензия «Бизнес» (около 35 000 ₽) окупается за счёт мультисклада и обмена с 1С, а неправильный выбор приводит к потере до 30 000 ₽ ежемесячно на избыточных ресурсах.

Редакция Для кого Ключевое ограничение
Старт Визитки, лендинги Нет инфоблоков 2.0, нет торгового каталога
Стандарт Корпоративные сайты Нет e‑commerce модуля
Малый бизнес Маленькие магазины 1 тип цены, 1 склад, нет обмена с 1С
Бизнес Средние магазины, B2B Мультисклад, мультивалюта, CommerceML
Энтерпрайз Highload, кластер Веб‑кластер, CDN, мультисайтовость

Какие настройки сервера критичны для 1С-Битрикс?

Веб‑сервер и PHP

nginx как reverse proxy + Apache (mod_php) или nginx + PHP-FPM напрямую. Второй вариант экономит память — Apache не нужен. Но некоторые модули Битрикс используют .htaccess, поэтому для совместимости иногда оставляем Apache. Конфигурация nginx: fastcgi_read_timeout 300 — для долгих операций (импорт из 1С), client_max_body_size 1024m — загрузка больших файлов. Закрываем доступ к .settings.php, .settings_extra.php, bitrix/.settings.php — там пароли к базе. Rewrite‑правила из urlrewrite.php — Битрикс сам генерирует, но при nginx + PHP-FPM нужно продублировать. PHP 8.0–8.2 с расширениями: mbstring, curl, gd, xml, json, opcache, redis/memcached. Ключевые настройки php.ini: opcache.memory_consumption=256, opcache.max_accelerated_files=20000, max_execution_time=300, memory_limit=512M, upload_max_filesize=100M, post_max_size=128M.

База данных и кэширование

MySQL/MariaDB. Ключевые параметры my.cnf: innodb_buffer_pool_size — 70–80% RAM, innodb_log_file_size=256M, tmp_table_size=256M, max_heap_table_size=256M, thread_pool_size — по количеству ядер CPU. Кодировка utf8mb4 обязательно, иначе эмодзи и спецсимволы ломаются. Redis предпочтительнее Memcached для Битрикс — поддерживает persistent connections и более надёжен. Настраиваем в .settings_extra.php:

'cache' => ['value' => ['type' => ['class_name' => '\\Bitrix\\Main\\Data\\CacheEngineRedis']]]
'session' => ['value' => ['mode' => 'default', 'handlers' => ['general' => ['type' => 'redis']]]]

SSL, почта и cron

SSL — Let's Encrypt через certbot в 90% случаев. Редирект HTTP → HTTPS (301), HSTS, TLS 1.2/1.3, OCSP Stapling. В Битрикс переключаем на HTTPS в настройках главного модуля. Почта: отказываемся от mail() — подключаем SMTP (Яндекс.Почта для домена, Mail.ru для бизнеса). Обязательно настраиваем SPF, DKIM, DMARC. Без SPF письма уходят в спам. Тестируем доставляемость через mail‑tester.com — оценка 9+/10. Cron: агенты Битрикс переводим на системный cron — * * * * * /usr/bin/php /var/www/bitrix/modules/main/tools/cron_events.php. На cron вешаем обмен с 1С (15–60 мин), поисковую переиндексацию, бэкапы (mysqldump + rsync, ротация 7+4), очистку временных файлов.

Безопасность и администрирование

Файловая система: владелец www-data, директории 755, файлы 644, upload 775. nginx блокирует доступ к файлам конфигурации. Включаем Проактивную защиту Битрикс — WAF, контроль активности (блокировка после 5 неудачных попыток), проверку целостности ядра. Для админ‑панели: двухфакторная аутентификация через Google Authenticator или OTP, ограничение доступа по IP через nginx для параноиков.

Сколько времени занимает установка 1С-Битрикс и настройка?

Задача Срок
Установка на виртуальный хостинг 2–4 часа
Установка на VPS с настройкой стека 1–2 дня
Установка на dedicated с проектированием архитектуры 2–5 дней
SSL + почта + cron + безопасность 1–2 дня
Настройка бэкапов и мониторинга 0.5–1 день

Проверка после установки (пошаговый чек‑лист)

  1. Монитор производительности (/bitrix/admin/perfmon_panel.php) — целимся в 30+ баллов. Ниже 20 — есть серьёзные проблемы с конфигурацией.
  2. Проверка системы — автоматическая проверка всех параметров. Красные пункты — исправляем обязательно, жёлтые — по ситуации.
  3. Сканер безопасности — проверка на типичные уязвимости.
  4. PageSpeed Insights — TTFB < 200мс на VPS, LCP < 2.5с.
  5. Тестовый обмен с 1С — если планируется интеграция, проверяем CommerceML‑обмен до запуска.

Дополнительно проверяем версии ПО, настройки кэширования, работу cron, SSL‑сертификат, SPF/DKIM/DMARC, права доступа, удаление дефолтных пользователей и страниц. Для проектов с 54‑ФЗ убеждаемся, что настроена фискализация через ОФД‑провайдера.

Что входит в работу (deliverables)

  • Полностью настроенный сервер под 1С-Битрикс с оптимизацией MySQL, PHP, nginx.
  • Установленная и активированная лицензия нужной редакции.
  • SSL‑сертификат, почтовые настройки, cron и бэкапы.
  • Документация: все параметры конфигурации, доступы, cron‑задачи.
  • Обучение контент‑менеджера: как заходить в админку, добавлять товары, загружать изображения.
  • Поддержка после установки в течение 30 дней — консультации по настройкам.

Почему стоит доверить установку профессионалам?

Неправильная установка — потеря времени и денег. Мы видели проекты, где магазин на «Старте» не мог выдержать 50 посетителей, потому что не был настроен innodb_buffer_pool_size. После переноса на VPS с правильной конфигурацией сайт «полетел». Неправильная конфигурация может обходиться в 30 000 ₽ ежемесячно из‑за избыточного потребления ресурсов. Вы получаете готовую архитектуру, которая масштабируется. Закажите установку 1С-Битрикс под ключ — и получите надёжную платформу для роста бизнеса. Свяжитесь с нами — рассчитаем стоимость под ваш проект. Опыт более 7 лет, реализовано 120+ проектов на Битрикс, включая highload‑магазины с миллионными каталогами. Обращайтесь — мы поможем настроить Битрикс под ваш проект.