【问题标题】:How to detect if PWA is already installed on IOS如何检测IOS是否已经安装了PWA
【发布时间】:2021-02-02 12:29:43
【问题描述】:

我有 PWA Angular 应用程序,我想向用户显示他/她可以在主屏幕上添加应用程序的弹出窗口。

我不希望在 PWA 中显示此通知,而只在 IOS Safari 中显示,所以我使用此检查:

const isInStandaloneMode = () => ('standalone' in window.navigator) && (window.navigator.standalone);

当用户已经安装 PWA 时,我也不想在 IOS Safari 上显示此弹出窗口,是否有机会检查 PWA 是否已经安装?

【问题讨论】:

    标签: javascript ios angular safari progressive-web-apps


    【解决方案1】:

    是的,如果用户从 iOS 的主屏幕启动您的 PWA,该代码将返回 true

    您还可以将代码简化为:

    const iOSCanInstall = 'standalone' in window.navigator;
    const iOSIsInstalled = window.navigator.standalone === true;
    

    这样,您就知道他们是否是可能安装您的 PWA 的 iOS 用户,以及他们是否从主屏幕打开了您的 PWA。

    如果用户在浏览器中打开您的 PWA,很遗憾,无法检查它是否已安装。在 Chrome/Edge 中,您可以使用 getInstalledRelatedApps(),但遗憾的是这对您的问题没有帮助。

    【讨论】:

    • 你可以通过使用来改进它:window.matchMedia('(display-mode: standalone)').matches
    • @PeteLe const iOSIsInstalled = window.navigator.standalone === true;此行将检测打开的应用程序是 PWA 还是来自浏览器但我们需要知道是否安装了 abc.com 的 PWA。
    猜你喜欢
    • 1970-01-01
    • 2010-10-04
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 2019-01-07
    相关资源
    最近更新 更多