PWA主屏幕“卸载” DOM事件

时间:2019-10-30 20:38:20

标签: progressive-web-apps

我正在尝试使用localStorage中的值来跟踪是否已将Web应用安装到用户的主屏幕。

我知道有一个DOM event会在将网络应用安装到用户主屏幕时触发,但是是否存在卸载该应用的事件?

我理想中的事件类型最好以类似于onunload的方式进行调度(并且以类似于the criteria的方式进行调度)。 (即 uncancellable 事件,该事件使我可以在应用被销毁之前安排最后的工作)

例如:

window.addEventListener('appinstalled', function(e) {
  console.log('onappinstalled', e)
  localStorage.setItem('APP_INSTALLED', '1')
})

// given the above, is anything like the following possible?
window.addEventListener('appuninstalled', function(e) {
  console.log('onappuninstalled', e)
  localStorage.setItem('APP_INSTALLED', '0')
})

2 个答案:

答案 0 :(得分:2)

我意识到,一旦用户从主屏幕上卸载了该应用程序,只要您遇到onbeforeinstallprompt,浏览器就会再次提示将应用程序安装到主屏幕。

因此,通过使用Periodically sending messages to clients in Ratchet事件,就有机会清除'APP_INSTALLED'中的localStorage键,并执行其他任意工作。

例如:

window.addEventListener('beforeinstallprompt', function(e) {
  localStorage.removeItem('APP_INSTALLED')
})

此外,如果用户在从主屏幕上卸载应用程序时选择删除与该应用程序关联的所有数据,则此localStorage键可能已经清除。

答案 1 :(得分:1)

这很好,但是iOS不提供“ beforeinstallprompt”事件。所以我提出了一个问题-有没有一种方法可以直接检测到异常事件?

很抱歉把它放在这里,我不想重复这个问题,而且我没有足够的声誉来发表评论。