Spec-Zone.ru › Web APIs

API уведомлений

Примечание: Эта функция доступна в Web Workers.

API уведомлений предоставляет веб-приложениям возможность получать сообщения, отправленные сервером, независимо от того, находится ли веб-приложение в фоновом режиме или загружено на устройстве пользователя. Это позволяет разработчикам отправлять асинхронные уведомления и обновления пользователям, которые на это подписались, что способствует лучшему вовлечению и своевременному получению нового контента.

Концепции и использование API уведомлений

Предупреждение: При реализации подписок PushManager крайне важно защитить ваше приложение от проблем CSRF/XSRF. Дополнительную информацию можно найти в следующих статьях:

  • Руководство по предотвращению атак CSRF
  • Предотвращение атак 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 уведомлений.

Спецификации

Спецификация
API уведомлений
# pushevent-interface
API уведомлений
# pushmessagedata-interface

Совместимость с браузерами

Десктопные Мобильные
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 загружаются только в браузере

См. также

  • Отправка уведомлений WebPush с идентификацией VAPID через службу push Mozilla
  • Обзор уведомлений push
  • API сервисных рабочих потоков

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API