Navigator: getInstalledRelatedApps() 方法
getInstalledRelatedApps() 方法返回一個 Promise,該 Promise 解析為一個物件陣列,這些物件表示使用者已安裝的任何相關的特定於平臺的應用程式或漸進式 Web 應用 (PWA)。這可用於內容個性化,例如,如果特定於平臺的應用程式和/或 PWA 已安裝,則從 Web 應用中刪除“安裝我們的應用”橫幅。
描述
getInstalledRelatedApps() 可用於檢查通用 Windows 平臺 (UWP) 應用、Android 應用和與呼叫此方法的 Web 應用相關的 PWA 是否已安裝。
要將呼叫 Web 應用與特定於平臺的應用程式或 PWA 相關聯,必須執行兩項操作:
- 呼叫 Web 應用必須在其清單檔案的
related_applications成員中進行指定。 - 特定於平臺的應用程式或 PWA 必須定義與呼叫應用的關係。
關係的定義方式因應用型別而異:
- Android 應用透過數字資產連結系統完成此操作。
- Windows UWP 應用透過URI 處理程式完成此操作。
- PWA 透過以下方式完成此操作:
- 在其自身的
related_applications清單成員中定義一個自我定義的條目,指定platform和id屬性,以便 PWA 可以在同一範圍內檢查它是否已在底層平臺上安裝。 - 在 PWA 範圍之外的應用檢查它是否在 Android 上安裝時,在其
/.well-known/目錄中放置一個assetlinks.json檔案。
- 在其自身的
有關如何處理這些情況的更多詳細資訊,請參閱您的應用已安裝嗎?getInstalledRelatedApps() 會告訴您!。
注意:在大多數支援的瀏覽器中,當檢測到可安裝的 PWA 時,它們會提供自己的安裝 UI,如果 PWA 已安裝,則不會顯示該 UI — 請參閱使 PWA 可安裝 > 從 Web 安裝。這可以透過 beforeinstallprompt 事件來抑制,該事件也可以與 getInstalledRelatedApps() 結合使用,以基於特定於平臺的應用程式是否可用而抑制該事件。有關更多有用資訊,請參閱從 PWA 觸發安裝。
語法
getInstalledRelatedApps()
引數
無。
返回值
一個Promise,它會解析為一個物件陣列,代表任何已安裝的相關應用。每個物件可以包含以下屬性:
id可選-
一個字串,表示在指定平臺上用於表示應用程式的 ID。字串的確切形式因平臺而異。
platform-
一個字串,表示相關應用程式所屬的平臺(生態系統或作業系統)。這可以是:
"chrome_web_store":一個Google Chrome 應用商店應用。"play":一個Google Play 商店應用。"chromeos_play":一個ChromeOS Play應用。"webapp":一個漸進式 Web 應用。"windows":一個Windows 應用商店應用。"f-droid":一個F-Droid應用。"amazon":一個Amazon App Store應用。
url可選-
一個字串,表示與該應用關聯的 URL。這通常是您可以閱讀有關該應用資訊並安裝它的地方。
version可選-
一個字串,表示相關應用的版本。
相關應用資訊必須已在呼叫 Web 應用的 清單檔案的 related_applications 成員中預先指定。
異常
InvalidStateErrorDOMException-
未在頂層瀏覽上下文呼叫該方法。
示例
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 |
瀏覽器相容性
載入中…