You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测Web应用是否以Microsoft Store中的PWA运行?

嘿,这个Microsoft Store PWA审核的问题我太熟了,给你几个靠谱的JavaScript方案,完美解决检测Store环境的需求:

方法1:通过用户代理的MSAppHost标识判断

微软Store里的PWA是通过专属的App Host容器运行的,它的用户代理字符串里会带有MSAppHost/[版本号]的标记,这是普通Edge浏览器或手动安装的PWA没有的。直接检测这个标记就很准确:

function isInMicrosoftStorePWA() {
  return navigator.userAgent.includes('MSAppHost/');
}

// 调用示例
if (isInMicrosoftStorePWA()) {
  // 隐藏外部安装链接区块,渲染精简版产品页
  document.querySelector('.external-install-section').style.display = 'none';
}

方法2:结合独立运行模式和UWP对象双重验证

如果担心极端情况下用户代理被篡改(虽然概率极低),可以结合两个特征来判断:Store里的PWA会以独立窗口运行,同时会暴露UWP的全局Windows对象,而普通PWA或浏览器不会有这个对象:

function isInMicrosoftStorePWA() {
  const isStandalonePWA = window.matchMedia('(display-mode: standalone)').matches;
  const hasUwpWindowsObject = typeof window.Windows !== 'undefined';
  return isStandalonePWA && hasUwpWindowsObject;
}

方法3:用现代userAgentData API(推荐新环境)

如果你的目标用户都是用较新的Windows/Edge版本,这个API比传统userAgent更规范可靠,能获取更精准的代理信息:

async function isInMicrosoftStorePWA() {
  if (!navigator.userAgentData) return false;
  const detailedUA = await navigator.userAgentData.getHighEntropyValues(['uaFullVersion']);
  return detailedUA.uaFullVersion.includes('MSAppHost/');
}

// 异步调用示例
isInMicrosoftStorePWA().then(isInStore => {
  if (isInStore) {
    document.querySelector('.external-install-section').remove(); // 直接移除区块更彻底
  }
});

额外注意事项

  • 测试的时候,可以用PWABuilder打包一个Store版本的PWA安装包,本地安装后就能验证你的检测逻辑是否生效了。
  • 记得要把所有指向Store外的安装/购买链接都隐藏掉,别漏了任何角落,避免再次触发审核条款10.8.5。
  • 如果产品页里还有其他推广外部软件的内容,也要同步处理哦。

内容的提问来源于stack exchange,提问作者Mobiletainment

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:09:49