在Windows 11的 Chrome中,navigator.getInstalledRelatedApps() 返回的是空的

前端开发 2026-07-10

好像有什么缺失,但我就是不知道是什么。因为在调用 navigator.getInstalledRelatedApps() 时,应该把已安装的网页应用列在数组里,但这个数组却是空的。

Chrome (146.0.7680.178) Windows 11控制台输出

https://www.swisswebcams.ch/ 上(安装了网页应用)

enter image description here

在网页应用中调用

 if('getInstalledRelatedApps' in navigator)
    navigator.getInstalledRelatedApps().then(apps => console.warn(apps));

资产链接

https://www.swisswebcams.ch/.well-known/assetlinks.json

[
  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "web",
      "site": "https://www.swisswebcams.ch"
    }
  }
]

这对让 navigator.getInstalledRelatedApps() 能否工作真的需要吗?

清单(Manifest)

https://www.swisswebcams.ch/_new/manifest.json

{
  "icons": [
    {
      "src": "/_new/img/og.png",
      "sizes": "256x256"
    }
  ],
  "id": "/",
  "display": "fullscreen",
  "name": "SwissWebcams",
  "protocol_handlers": [
    {
      "protocol": "web+swc",
      "url": "/?referrer=%s"
    }
  ],
  "related_applications": [
    {
      "id": "https://www.swisswebcams.ch/",
      "platform": "webapp",
      "url": "/_new/manifest.json" // Using just "/" solved the issue
    }
  ],
  "scope": "/",
  "short_name": "Webcams",
  "start_url": "/?version=1.0.0",
  "version": "1.0.0"
}

解决方案

getInstalledRelatedApps() 不会自动返回所有已安装的渐进式网页应用(PWA)。它只会报告通过related-apps / asset-links机制声明的应用,且只有在浏览器判断该关系有效时才会返回。

这里有几件事需要再次确认:

  • related_applications 通常用于相关的原生/平台应用,而不是用于检测当前的PWA本身
  • related_applications 内的清单 url 应指向相关应用,而不是返回到同一个清单,除非确实支持该特定模式
  • assetlinks.json 主要是数字资产链接验证的一部分,但仅凭它本身并不能保证Chrome会在此处列出已安装的网页应用
  • Chrome对网页应用条目在不同平台上的支持或行为可能有限且不一致

因此,数组为空并不一定意味着你的安装有问题——这可能只是意味着你的应用没有被视为此API的“相关已安装应用”。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章