Как исправить проблему не работающих push-уведомлений в WooCommerce на мобильных устройствах

Диагностика проблемы с push-уведомлениями в WooCommerce на мобильных устройствах

Если push-уведомления, например, о новых заказах или изменениях статуса заказов, не приходят на мобильные устройства, следует проверить несколько ключевых моментов:

  • Корректность настройки сервиса отправки push-уведомлений (OneSignal, Firebase Cloud Messaging и др.).
  • Правильность интеграции push-уведомлений с WooCommerce и WordPress.
  • Отсутствие конфликтов с плагинами кеширования или оптимизации.
  • Разрешения браузера и устройства на получение уведомлений.
  • Ошибки в консоли браузера и серверном логе.

Пошаговое решение проблемы с push-уведомлениями

1. Проверка и настройка Firebase Cloud Messaging (FCM) или другого сервиса

Если вы используете FCM, убедитесь, что:

  • В консоли Firebase создан проект и настроен web push сертификат (ключи VAPID).
  • В вашем WordPress или плагине push-уведомлений внесены корректные ключи и идентификаторы.

Пример правильной инициализации Firebase в вашем JavaScript-файле сервиса:

import { initializeApp } from 'firebase/app';
import { getMessaging, getToken, onMessage } from 'firebase/messaging';

const firebaseConfig = {
  apiKey: 'ВАШ_API_KEY',
  authDomain: 'project-id.firebaseapp.com',
  projectId: 'project-id',
  messagingSenderId: 'ВАШ_SENDER_ID',
  appId: 'ВАШ_APP_ID',
  vapidKey: 'ВАШ_VAPID_KEY'
};

const app = initializeApp(firebaseConfig);
const messaging = getMessaging(app);

getToken(messaging, { vapidKey: firebaseConfig.vapidKey }).then((currentToken) => {
  if (currentToken) {
    console.log('FCM Token:', currentToken);
    // Отправьте токен на сервер для регистрации
  } else {
    console.log('Нет разрешения на получение токенов.');
  }
}).catch((err) => {
  console.error('Ошибка получения токена.', err);
});

2. Интеграция с WooCommerce через хуки

Для отправки push-уведомлений при смене статуса заказа используйте хук woocommerce_order_status_changed:

add_action('woocommerce_order_status_changed', 'send_push_on_order_status_change', 10, 4);
function send_push_on_order_status_change($order_id, $old_status, $new_status, $order) {
    $user_id = $order->get_user_id();
    // Получить FCM токен пользователя из мета или настроек
    $fcm_token = get_user_meta($user_id, 'fcm_token', true);
    if (!$fcm_token) {
        return;
    }
    $title = 'Статус вашего заказа изменён';
    $body = "Заказ #$order_id теперь имеет статус: $new_status";

    // Отправка push через FCM
    $payload = [
        'to' => $fcm_token,
        'notification' => [
            'title' => $title,
            'body' => $body,
            'click_action' => home_url(),
        ]
    ];

    $args = [
        'body' => json_encode($payload),
        'headers' => [
            'Authorization' => 'key=ВАШ_SERVER_KEY',
            'Content-Type' => 'application/json',
        ],
    ];

    wp_remote_post('https://fcm.googleapis.com/fcm/send', $args);
}

3. Проверка разрешений браузера и устройства

На мобильном устройстве откройте сайт в браузере, проверьте, что браузер запрашивает разрешение на получение уведомлений, и что пользователь не заблокировал их вручную. В настройках браузера и ОС проверьте, что уведомления разрешены для вашего сайта.

Как проверить, что push-уведомления работают

  • Откройте консоль браузера на мобильном устройстве (или эмуляторе) и проверьте вывод сообщений об инициализации FCM и получении токена.
  • Отправьте тестовое уведомление через консоль Firebase или с помощью кода.
  • Измените статус заказа в WooCommerce и проверьте, приходит ли уведомление на устройство.
  • Используйте инструменты разработчика и логи на сервере, чтобы убедиться, что запросы к FCM успешно проходят.

Частые ошибки и способы их исправления

  • Отсутствие токена FCM у пользователя: проверьте, что токен сохраняется при первом запросе и есть в метаданных пользователя.
  • Ключи и серверный ключ FCM неверны: перепроверьте в Firebase Console, что вы используете актуальные ключи.
  • Конфликты с кешированием: отключите кеширование для скриптов push-уведомлений и REST API.
  • Браузер блокирует уведомления: очистите настройки разрешений для сайта и дайте разрешение заново.
  • Ошибки в JSON-формате запроса к FCM: используйте json_encode и проверяйте тело запроса.

Практические советы по безопасности и производительности

  • Не храните серверный ключ FCM в открытом доступе, используйте защищенные переменные окружения.
  • Ограничьте частоту отправки уведомлений, чтобы не создавать нагрузку и не раздражать пользователей.
  • Используйте очереди или WP-Cron для отправки уведомлений, если заказов много.
  • Проверяйте и обновляйте зависимости вашего JavaScript SDK Firebase для совместимости с последними версиями браузеров.
  • Минимизируйте размер payload уведомлений, чтобы быстро доставлять сообщения даже при медленном мобильном интернете.

Сравнение вариантов реализации push-уведомлений в WooCommerce

МетодПлагинКодПлюсыМинусы
Готовые плагины (OneSignal, PushEngage)ДаНетПростота настройки, готовые UI, поддержкаЗависимость от сторонних сервисов, лимиты
Собственная интеграция с FCM через кодНетДаМаксимальный контроль, отсутствие сторонних ограниченийТребует навыков, больше поддержки
Использование REST API WooCommerce + внешних сервисовЧастичноДаГибкость, масштабируемостьСложность реализации
Как добавить поддержку видеовстреч в WordPress для мобильных устройств
09.04.2026
Как удалить или отключить PHP функции в WordPress без изменения кода темы
23.01.2026
Как отладить проблемы с отправкой форм на мобильных устройствах в WordPress
31.05.2026
Как сделать мобильный раздел в WordPress с использованием шорткода и AJAX
21.02.2026
Как использовать AMP в WordPress для ускорения мобильных страниц
05.12.2025