Ответ
Для отправки push-уведомлений с веб-сайта на мобильное устройство требуется реализация нескольких ключевых компонентов на стороне клиента (браузера) и сервера.
Клиентская часть (Frontend)
- Service Worker (SW): Фоновый скрипт, который принимает и обрабатывает push-сообщения, даже когда сайт закрыт.
- Push API: Используется для подписки пользователя на уведомления. Требует VAPID-ключей для аутентификации сервера.
- Notification API: Отвечает за отображение самого уведомления на экране устройства.
Пример кода подписки в браузере:
// 1. Регистрируем Service Worker
async function subscribeToPush() {
const registration = await navigator.serviceWorker.register('/sw.js');
// 2. Подписываемся на push-уведомления
const subscription = await registration.pushManager.subscribe({
userVisibleOnly: true, // Все уведомления должны показываться пользователю
applicationServerKey: urlBase64ToUint8Array('YOUR_PUBLIC_VAPID_KEY_HERE')
});
// 3. Отправляем объект подписки на наш сервер для сохранения
await fetch('/api/subscribe', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(subscription)
});
console.log('Подписка успешно оформлена и отправлена на сервер.');
}
Серверная часть (Backend)
- Хранение подписок: Необходима БД для сохранения
subscriptionобъектов от каждого пользователя. - Отправка уведомлений: Использование библиотек (например,
web-pushдля Node.js) для рассылки сообщений по Web Push Protocol. Для этого нужен приватный VAPID-ключ.
Обязательное требование: Протокол HTTPS (за исключением localhost), требуемый для работы Service Worker и Push API.