logging - 如何记录 PWA 是被视为网站还是应用程序

标签 logging progressive-web-apps pwa

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

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

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

最佳答案

选项 1:

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

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

选项 2:

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

非 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');
}

关于logging - 如何记录 PWA 是被视为网站还是应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51159379/

相关文章:

google-chrome-extension - 渐进式网络应用程序(PWA)与电子与浏览器扩展

node.js - Winston 的日志流是如何工作的?

c# - dotnetcore 控制台上的 Microsoft.Extensions.Logging 和 Serilog。在 RollingFile 接收器中包含范围信息

javascript - Service Worker - 首先是网络然后缓存回退到静态页面

javascript - 使用移动图库中图片上的分享按钮将其上传到 PWA

angular - 在 Angular 6.0.3 中安装 PWA 后,通用服务器端渲染停止渲染内容

asp.net - ASP.NET MVC 应用程序中的 Multi-Tenancy 日志记录

java - 将 Log4j 重定向到特定文件

javascript - 如何检测IOS是否已经安装PWA

android - 如何强制 manifest.json 在现有 Android 设备上刷新