Push API

Baseline 2023

Newly available

Since March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

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

Об использовании Push API

Обратите внимание: При использовании PushManager-подписок жизненно важно защищать запросы от CSRF/XSRF-атак в вашем приложении. Подробнее читайте по ссылкам:

Для получения сообщений от сервера у приложения должен быть активированный сервис-воркер. После активации у сервис-воркера появится возможность подписаться на канал для получения сообщений, используя PushManager.subscribe().

В результате подписки будет получен объект PushSubscription (en-US) со всей необходимой информацией, которая может потребоваться приложению для обращения за сообщениями на сервер: URL-адрес и ключ шифрования.

После подписки сервис-воркеру можно добавить обработчик ServiceWorkerGlobalScope.onpush для получения сообщений от сервера. В качестве реакции на сообщение можно, например, обращаться к серверу за данными и показывать пользователю уведомление с помощью метода ServiceWorkerRegistration.showNotification().

Для сервис-воркера каждая подписка уникальна, а её URL-адрес — уникальная специальная ссылка. Поскольку это всё, что нужно для обращения к серверу, данную ссылку нужно держать в секрете, иначе любое другое приложение сможет воспользоваться вашим сервером.

Для получения push-сообщений сервис-воркеру требуются ресурсы, что может влиять, например, на расход батареи. Во всех браузерах эти проблемы решаются по-разному, какого-то единого стандарта на этот счёт нет. Например, браузер Firefox ограничивает количество сообщений, которое можно отправить приложению, однако сообщения с показом уведомления в этот лимит не попадают. В Chrome таких ограничений нет.

Интерфейсы

PushEvent (en-US)

Описывает действие, направленное в глобальную область видимости (en-US) сервис-воркера. Включает информацию, переданную сервером подписчикам (en-US).

PushManager

Предоставляет возможность подписаться на сообщения от сторонних серверов и получить URL-адрес для отправки push-уведомлений.

PushMessageData (en-US)

Содержит данные, отправленные сервером, и методы для управления ими.

PushSubscription (en-US)

Предоставляет возможность получить URL-адрес подписки, а также содержит метод для отписки.

PushSubscriptionOptions (en-US)

Описывает параметры конкретной подписки.

Методы сервис-воркера для работы c Push API

Спецификация Push API расширяет возможности сервис-воркеров для работы с push-сообщениями: позволяет отслеживать и реагировать на такие сообщения, а также следить за изменениями в подписках.

ServiceWorkerRegistration.pushManager Только для чтения

Позволяет обратиться к интерфейсу по управлению подписками PushManager, в том числе для добавления подписки, получения информации о текущей подписке, а также позволяет узнать о возможности отправки сообщений. Работа с push-сообщениями начинается с этого свойства сервис-воркера.

ServiceWorkerGlobalScope.onpush

Обработчик событий, срабатывает всякий раз, когда происходит событие push; то есть при получении push-сообщений от сервера.

ServiceWorkerGlobalScope.onpushsubscriptionchange

Обработчик событий, срабатывает всякий раз, когда происходит событие pushsubscriptionchange; будет полезен в ситуациях, когда подписка была просрочена или вот-вот будет просрочена (при условии, что для подписки был указан срок действия).

Примеры

На сайте-инструкции по работе с сервис-воркерами от Mozilla вы найдёте множество примеров использования Push API.

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

Спецификация
Push API

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

api.PushEvent

BCD tables only load in the browser

api.PushMessageData

BCD tables only load in the browser

Смотрите также