Push API

Experimental

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

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

Примечание: Эта документация охватывает спецификацию W3C Push API ; если вы ищете документацию по запатентованной технологии Firefox OS , смотрите здесь.

Общие сведения об использовании push уведомлений

При внедрении подписки PushManager, жизненно важно защищать запросы от CSRF/XSRF атак в вашем приложении.

Дополнительную информацию см. В следующих статьях:

Для получения push уведомлений приложение должно иметь активный service worker. Когда service worker активен, оно может подписаться на push уведомления используя PushManager.subscribe().

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

Service worker будет запущен для того чтобы обрабатывать входящие push сообщения, которые будут доставлены в ServiceWorkerGlobalScope.onpush (en-US) обработчик события. Это позволит приложению реагировать на push сообщения, к примеру показывать нотификации через метод ServiceWorkerRegistration.showNotification().

Каждая подписка уникальна по отношению к service worker. Адрес для подписки это уникальный capability URL: всё что нужно чтобы отослать сообщение вашему приложению это адрес. Однако это URL необходимо держать в секрете, иначе любое другое приложение сможет слать push уведомление к вашему приложению.

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

Примечание: Начиная с Gecko 44, разрешённая квота push-уведомлений для каждого приложения не увеличивается, в случае если новое уведомление срабатывает когда другое все ещё должна отображаться в течение трёх секунд. Это обрабатывает случаи, когда получены несколько Push уведомлений подряд и не все генерируют видимое уведомление.

Примечание: Так же Chrome обязывает регистрировать проект в Google Cloud Messaging для отправки push сообщений, а также использовать присвоенный номер проекта и API ключ когда отправляются push уведомления. К тому же требуется наличие манифеста приложения с некоторыми параметрами для использования этого сервиса. Возможно эти ограничения будут убраны в будущем.

Интерфейсы

PushEvent (en-US)
Представляет собой push действие отправленное в global scope ServiceWorker-а. Содержит информацию отправленную в PushSubscription (en-US).
PushManager
Предоставляет способ для получения уведомлений из сторонних серверов, а также из URL запросов для push уведомлений. Этот интерфейс заменил устаревшую функциональность интерфейса PushRegistrationManager (en-US).
PushMessageData (en-US)
Предоставляет доступ к push данным отправленным сервером и включает методы для манипулирования полученными данными.
PushSubscription (en-US)
Предоставляет конечную точку URL подписки и позволяет отписаться от push сервиса.

Служебный работник дополнения

Следующие дополнения к Service Worker API описанные в спецификации Push API, представляют собой первостепенные действия для использования Push сообщений, а также для обработки push событий.

ServiceWorkerRegistration.pushManager Только для чтения
Возвращает ссылку на интерфейс PushManager для манипулирования push подписок включая подписывание, получение активной подписки и доступ к статусу push разрешения. Это входная точка к обмену push сообщениями.
ServiceWorkerGlobalScope.onpush (en-US)
Данный обработчик событий вызывается всякий раз когда происходит событие push; то есть всегда когда принимается push сообщение сервера.
ServiceWorkerGlobalScope.onpushsubscriptionchange (en-US)
Данный обработчик событий вызывается всякий раз когда происходит событие pushsubscriptionchange; например, когда push подписка стала недействительной или собирается быть недействительной (к примеру, когда push сервис устанавливает время истечения.)

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

Спецификация Статус Комментарий
Push API Рабочий черновик Initial definition

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

PushEvent

BCD tables only load in the browser

PushMessageData

BCD tables only load in the browser

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