javascript - 通过 Microsoft Store 检测 Web 应用程序是否作为 PWA 运行

标签 javascript windows-store-apps microsoft-edge progressive-web-apps windows-store

我向 Microsoft Store 提交了一个 PWA,并在提交时收到了以下注释:

10.8.5 Your app or app metadata includes links that promote installation or purchase of software outside the Store. Your app may promote or distribute software only through the Microsoft Store.

这是因为我的网络应用程序有一个产品页面,其中包含指向该应用程序可用的各种平台的链接。这样一来,使用浏览器访问我的 Web 应用程序的用户就能够将其作为“ native ”应用程序安装在他们的平台上。

如何检测我的 Web 应用程序是否通过 Microsoft Store 作为 PWA 运行,以便我可以呈现没有产品页面的应用程序的 trim 版本?

我的第一个想法是检查 navigator.userAgent,但这似乎模棱两可,因为无论应用程序是“本地”运行还是在浏览器中手动访问,用户代理都是 Microsoft Edge .

我更喜欢在 JavaScript 中区分这些用例的解决方案,但我也愿意接受完全不同的方法。

最佳答案

正确的官方方法是检查window.Windows。当作为应用商店应用运行时,整个 WinRT API 表面被注入(inject)。因此,您可以(并且应该)执行以下操作而不是用户代理嗅探:

if (window.Windows) {
  // running as a Windows app
}
else {
  // running in browser
}

关于javascript - 通过 Microsoft Store 检测 Web 应用程序是否作为 PWA 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49318152/

相关文章:

javascript - 为什么当我调用函数 "intervalId"函数时,我的变量 "StopTimer"没有更新值?

c# - 比较互联网上的两个文件是否相同

windows-store-apps - 在 Windows 应用商店应用中捕获无声视频

javascript - Microsoft Edge PDF 查看器扩展位置

javascript - 一次 :true with addEventListener doesn't work on IE11 or Edge

javascript - 将复选框限制为 2,但移动选择而不是阻止它

javascript - 单击按钮时重置 JavaScript 计时器

javascript - 我应该在什么时候启用/禁用 WebGL/OpenGL 中的顶点位置属性?

c# - 获取录音音量(UWP)

css - 为什么 CSS Grid 元素宽度不会在自动流 : column in MS Edge? 上调整大小