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

Mob*_*ent 6 javascript windows-store windows-store-apps microsoft-edge progressive-web-apps

我向 Microsoft Store 提交了 PWA,并在提交时得到了以下说明:

10.8.5 您的应用程序或应用程序元数据包括促进在商店外安装或购买软件的链接。你的应用只能通过 Microsoft Store 推广或分发软件。

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

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

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

我更喜欢在 JavaScript 中区分这些用例的解决方案,但我也对完全不同的方法持开放态度。

Mob*_*ent 1

我意识到用户代理毕竟没有那么含糊。

Microsoft Edge确实通过添加到其用户代理来指示它何时作为应用程序主机运行MSAppHost/<WebView Rev>

例子:

在我的计算机上,托管 PWA 的用户代理列出了“ MSAppHost/3.0 ”:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; MSAppHost/3.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063
Run Code Online (Sandbox Code Playgroud)

解决方案:

navigator.userAgent对字符串的测试可揭示 Web 应用程序是否作为托管应用程序MSAppHost/运行。

我现在正在使用此检查进行服务器端和客户端渲染,以删除链接到外部存储的任何内容。