related_applications 与 prefer_related_applications
发布于
一句话: related_applications 是一个数组,指向与你的 Web 应用相关的平台特定应用
——每个条目需要一个 platform,以及 url 和/或 id;布尔值
prefer_related_applications(省略时行为与 false 相同)则提示浏览器是否要改为提供其中一个相关
应用,而不是 Web 应用本身。
related_applications
Section titled “related_applications”MDN 将其描述为“用于指定一个或多个与你的 Web 应用相关的应用。这些可以是平台特定的应
用,也可以是渐进式 Web 应用”。每个条目都是一个对象,“必须包含 platform 属性,以及
url 或 id(或两者都有)”:
platform—— 标识应用所在位置的字符串。文档给出的示例包括amazon(Amazon App Store)、play(Google Play Store)、windows(Windows Store)以及webapp(用于渐进式 Web 应用)。url(可选)—— 可找到该平台特定应用的 URL。若省略,则必须提供id。id(可选)—— 在指定平台上代表该应用的 ID。若省略,则必须提供url。
"related_applications": [ { "platform": "play", "url": "https://play.google.com/store/apps/details?id=com.example.app1", "id": "com.example.app1" }, { "platform": "windows", "url": "https://apps.microsoft.com/store/detail/example-app1/9WZDNCRFHVJL" }]webapp 平台的条目可以指向 PWA 自身:
"related_applications": [ { "platform": "webapp", "id": "com.example.app1" }]MDN 还指出这种关联是单向的——“原生应用无需反过来引用你的 Web 应用”——并且这份数据支
撑了 Navigator.getInstalledRelatedApps(),让你的 Web 应用可以检测设备上是否已安装
某个平台特定版本,或已安装 Web 应用本身。
prefer_related_applications
Section titled “prefer_related_applications”这个布尔值“为浏览器提供一个提示,说明是否倾向于安装 related_applications 中指定的
原生应用,而非你的 Web 应用”。据 MDN 所述:
true—— 浏览器可能会提示用户安装related_applications中的某一项,而不是 Web 应用。false或省略 —— 浏览器倾向于安装 Web 应用,而非相关的原生应用。
{ "prefer_related_applications": true, "related_applications": [ { "platform": "play", "id": "com.example.hiking-app" } ]}MDN 标注了一个 Chromium 特有的行为:“对于基于 Chromium 的浏览器,应将
prefer_related_applications 设为 false 或省略,才能让你的 Web 应用可安装。”
MDN 将这两个成员都标注为实验性且有限可用(“因为在部分最广泛使用的浏览器中 不可用,所以不属于 Baseline”),依据的是 Manifest Incubations 规范。
- 为每个
related_applications条目提供platform,以及url/id中的至少 一项。 - 如果希望
getInstalledRelatedApps()能检测到 Web 应用本身,添加一个指向你自 己 PWA 的webapp平台条目。 - 对基于 Chromium 的浏览器,MDN 建议将
prefer_related_applications设为false(或直接省略),以便让你的 Web 应用可安装。 - 在生产环境依赖这两个成员之前,先查看当前的浏览器支持情况——MDN 将二者都标记为 实验性且有限可用。