У нас есть PWA, реализованный на angular 7, и NodeJS в качестве бэкэнда. Push-уведомления отправляются из бэкэнда с помощью web-push и обрабатываются службой угловой службы.
Поведение, которое мы надеемся иметь в Android, заключается в том, что когда пользователь нажимает на уведомление, приложение открывается на устройстве (т.е. PWA появляется из фона и кажется видимым для пользователя).
В настоящее время код выполняется в фоновом режиме, но PWA не появляется в фоновом режиме (т.е. Пользователь нажимает на push-уведомление, но ничего не происходит).
Push-уведомления обрабатываются угловой службой SwPush на внешней стороне и доставляются в приложение с использованием следующего кода в типичном компоненте AppComponent углового приложения:
export class AppComponent implements OnInit {
constructor(private swPush: SwPush) { }
ngOnInit(): void {
try {
if (this.swPush.isEnabled) {
this.swPush.notificationClicks.subscribe(
event => {
window.focus();
window.open(event.notification.data.url, '_self');
},
error => {
// handle error
}
);
}
} catch (err) {
// handle error
}
}
}
Я провел поиск по всему SO сайту и не нашел именно этого вопроса. Комментарии по другим вопросам SO, чтобы избежать двусторонних ссылок на другие ответы SO:
- Я прочитал этот вопрос, и в моем случае журнал консоли внутри обработчика выполняется без проблем
-
этот другой вопрос предлагает обходной путь добавления кода в библиотеку сервис-работника, но, насколько я понимаю, это потому, что они используют угловой 5 вместо углового 7 (где сервис SwPush включает обработчик уведомленияclick). В любом случае мне нужно смоделировать эту строку:
event.waitUtil(clients.openWindow(URL));
Любая идея о том, как открыть PWA, когда пользователь нажимает на push-уведомления при использовании службы SwPush Angular 7?