MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.

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

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

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

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

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

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

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

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

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

Примечание: Так же Chrome обязывает регистрировать проект в Google Cloud Messaging для отправки push сообщений, а также использовать присвоенный номер проекта и API ключ когда отправляются push уведомления. К тому же требуется наличие манифеста приложения с некоторыми It also requires an app manifest with some special parameters to use this service. Возможно эти ограничения будут убраны в будущем.

Интерфейсы

PushEvent
Представляет собой push действие отправленне в global scope ServiceWorker-а. Содержит информацию отправленную в PushSubscription.
PushManager
Provides a way to receive notifications from third-party servers as well as request URLs for push notifications. This interface has replaced functionality offered by the obsolete PushRegistrationManager interface.
PushMessageData
Provides access to push data sent by a server, and includes methods to manipulate the received data.
PushSubscription
Provides a subcription's URL endpoint and allows unsubscription from a push service.

Service worker additions

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

ServiceWorkerRegistration.pushManager Только для чтения
Returns a reference to the PushManager interface for managing push subscriptions including subscribing, getting an active subscription, and accessing push permission status. This is the entry point into using Push messaging.
ServiceWorkerGlobalScope.onpush
An event handler fired whenever a push event occurs; that is, whenever a server push message is received.
ServiceWorkerGlobalScope.onpushsubscriptionchange
An event handler fired whenever a pushsubscriptionchange event occurs; for example, when a push subscription has been invalidated, or is about to be invalidated (e.g. when a push service sets an expiration time.)

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

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

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

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 42.0 44.0 (44.0)[1] ?[2] ? ?
PushEvent.data,
PushMessageData
50.0 44.0 (44.0) Нет Нет Нет
Feature Android Android Webview Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support Нет Нет Нет Нет ?[2] ? ? 51.0
PushEvent.data,
PushMessageData
Нет Нет Нет Нет Нет Нет Нет 51.0

[1] Currently available only on desktop versions of Firefox; also, push messages are only delivered when Firefox is running.

[2]: Microsoft Edge status: In Development

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

Метки документа и участники

 Внесли вклад в эту страницу: Haosik, savelichalex, sosnovskyas, AlexKart86, idelpivnitskiy, vadimilin888
 Обновлялась последний раз: Haosik,