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

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

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

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

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

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

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

Для получения 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 не имеет таких ограничений, однако обязывает показывать уведомление пользователю каждый раз, чтобы пользователь мог решить хочет он или нет принимать их дальше.

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

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

Интерфейсы

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

Service worker additions

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

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

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

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

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

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!
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

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

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

Обновлялась последний раз: mdnwebdocs-bot,