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

瀏覽器相容性

另見