Чтобы ответить на вопрос с указанным c вариантом использования реакции:
Вы хотите указать, что ваше Progressive Web App можно установить, и предоставить пользовательский процесс установки в приложении:
- Прослушайте событие beforeinstallprompt.
- Сохраните событие beforeinstallprompt, чтобы его можно было использовать для запуска процесса установки позже.
- Оповестите пользователя о том, что ваш PWA устанавливается, и предоставьте кнопку или другой элемент для запуска процесса установки в приложении.
Здесь появляется отказавшийся: вы можете подождать, прежде чем показывать пользователю приглашение на установку, чтобы они не отвлекались от своих действий. Например, если пользователь участвует в процессе извлечения или создает свою учетную запись, мы разрешаем ему завершить это, прежде чем запрашивать его.
Итак, небольшой пример отложенного события
let deferredPrompt;
window.addEventListener('beforeinstallprompt', (e) => {
// Stash the event so it can be triggered later.
deferredPrompt = e;
// Update UI notify the user they can install the PWA
showInstallPromotion();
});
Мы предоставляем элемент пользовательского интерфейса, на который пользователь нажимает, используя отложенную переменную
buttonInstall.addEventListener('click', (e) => {
// Hide the app provided install promotion
hideMyInstallPromotion();
// Show the install prompt
deferredPrompt.prompt();
// Wait for the user to respond to the prompt
deferredPrompt.userChoice.then((choiceResult) => {
if (choiceResult.outcome === 'accepted') {
console.log('User accepted the install prompt');
} else {
console.log('User dismissed the install prompt');
}
})
});
Надеюсь, это немного рассеет туман.