【问题标题】:How To Log Whether PWA Is Being Viewed As A Website Or App如何记录 PWA 是否被视为网站或应用程序
【发布时间】:2018-07-03 16:37:05
【问题描述】:

我正在开发 PWA(渐进式网络应用程序),我希望能够跟踪是否有人只是将其作为网站查看,或者他们是否安装了它并将其作为应用程序查看。

有没有办法做到这一点?我想不出任何办法,因为它们都使用相同的文件(都使用 manifest.json 和 manifest.json 都指向相同的 index.html)。

Windows 10 允许从应用商店安装 PWA。那时,您可能能够收集一些分析。不幸的是,这将是一个有限的安装基础(与仅从浏览器安装相比)。

【问题讨论】:

    标签: logging progressive-web-apps pwa


    【解决方案1】:

    选项 1:

    Manifest.json 的起始 url 仅在添加到主屏幕后访问它时使用。您可以将起始网址设为“https://example.com/myapp?isPWA=true

    在主页中,具有读取查询参数和标志的逻辑,并在此基础上执行逻辑。在浏览器模式下,此标志将不存在,因此在这种情况下逻辑应考虑为 false。这是适用于所有平台的通用解决方案。

    选项 2:

    作为替代,您可以在 JS 中使用 display-mode detection

    非 Safari(Safari 兼容性可能会出现在新版本中)

    CSS 解决方案

    @media all and (display-mode: standalone) {
      body {
        background-color: yellow;
      }
    }
    

    JS 解决方案

    if (window.matchMedia('(display-mode: standalone)').matches) {
      console.log('display-mode is standalone');
    }
    

    Safari JS 解决方案

    if (window.navigator.standalone === true) {
      console.log('display-mode is standalone');
    }
    

    【讨论】:

    • 选项 1 是我的第一个想法。我在 manifest.json 中设置了"start_url": "./index.html?source=pwa",。然后,我有一些 javascript 连接到我的服务器并记录源是 pwa(基于该查询字符串的使用)。不幸的是,在我的计算机上使用我的浏览器(Microsoft Edge)查看该站点导致将源记录为 pwa(这正是我不希望发生的事情)。我必须测试显示模式检测的东西。
    • 您的意思是说即使您在浏览器中以example.com 的身份访问您的网站,edge 仍在使用您添加的 start_url 查询参数?我无法想象这怎么可能。该属性用于设置 PWA 已安装应用的主页。
    • 我没有测试任何其他浏览器,因为它不适用于 Edge。是的,不过,Edge 启动了我基于查询字符串的日志记录代码。
    • 选项 2 display-mode detection 与宣传的完全一样。从浏览器(Edge 和 Chrome)加载页面导致被记录为网站。使用 Chrome 到 Add To Homescreen 并启动导致被记录为应用程序。
    猜你喜欢
    • 2021-10-05
    • 2015-11-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多