You need to enable JavaScript to run this app. getInstalledRelatedApps API无法检测已安装应用,Promise始终处于pending状态
优惠活动
大模型
产品
解决方案
定价
更多

getInstalledRelatedApps API无法检测已安装应用,Promise始终处于pending状态

getInstalledRelatedApps 接口长期pending/返回空的排查清单
  • 核查运行环境的基础合规性
    该API有严格的生效环境要求,不满足条件时会直接出现Promise长期挂起、无返回的情况:
    • 必须在HTTPS安全上下文下运行(本地localhost开发测试场景除外),HTTP协议部署的站点调用该接口时,请求会被浏览器安全策略拦截,直接进入pending状态
    • 仅Android端Chrome 80及以上、Edge移动端支持该能力,桌面端、iOS端所有浏览器均不兼容该API,在这类环境下调用不会收到任何响应
    • 测试时需要使用普通浏览模式,无痕模式、嵌入式WebView、APP内置浏览器环境下,浏览器会默认禁用该接口权限,无法正常返回结果
  • 补全站点与应用的关联校验链路
    仅在manifest.json中声明related_applications配置不足以通过浏览器的关联校验:
    针对Android Play渠道的关联应用,必须在站点根目录下的/.well-known/路径下部署assetlinks.json数字资产声明文件,文件内需要明确标注Android应用的包名、应用签名证书的SHA256指纹,建立站点与应用的双向绑定关系。缺失该声明文件时,浏览器无法完成应用身份核验,接口不会返回有效结果,甚至长期挂起。
  • 确认manifest配置的加载有效性
    • 检查页面是否通过<link rel="manifest" href="/manifest.json">标签正确引入配置文件,可在浏览器DevTools的Application面板中查看Manifest板块的加载日志,确认是否存在404、CSP资源拦截、JSON解析错误等问题
    • 核对manifest中声明的related_applications项的ID、平台参数,确保与应用实际上架的信息完全匹配,避免拼写、大小写不一致的问题
  • 优化调用代码的异常捕获
    当前的异步调用代码未添加异常捕获逻辑,接口在权限拦截、校验失败时抛出的异常会被静默吞掉,直观表现就是Promise一直处于pending状态。可将代码调整为带能力检测和异常捕获的版本:
    (async function () {
      // 先做API能力前置检测
      if (typeof navigator.getInstalledRelatedApps !== 'function') {
        console.log("当前浏览器不支持getInstalledRelatedApps能力");
        return;
      }
      try {
        const relatedApps = await navigator.getInstalledRelatedApps();
        console.log("检测到的已安装关联应用:", relatedApps);
        relatedApps.forEach(app => {
          console.log("应用详情:", app.id, app.platform, app.url);
        });
      } catch (err) {
        console.error("接口调用异常:", err);
      }
    })();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 04:45:00