Настройка push-уведомлений мобильного приложения 1С-Битрикс
Мобильное приложение на платформе 1С-Битрикс (Bitrix Mobile) имеет встроенный механизм push-уведомлений, но его нужно правильно настроить: получить ключи Firebase Cloud Messaging (Android) и APNs (iOS), зарегистрировать их в панели управления Битрикс, настроить шаблоны уведомлений. Без этого приложение собирается, но уведомления не приходят. Кроме стандартных уведомлений, нужны кастомные — например, «Ваш заказ отправлен» с трекинг-номером, «Снижение цены на товар из вишлиста».
Стандартная настройка: FCM и APNs
Firebase Cloud Messaging (Android):
- В Firebase Console создаём проект, добавляем Android-приложение с bundle ID
- Скачиваем
google-services.json, кладём в проект Bitrix Mobile - Копируем Server Key из Firebase Console → Cloud Messaging
В панели управления Битрикс: Настройки → Настройки продукта → Мобильные приложения → Push и Pull — вставляем Server Key Firebase.
APNs (iOS):
- В Apple Developer: создаём APNs Key (.p8 файл), запоминаем Key ID и Team ID
- В Битрикс: вставляем содержимое .p8 файла, Key ID, Team ID, Bundle ID
После этого стандартные push-уведомления Битрикс (новый заказ, смена статуса через стандартные события) начнут работать.
Кастомные push-уведомления через API
Для отправки нестандартных уведомлений (не из стандартного функционала) используется модуль pull Битрикс:
use Bitrix\Pull\MobileNotify;
// Уведомление о статусе заказа
public function sendOrderStatusPush(int $userId, array $order): void
{
if (!\Bitrix\Main\Loader::includeModule('pull')) return;
$message = [
'module_id' => 'local.shop',
'command' => 'orderStatusChanged',
'expiry' => 3600, // секунды
'user_list' => [$userId],
'message' => "Заказ #{$order['ID']}: статус изменён на «{$order['STATUS']}»",
'params' => [
'orderId' => $order['ID'],
'status' => $order['STATUS'],
'trackCode' => $order['TRACK_CODE'] ?? '',
],
'push' => [
'sound' => 'default',
'badge' => 1,
],
];
MobileNotify::send($message);
}
В мобильном приложении (если кастомное на React Native) — обработчик события module.local.shop.orderStatusChanged обновляет экран заказа.
Уведомления о снижении цены (wishlist)
Триггер — обработчик события обновления цены в каталоге:
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'catalog', 'OnPriceUpdate',
function (\Bitrix\Main\Event $event) {
$priceData = $event->getParameter('fields');
$productId = $priceData['PRODUCT_ID'];
$newPrice = $priceData['PRICE'];
// Находим пользователей, у которых товар в вишлисте
$wishlistUsers = WishlistTable::getUsersByProduct($productId);
foreach ($wishlistUsers as $userId) {
$oldPrice = $this->getLastNotifiedPrice($userId, $productId);
if ($newPrice < $oldPrice * 0.95) { // скидка более 5%
$this->sendPricePush($userId, $productId, $oldPrice, $newPrice);
}
}
}
);
Сегментация и ограничение частоты
Массовая рассылка push через Битрикс — через цикл по пользователям с ограничением частоты. Важно: пользователи могут отключить уведомления определённого типа в настройках приложения. Битрикс хранит device_token в таблице b_pull_client, статус разрешений — в b_pull_push_settings.
Ограничение: не более 1 push определённого типа в течение N часов для одного пользователя — логика на PHP, check перед отправкой.
if ($this->canSendPush($userId, 'price_drop', 24)) { // не чаще раза в сутки
MobileNotify::send($message);
$this->recordPushSent($userId, 'price_drop');
}
Мониторинг доставки
FCM и APNs возвращают статусы доставки. Недоставленные токены (приложение удалено, устройство заменено) нужно деактивировать — иначе таблица токенов засоряется. Битрикс обрабатывает ответы FCM автоматически при корректной настройке. Для APNs при использовании кастомной отправки — проверяйте статус 410 (токен недействителен) и удаляйте токен из b_pull_client.
Состав работ
- Создание проектов Firebase и Apple Developer, получение ключей
- Настройка FCM и APNs в панели управления Битрикс
- Тестирование стандартных уведомлений (заказы, статусы)
- Разработка кастомных push: снижение цены, новые акции, напоминания
- Сегментация: отправка по группам пользователей
- Ограничение частоты, деактивация устаревших токенов
Сроки: стандартные уведомления — 1–2 дня. Кастомные сценарии с сегментацией — 1–2 недели.







