Spec-Zone.ru › Web APIs

PushSubscription

Базовая версия 2023
Новое

С марта 2023 года эта функция работает на последних версиях устройств и браузеров. Возможно, эта функция не будет работать на более старых устройствах или браузерах.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Защищённый контекст: Эта функция доступна только в защищённых контекстах (HTTPS), в некоторых или во всех поддерживающих браузерах.

Примечание: Эта функция доступна в Веб-воркерах.

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

Интерфейс также предоставляет информацию о том, когда подписка истечёт, и метод для отписки от подписки.

Свойства экземпляра

PushSubscription.endpoint Только для чтения

Строка, содержащая конечную точку, связанную с подпиской push.

PushSubscription.expirationTime Только для чтения

DOMHighResTimeStamp времени истечения срока действия подписки, связанной с подпиской push, если таковая имеется, в противном случае null.

PushSubscription.options Только для чтения

Объект, содержащий параметры, используемые для создания подписки.

PushSubscription.subscriptionId Устарело Только для чтения Нестандартно

Строка, содержащая идентификатор подписки, связанный с подпиской push.

Методы экземпляра

PushSubscription.getKey()

Возвращает ArrayBuffer, содержащий открытый ключ клиента, который затем может быть отправлен на сервер и использован для шифрования данных сообщений push.

PushSubscription.toJSON()

Стандартный сериализатор — возвращает JSON-представление свойств подписки.

PushSubscription.unsubscribe()

Запускает асинхронный процесс отписки от службы push, возвращая Promise, который разрешается в булево значение, когда текущая подписка успешно удаляется.

Описание

Каждый браузер использует определённую службу push. Сервис-воркер может использовать PushManager.subscribe() для подписки на поддерживаемую службу и использовать возвращённое значение PushSubscription для определения конечной точки, куда следует отправлять сообщения push.

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

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

Пример

Отправка кодировочной информации на сервер

Открытый ключ p256dh и секрет auth, используемые для шифрования сообщения, предоставляются сервис-воркеру через его подписку push с помощью метода PushSubscription.getKey(), а также целевая конечная точка для отправки сообщений push в PushSubscription.endpoint. Кодировка, которая должна использоваться для шифрования, предоставляется статическим свойством PushManager.supportedContentEncodings.

В этом примере показано, как вы можете поместить необходимую информацию из PushSubscription и supportedContentEncodings в JSON-объект, сериализовать его с помощью JSON.stringify() и отправить результат на сервер приложения.

// Get a PushSubscription object
const pushSubscription = await serviceWorkerRegistration.pushManager.subscribe();

// Create an object containing the information needed by the app server
const subscriptionObject = {
  endpoint: pushSubscription.endpoint,
  keys: {
    p256dh: pushSubscription.getKeys('p256dh'),
    auth: pushSubscription.getKeys('auth'),
  },
  encoding: PushManager.supportedContentEncodings,
  /* other app-specific data, such as user identity */
};

// Stringify the object an post to the app server
fetch(`https://example.com/push/`, {
  method: "post",
  body: JSON.stringify(subscriptionObject);
});

Отписка от менеджера push

navigator.serviceWorker.ready.then((reg) => {
  reg.pushManager.getSubscription().then((subscription) => {
    subscription
      .unsubscribe()
      .then((successful) => {
        // You've successfully unsubscribed
      })
      .catch((e) => {
        // Unsubscribing failed
      });
  });
});

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

Спецификация
Push API
# pushsubscription-interface

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
PushSubscription 42 17 44 29
16Уведомления поддерживаются в macOS Ventura и более поздних версиях.
42 48 29
16.4Уведомления поддерживаются в веб-приложениях, сохранённых на главном экране.
4.0 Нет
endpoint 42 17 44 29
16Уведомления поддерживаются в macOS Ventura и более поздних версиях.
42 48 29
16.4Уведомления поддерживаются в веб-приложениях, сохранённых на главном экране.
4.0 Нет
expirationTime 60 17 96 47
16Уведомления поддерживаются в macOS Ventura и более поздних версиях.
60 96 44
16.4Уведомления поддерживаются в веб-приложениях, сохранённых на главном экране.
8.0 Нет
getKey 42 17 44 29
16Уведомления поддерживаются в macOS Ventura и более поздних версиях.
42 48 29
16.4Уведомления поддерживаются в веб-приложениях, сохранённых на главном экране.
4.0 Нет
options 54 17 44 41
16Уведомления поддерживаются в macOS Ventura и более поздних версиях.
54 48 41
16.4Уведомления поддерживаются в веб-приложениях, сохранённых на главном экране.
6.0 Нет
subscriptionId 42 17 Нет 29 Нет 42 Нет 29 Нет 4.0 Нет
toJSON 42 17 44 29
16Уведомления поддерживаются в macOS Ventura и более поздних версиях.
50 48 37
16.4Уведомления поддерживаются в веб-приложениях, сохранённых на главном экране.
5.0 Нет
unsubscribe 42 17 44 29
16Уведомления поддерживаются в macOS Ventura и более поздних версиях.
50 48 37
16.4Уведомления поддерживаются в веб-приложениях, сохранённых на главном экране.
5.0 Нет

См. также

  • Push API
  • 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/PushSubscription

Spec-Zone.ru

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