Во-первых, он работает на ПК, но не на мобильном устройстве, это моя основная проблема.
Я создал PWA, используя приложение create-react-app, и я пытаюсь реализовать push-уведомления, но, похоже, я получаю значение undefined в аргументе reg моего обещания. Кто-нибудь знает, как заставить это работать? Я уже пытаюсь извлечь приложение create-response-app, но возникает та же проблема.
Я добавил этот код в registerServiceWorker.js:
export function displayNotification() {
if (Notification.permission === 'granted') {
console.info('this is showing at console when i click the button')
navigator.serviceWorker.getRegistration().then(function(reg) {
reg.showNotification('Hello world!');
});
}
}
Ошибка:
Unhandled Rejection (TypeError): Cannot read property 'showNotification' of undefined
В этой проблеме говорится об этой проблеме, но я уже пробовал эти решения, и ошибка та же.
https://github.com/facebook/create-react-app/issues/2253#issuecomment-312359460
Ниже приведены старые версии, которые работают только на ПК с браузером, а в PWA при нажатии кнопки отображается пустая страница.
Мой PWA: https://danilosilvadev.github.io/pwa-test/
Мой код: https://github.com/danilosilvadev/pwa-test/tree/master
Если вы поможете мне с этой старой версией, в которой используется пакет npm под названием "реагировать-веб-уведомление": "^ 0.3.1", или с кодом, который я предоставил в этом вопросе, это моя попытка сделать это вручную в любом случае, я был бы благодарен.
Самая последняя. Работала ли на вашем телефоне?
Я наблюдаю эту проблему на своем телефоне Android с Chrome Canary. На Android похоже, что API ведет себя иначе. Попробуйте использовать self.registration вместо обещания navigator.serviceWorker.getRegistration().
Использовал и получил Unexpected use of 'self' no-restricted-globals.
Это похоже на ошибку ESLint, поскольку он не знает, что это файл веб-воркера. Не обращайте внимания на ошибку и попробуйте ее на своем мобильном устройстве.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Какая точная версия браузера и ОС вашего мобильного устройства?