API уведомлений
Примечание: Эта функция доступна в Web Workers.
API уведомлений предоставляет веб-приложениям возможность получать сообщения, отправленные сервером, независимо от того, находится ли веб-приложение в фоновом режиме или загружено на устройстве пользователя. Это позволяет разработчикам отправлять асинхронные уведомления и обновления пользователям, которые на это подписались, что способствует лучшему вовлечению и своевременному получению нового контента.
Концепции и использование API уведомлений
Предупреждение: При реализации подписок PushManager крайне важно защитить ваше приложение от проблем CSRF/XSRF. Дополнительную информацию можно найти в следующих статьях:
Для получения push-сообщений приложение должно иметь активный сервис-воркер. Когда сервис-воркер активен, он может подписаться на push-уведомления, используя PushManager.subscribe().
Полученная PushSubscription содержит всю необходимую для отправки push-сообщения информацию: конечную точку и ключ шифрования для отправки данных.
Сервис-воркер будет запускаться по мере необходимости для обработки входящих push-сообщений, которые доставляются обработчику события onpush. Это позволяет приложениям реагировать на полученные push-сообщения, например, отображая уведомление (используя ServiceWorkerRegistration.showNotification()).
Каждая подписка уникальна для сервис-воркера. Конечная точка подписки — уникальный URL-адрес ресурса: для отправки сообщения вашему приложению достаточно знать конечную точку. Поэтому URL конечной точки необходимо хранить в секрете, чтобы другие приложения не могли отправлять push-сообщения вашему приложению.
Активация сервис-воркера для доставки push-сообщения может привести к увеличению использования ресурсов, особенно батареи. Разные браузеры используют разные схемы для обработки этого, и в настоящее время нет стандартного механизма. Firefox позволяет отправлять ограниченное количество (квота) push-сообщений в приложение, хотя push-сообщения, генерирующие уведомления, не входят в это ограничение. Лимит обновляется каждый раз при посещении сайта. В Chrome ограничений нет.
Интерфейсы
PushEvent-
Представляет действие push, отправленное в глобальное пространство имен сервис-воркера. Содержит информацию, отправленную приложением в
PushSubscription. PushManager-
Предоставляет способ получения уведомлений от сторонних серверов, а также запрос URL для push-уведомлений.
PushMessageData-
Обеспечивает доступ к данным push, отправленным сервером, и включает методы для обработки полученных данных.
PushSubscription-
Предоставляет URL конечной точки подписки и позволяет отказаться от подписки на push-сервис.
PushSubscriptionOptions-
Представляет параметры, связанные с подпиской на push-уведомления.
Дополнительные возможности сервис-воркера
Следующие дополнения к API сервис-воркера определены в спецификации API уведомлений, чтобы обеспечить точку входа для использования push-сообщений. Они также отслеживают и реагируют на события изменения push и подписок.
-
ServiceWorkerRegistration.pushManagerТолько для чтения -
Возвращает ссылку на интерфейс
PushManagerдля управления подписками на push-уведомления, включая подписку, получение активной подписки и доступ к статусу разрешения push. Это точка входа для использования push-сообщений. onpush-
Обработчик событий, срабатывающий всякий раз, когда происходит событие
push, то есть всякий раз, когда получено push-сообщение с сервера. onpushsubscriptionchange-
Обработчик событий, срабатывающий всякий раз, когда происходит событие
pushsubscriptionchange, например, когда подписка на push-уведомления была аннулирована или собирается быть аннулирована (например, когда push-сервис устанавливает срок действия).
Примеры
В сборнике рецептов сервис-воркеров Mozilla есть много полезных примеров использования API уведомлений.
Спецификации
Совместимость с браузерами
| Десктопные | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
Push_API |
50 | 17 | 44 | 37 | 16Уведомления поддерживаются на macOS Ventura и новее. |
50 | 48 | 37 | 16.4Уведомления поддерживаются в веб-приложениях, сохранённых на главном экране. |
5.0 | Нет |
arrayBuffer |
50 | 17 | 44 | 37 | 16Уведомления поддерживаются на macOS Ventura и новее. |
50 | 48 | 37 | 16.4Уведомления поддерживаются в веб-приложениях, сохранённых на главном экране. |
5.0 | Нет |
blob |
50 | 17 | 44 | 37 | 16Уведомления поддерживаются на macOS Ventura и новее. |
50 | 48 | 37 | 16.4Уведомления поддерживаются в веб-приложениях, сохранённых на главном экране. |
5.0 | Нет |
bytes |
132 | 132 | 128 | 117 | 18 | 132 | 128 | Нет | 18 | Нет | Нет |
json |
50 | 17 | 44 | 37 | 16Уведомления поддерживаются на macOS Ventura и новее. |
50 | 48 | 37 | 16.4Уведомления поддерживаются в веб-приложениях, сохранённых на главном экране. |
5.0 | Нет |
text |
50 | 17 | 44 | 37 | 16Уведомления поддерживаются на macOS Ventura и новее. |
50 | 48 | 37 | 16.4Уведомления поддерживаются в веб-приложениях, сохранённых на главном экране. |
5.0 | Нет |
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
PushEvent |
42 | 17 | 44 | 37 | 16Уведомления поддерживаются в macOS Ventura и новее. |
42 | 48 | 37 | 16.4Уведомления поддерживаются в веб-приложениях, сохранённых на главном экране. |
4.0 | Нет |
Push_API |
42 | 17 | 44 | 37 | 16Уведомления поддерживаются в macOS Ventura и новее. |
42 | 48 | 37 | 16.4Уведомления поддерживаются в веб-приложениях, сохранённых на главном экране. |
4.0 | Нет |
data |
50 | 17 | 44 | 37 | 16Уведомления поддерживаются в macOS Ventura и новее. |
50 | 48 | 37 | 16.4Уведомления поддерживаются в веб-приложениях, сохранённых на главном экране. |
5.0 | Нет |
api.PushEvent
Таблицы BCD загружаются только в браузере
api.PushMessageData
Таблицы BCD загружаются только в браузере
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Push_API