Spec-Zone.ru › Angular

SwPush

Подписывайтесь на веб-push-уведомления и получайте их через Angular Service Worker.

Push-уведомленияPush-уведомления AngularMDN: Push APIMDN: Notifications APIMDN: рекомендации по уведомлениям Web Push APIРуководство по push-уведомлениям

API

class SwPush {
  constructor(sw: NgswCommChannel): SwPush;
  readonly messages: Observable<object>;
  readonly notificationClicks: Observable<{ action: string; notification: NotificationOptions & { title: string; }; }>;
  readonly notificationCloses: Observable<{ action: string; notification: NotificationOptions & { title: string; }; }>;
  readonly pushSubscriptionChanges: Observable<{ oldSubscription: PushSubscription | null; newSubscription: PushSubscription | null; }>;
  readonly subscription: Observable<PushSubscription | null>;
  readonly isEnabled: boolean;
  requestSubscription(options: { serverPublicKey: string; }): Promise<PushSubscription>;
  unsubscribe(): Promise<void>;
}

constructor

SwPush
@paramswNgswCommChannel
@returnsSwPush

messages

Observable<object>

Передаёт данные полученных push-уведомлений.

notificationClicks

Observable<{ action: string; notification: NotificationOptions & { title: string; }; }>

Передаёт данные полученных push-уведомлений, а также действие, с которым взаимодействовал пользователь. Если действие не использовалось, свойство action содержит пустую строку ''.

Обратите внимание, что свойство notification содержит не объект Notification, а объект NotificationOptions, который также включает title объекта Notification.

notificationCloses

Observable<{ action: string; notification: NotificationOptions & { title: string; }; }>

Передаёт данные закрытых уведомлений вместе с действием (если оно есть), связанным с событием закрытия. Если действие не использовалось, свойство action содержит пустую строку ''.

Обратите внимание, что свойство notification содержит не объект Notification, а объект NotificationOptions, который также включает title объекта Notification.

pushSubscriptionChanges

Observable<{ oldSubscription: PushSubscription | null; newSubscription: PushSubscription | null; }>

Передаёт обновления подписки на push-уведомления, включая предыдущее (oldSubscription) и текущее (newSubscription) значения. В зависимости от контекста любая из подписок может быть null:

  • oldSubscription равно null, если предыдущей подписки не было.
  • newSubscription равно null, если подписка была аннулирована и не заменена.

Этот поток позволяет клиентам реагировать на автоматические изменения подписок на push-уведомления, например вызванные истечением срока действия в браузере или сменой ключей.

subscription

Observable<PushSubscription | null>

Передаёт текущую активную подписку PushSubscription, связанную с регистрацией Service Worker, или null, если подписки нет.

isEnabled

boolean

Истинно, если Service Worker включён (поддерживается браузером и активирован через ServiceWorkerModule).

requestSubscription

Promise<PushSubscription>

Подписывается на веб-push-уведомления после запроса и получения разрешения пользователя.

@paramoptions{ serverPublicKey: string; }

Объект, содержащий строку serverPublicKey.

@returnsPromise<PushSubscription>

Promise, который разрешается новым объектом подписки.

unsubscribe

Promise<void>

Отписывается от push-уведомлений Service Worker.

@returnsPromise<void>

Promise, который выполняется при успешном завершении операции или отклоняется, если активной подписки нет либо операция отписки завершается ошибкой.

Примечания по использованию

Вы можете внедрить экземпляр SwPush в любой компонент или сервис как зависимость.

Чтобы подписаться, вызовите SwPush.requestSubscription(), который запросит у пользователя разрешение. Вызов возвращает Promise с новым экземпляром PushSubscription.

Запрос отклоняется, если пользователь запретил доступ или браузер блокирует Push API либо ServiceWorkers или не поддерживает их. Проверьте SwPush.isEnabled, чтобы узнать состояние.

Отправьте push-уведомление, передав сообщение со следующими данными.

{
  "notification": {
    "actions": NotificationAction[],
    "badge": USVString,
    "body": DOMString,
    "data": any,
    "dir": "auto"|"ltr"|"rtl",
    "icon": USVString,
    "image": USVString,
    "lang": DOMString,
    "renotify": boolean,
    "requireInteraction": boolean,
    "silent": boolean,
    "tag": DOMString,
    "timestamp": DOMTimeStamp,
    "title": DOMString,
    "vibrate": number[]
  }
}

Обязательным является только title. См. Notification свойства экземпляра.

Пока подписка активна, Service Worker отслеживает события PushEvent и в ответ создаёт экземпляры Notification.

Отпишитесь с помощью SwPush.unsubscribe().

Приложение может подписаться на наблюдаемый объект SwPush.notificationClicks, чтобы получать уведомления о щелчках пользователя по уведомлению. Например:

Подробнее об обработке щелчков по уведомлениям см. в руководстве по уведомлениям Service Worker.

Super-powered by Google ©2010–2025.
Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
https://angular.dev/api/service-worker/SwPush

Spec-Zone.ru

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