Navigator: getInstalledRelatedApps() 方法

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

getInstalledRelatedApps() 方法返回一个 Promise,该 Promise 解析为一个对象数组,这些对象表示用户已安装的任何相关的特定于平台的应用程序或渐进式 Web 应用 (PWA)。这可用于内容个性化,例如,如果特定于平台的应用程序和/或 PWA 已安装,则从 Web 应用中删除“安装我们的应用”横幅。

注意:此方法必须在顶层安全上下文中调用,也就是说,不能嵌入到<iframe>中。

描述

getInstalledRelatedApps() 可用于检查通用 Windows 平台 (UWP) 应用、Android 应用和与调用此方法的 Web 应用相关的 PWA 是否已安装。

要将调用 Web 应用与特定于平台的应用程序或 PWA 相关联,必须执行两项操作:

  1. 调用 Web 应用必须在其清单文件related_applications成员中进行指定。
  2. 特定于平台的应用程序或 PWA 必须定义与调用应用的关系。

关系的定义方式因应用类型而异:

  • Android 应用通过数字资产链接系统完成此操作。
  • Windows UWP 应用通过URI 处理程序完成此操作。
  • PWA 通过以下方式完成此操作:
    • 在其自身的 related_applications 清单成员中定义一个自我定义的条目,指定 platformid 属性,以便 PWA 可以在同一范围内检查它是否已在底层平台上安装。
    • 在 PWA 范围之外的应用检查它是否在 Android 上安装时,在其/.well-known/目录中放置一个 assetlinks.json 文件。

有关如何处理这些情况的更多详细信息,请参阅您的应用已安装吗?getInstalledRelatedApps() 会告诉您!

注意:在大多数支持的浏览器中,当检测到可安装的 PWA 时,它们会提供自己的安装 UI,如果 PWA 已安装,则不会显示该 UI — 请参阅使 PWA 可安装 > 从 Web 安装。这可以通过 beforeinstallprompt 事件来抑制,该事件也可以与 getInstalledRelatedApps() 结合使用,以基于特定于平台的应用程序是否可用而抑制该事件。有关更多有用信息,请参阅从 PWA 触发安装

语法

js
getInstalledRelatedApps()

参数

无。

返回值

一个Promise,它会解析为一个对象数组,代表任何已安装的相关应用。每个对象可以包含以下属性:

id 可选

一个字符串,表示在指定平台上用于表示应用程序的 ID。字符串的确切形式因平台而异。

platform

一个字符串,表示相关应用程序所属的平台(生态系统或操作系统)。这可以是:

url 可选

一个字符串,表示与该应用关联的 URL。这通常是您可以阅读有关该应用信息并安装它的地方。

version 可选

一个字符串,表示相关应用的版本。

相关应用信息必须已在调用 Web 应用的 清单文件related_applications 成员中预先指定。

异常

InvalidStateError DOMException

未在顶层浏览上下文调用该方法。

示例

js
const relatedApps = await navigator.getInstalledRelatedApps();

// Dump all the returned related apps into a table in the console
console.table(relatedApps);

// Search for a specific installed platform-specific app
const psApp = relatedApps.find((app) => app.id === "com.example.myapp");

if (psApp && doesVersionSendPushMessages(psApp.version)) {
  // There's an installed platform-specific app that handles sending push messages
  // No need to handle this via the web app
  return;
}

注意:在此示例中,doesVersionSendPushMessages() 是一个由开发者定义的理论函数;它不是由浏览器提供的。

规范

规范
获取已安装的相关应用 API
# dom-navigator-getinstalledrelatedapps

浏览器兼容性

另见