Win11系统Chrome浏览器中navigator.getInstalledRelatedApps()返回空数组问题求助
关于navigator.getInstalledRelatedApps()返回空数组的问题解答
1. .well-known/assetlinks.json是否是必要配置?
对于同域名已安装Web App的检测场景,assetlinks.json并不是必需的。这个文件主要用于关联Web App和原生App(比如Android应用),实现跨应用的权限验证或跳转逻辑。你的场景只需要正确配置Web App Manifest即可满足接口需求。
2. 问题根源:Manifest中related_applications的url字段配置不匹配
你遇到的空数组问题,核心原因是related_applications里的url字段指向了具体的Manifest文件路径(/_new/manifest.json),而Chrome在匹配已安装Web App时,要求这个url指向Web App的作用域根路径(也就是你Manifest里scope字段设置的/)。
当你把url改成"/"后,Chrome就能正确匹配到已安装的Web App——因为这个路径和Web App的安装作用域完全一致,接口自然就能返回对应的应用条目了。
3. 正确的Manifest配置建议
针对你的场景,related_applications的正确配置需要满足以下几点:
platform固定设为"webapp"id和url都要和Manifest里的scope字段值保持一致(你的场景就是"/")id必须和安装Web App时使用的Manifest中的id完全匹配(你的Manifest里id是"/",这里要对应)
调整后的related_applications段示例:
"related_applications": [ { "id": "/", "platform": "webapp", "url": "/" } ]
另外补充几个验证要点:
- 确保Web App是通过Chrome的「安装应用」正式流程安装的,而非单纯收藏书签
- 确认Manifest的
start_url、scope等字段无配置错误,避免安装后的应用作用域不匹配 - 执行接口时,要在Web App的作用域内页面(即
https://www.swisswebcams.ch/及其子路径)操作,跨域或超出作用域会导致接口返回空数组
内容的提问来源于stack exchange,提问作者Simon Ferndriger




