如何记录 PWA 是否被视为网站或应用程序

2024-01-07

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

有什么办法可以做到这一点吗?我想不出任何方法,因为它们都使用相同的文件(都使用manifest.json并且manifest.json将两者定向到相同的index.html)。

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


选项1 :

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

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

选项 2:

作为替代方案,您可以使用显示模式检测 https://developers.google.com/web/fundamentals/app-install-banners/ in 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');
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何记录 PWA 是否被视为网站或应用程序 的相关文章

随机推荐

  • Django cookies 在电子邮件地址周围放置双引号

    在我的登录脚本中 它为用户登录其电子邮件地址和密码创建一个 cookie 我遇到的问题是 当设置电子邮件地址时 它将整个电子邮件地址放在双引号之间 我怎样才能让它不呢 if request method POST post request
  • iOS9 self.canDisplayBannerAds = true 不显示任何广告 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 非常简单的iAd代码 import UIKit import iAd class ViewController UIViewCon
  • Linux 上的 SAFEARRAY

    我在 Linux 上使用一个专有库 它使用SAFEARRAY输入回调函数 HRESULT Write SAFEARRAY Data SAFEARRAY在头文件中定义为typedef void SAFEARRAY 我必须定义一个回调函数来获取
  • ASP.NET MVC Html.Editor 将模型传递给编辑器模板

    我有一个名为 Address cshtml 的编辑器模板 其模型定义为 model Acme Models Address 在视图中 我想调用编辑器模板并传递相同类型的局部变量 并定义它将用于变量的名称 我尝试了很多方法 包括 Html E
  • 如何在Windows 10上构建winium驱动服务?

    我正在使用以下类代码通过 WiniumDriver 启动计算器 在创建 WiniumDriver 实例之前 我将启动一个 winium 驱动程序服务 import java io File import java io IOExceptio
  • java中的返回值语法

    我不太确定这个方法的作用 或者更好的是我不确定 是什么意思 有人可以帮我理解吗 private int guess return isTrue A isFalse B neither C D 这是嵌套的情况三元运算符 http en wik
  • SQL查询获取最近3个月的数据

    如何获取今天的日期并将其转换为01 mm yyyy格式化并从表中获取 3 个月前交货月份的数据 表已包含交割月份01 mm yyyy SELECT FROM TABLE NAME WHERE Date Column gt DATEADD M
  • 使用 jQuery 获取整个开始标签

    假设 HTML 是 div class someclass more divs div 如何使用 ID 获取 HTML 中显示的整个开始标记及其属性 但不是结束标记 例如 page tag 然后会返回 div class someclass
  • Apache Airflow 任务超时

    所以我有一个任务的测试 dag 这是一个简单的 ETL 尝试从 mssql 数据库中提取数据并将它们加载到 postgres 数据库 所以它的工作方式是按日期选择并插入过去 360 天的 postgres 数据库 但任务在 10 天左右后
  • 如何在Python中找到两个单词之间的最短依赖路径?

    我尝试在给定的依赖树中找到 Python 中两个单词之间的依赖路径 对于句子 流行文化中的机器人提醒我们人类的伟大之处 不受约束的人类机构 我使用了 practnlptools https github com biplab iitb pr
  • Scikit - SVM 的 3D 特征数组

    我正在尝试在 scikit 中训练 SVM 我正在遵循该示例并尝试将其调整为我的 3d 特征向量 我尝试了页面中的示例http scikit learn org stable modules svm html http scikit lea
  • org.apache.poi.POIXMLException 目前不支持严格的 OOXML,请参阅 bug #57699

    我想用java解析Excel文件 所以我使用apache poi库 这里是maven依赖项
  • 涂抹工具的算法?

    我正在尝试实现一个涂抹工具 就像您在 Gimp 或 Photoshop 中找到的那样 我尝试了很多变体 但它们都有问题 我尝试在图像上从位置 P1 到 P2 进行涂抹的基本方法是 从 P1 中复制当前画笔大小的矩形 在 P2 处以低不透明度
  • Django 管理站点:防止字段被编辑?

    是否可以防止某些字段在保存后被编辑 当用户创建特定模型的新项目时 它们应该是可编辑的 但当他们尝试打开它们来编辑某些字段时 它们会被 阻止 thanks 您可以覆盖您的 ModelAdminget readonly fields将某些字段设
  • sql:像任何一样与像所有一样

    我不明白为什么有时 LIKE 需要 ANY 有时却需要 ALL 这让我抓狂 我觉得我应该能够在这两种情况下使用 ANY 我试图选择括号中任何正则表达式后面的记录 出于某种原因 第一个 LIKE 与 ANY 一起工作得很好 它返回所有包含狗粮
  • UITextView 中带有
    标签的 HTML

    我想显示 HTML 文本 blockquote 中的标签UITextView HTML 示例 div blockquote class uncited div div blockquote div blockquote
  • Android:当相机设备打开完成时,如何在CameraX中获取回调?

    我想在cameraX完成打开时应用白平衡和曝光值 有没有办法让相机打开回调与CameraDevice StateCallback在相机2中 我不知道相机可用性的回调 但有一个用于预览的回调 预览可见性的回调 Use previewView
  • 使用 CUDA 和 OpenCV 在灰度 jpg 图像上应用 Sobel 边缘检测

    这个问题以前已经被问过 但是提问者没有提供足够的信息并且没有得到回答 我对该程序很好奇 原问题链接 https stackoverflow com questions 11091274 sobel filter in x direction
  • 如何纯粹在基础R(“基础管道”)中进行管道传输?

    有没有一种方法可以在基本 R 中进行管道传输 而无需定义自己的函数 即 开箱即用 的函数 并且无需加载任何外部包 也就是说 magrittr 管道的一些 基础 R 替代品 gt 可能在即将发布的 R 版本中 R 4 0 3 中提供此功能吗
  • 如何记录 PWA 是否被视为网站或应用程序

    我正在开发一个 PWA 渐进式网络应用程序 我希望能够跟踪某人是否只是将其视为网站 或者是否安装了它并将其视为应用程序 有什么办法可以做到这一点吗 我想不出任何方法 因为它们都使用相同的文件 都使用manifest json并且manife