SwPush
Подписывайтесь на веб-push-уведомления и получайте их через Angular Service Worker.
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>;
}
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-уведомления после запроса и получения разрешения пользователя.
{ serverPublicKey: string; }Объект, содержащий строку serverPublicKey.
Promise<PushSubscription>Promise, который разрешается новым объектом подписки.
unsubscribe
Promise<void>Отписывается от push-уведомлений Service Worker.
Promise<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