Я пытаюсь реализовать отслеживание выбора пользователя после того, как beforeinstallprompt
запущен и мини-информационная панель появляется.Вот фрагмент из MDN на BeforeInstallPromptEvent
window.addEventListener("beforeinstallprompt", function(e) {
// log the platforms provided as options in an install prompt
console.log(e.platforms); // e.g., ["web", "android", "windows"]
e.userChoice.then(function(outcome) {
console.log(outcome); // either "accepted" or "dismissed"
}, handleError);
});
И это моя реализация, основанная на примере Google
window.addEventListener('beforeinstallprompt', (e) => {
ga(`${experimentName}.send`, 'speedlink_offer', 'show', 'true');
e.userChoice.then((choice) => {
if (choice.outcome === 'accepted') {
ga(`${experimentName}.send`, 'speedlink_offer', 'click', 'true');
} else {
ga(`${experimentName}.send`, 'speedlink_offer', 'close', 'true');
}
} );
});
Но обещание userChoice
никогда не разрешается.Почему это не разрешается после того, как пользователь нажимает кнопку «Отмена» или «Добавить»?Это ошибка или я что-то упустил?![enter image description here](https://i.stack.imgur.com/AyThZ.png)
PS.Я обнаружил, что если вы фиксируете действие пользователя (например, щелкните) и выполняете event.prompt()
, то userChoice
будет разрешено.Но это будет сделано независимо от взаимодействия пользователя с «нативной» мини-информационной панелью Chrome .
PPS.Версия Chrome на моем устройстве Android: 70.0.3538.110