Налаштування push-сповіщень мобільного застосунку 1С-Бітрікс
Мобільний застосунок на платформі 1С-Бітрікс (Bitrix Mobile) має вбудований механізм push-сповіщень, але його потрібно правильно налаштувати: отримати ключі Firebase Cloud Messaging (Android) та APNs (iOS), зареєструвати їх у панелі управління 1С-Бітрікс, налаштувати шаблони сповіщень. Без цього застосунок збирається, але сповіщення не надходять. Крім стандартних сповіщень, потрібні кастомні — наприклад, «Ваше замовлення відправлено» з трекінг-номером, «Зниження ціни на товар з вішліста».
Стандартне налаштування: FCM та APNs
Firebase Cloud Messaging (Android):
- У Firebase Console створюємо проєкт, додаємо Android-застосунок з bundle ID
- Завантажуємо
google-services.json, кладемо в проєкт Bitrix Mobile - Копіюємо Server Key з Firebase Console → Cloud Messaging
У панелі управління 1С-Бітрікс: Налаштування → Налаштування продукту → Мобільні застосунки → Push і Pull — вставляємо Server Key Firebase.
APNs (iOS):
- В Apple Developer: створюємо APNs Key (.p8 файл), запам'ятовуємо Key ID та Team ID
- В 1С-Бітрікс: вставляємо вміст .p8 файлу, Key ID, Team ID, Bundle ID
Після цього стандартні push-сповіщення 1С-Бітрікс (нове замовлення, зміна статусу через стандартні події) почнуть працювати.
Кастомні push-сповіщення через API
Для відправки нестандартних сповіщень (не зі стандартного функціоналу) використовується модуль pull 1С-Бітрікс:
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 оновлює екран замовлення.
Сповіщення про зниження ціни (вішліст)
Тригер — обробник події оновлення ціни в каталозі:
\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 через 1С-Бітрікс — через цикл за користувачами з обмеженням частоти. Важливо: користувачі можуть вимкнути сповіщення певного типу в налаштуваннях застосунку. 1С-Бітрікс зберігає device_token у таблиці b_pull_client, статус дозволів — у b_pull_push_settings.
Обмеження: не більше 1 push певного типу протягом N годин для одного користувача — логіка на PHP, перевірка перед відправкою.
if ($this->canSendPush($userId, 'price_drop', 24)) { // не частіше разу на добу
MobileNotify::send($message);
$this->recordPushSent($userId, 'price_drop');
}
Моніторинг доставки
FCM та APNs повертають статуси доставки. Недоставлені токени (застосунок видалено, пристрій замінено) потрібно деактивувати — інакше таблиця токенів засмічується. 1С-Бітрікс обробляє відповіді FCM автоматично при коректному налаштуванні. Для APNs при використанні кастомної відправки — перевіряйте статус 410 (токен недійсний) та видаляйте токен з b_pull_client.
Склад робіт
- Створення проєктів Firebase та Apple Developer, отримання ключів
- Налаштування FCM та APNs у панелі управління 1С-Бітрікс
- Тестування стандартних сповіщень (замовлення, статуси)
- Розробка кастомних push: зниження ціни, нові акції, нагадування
- Сегментація: відправка за групами користувачів
- Обмеження частоти, деактивація застарілих токенів
Терміни: стандартні сповіщення — 1–2 дні. Кастомні сценарії із сегментацією — 1–2 тижні.







