網頁應用程式範圍擴充功能

自 Chrome 122 起,您可以訂閱 scope_extensions 應用程式資訊清單成員的來源試用版,讓控制多個子網域和頂層網域的網站以單一網路應用程式呈現。本文件說明 Chrome 團隊推出這項功能的原因,以及您可能想使用這項功能的時間。

總覽

有些網頁應用程式具有多個來源,例如 example.com 是主要應用程式,然後是 space_1.example.com、…、space_n.example.com,有時會與 special-example.com 結合,做為主要應用程式下的子體驗。這類網站架構在漸進式網頁應用程式的情況下有其影響。限制包括無法跨來源共用服務工作者、任何類型的裝置、本機儲存空間和權限。此外,獨立 PWA 中的跨原點導覽會顯示視窗 UI (「超出範圍」列),表示使用者已離開 PWA 體驗。如要瞭解如何解決部分問題,請參閱「多原點網站中的漸進式網頁應用程式」和「在同一個網域中建構多個漸進式網頁應用程式」兩篇文章。

有了範圍擴充 API,網頁應用程式就能克服 同源政策對這類網站架構所造成的部分挑戰。這項功能可讓網頁應用程式將範圍擴大至其他來源,以便在網頁應用程式的主要來源和相關來源之間達成協議,進而提供統一的使用體驗。

目標

範圍擴充功能 API 的主要目標,是讓控制多個子網域和頂層網域的網站,在網頁應用程式 UI 和連結擷取作業中,以單一連續網頁應用程式的方式運作。舉例來說,讓跨越 example.com.co.uksupport.example.com 的網站 example.com 盡可能以單一網站應用程式運作。

顯示主要 PWA 和相關子體驗的圖表。

範圍擴充功能可讓多來源 PWA 在網頁應用程式 UI 方面,以連續網頁應用程式的形式運作。

實際上,這會轉化為兩個更具體的目標:

  • 跨來源導覽:讓使用者在相關來源之間導覽,同時不會中斷使用者體驗,方法是叫用視窗 UI,通知使用者他們正在離開 PWA。
  • 跨原始資料連結擷取:允許網路應用程式擷取使用者前往相關網站的瀏覽記錄。

跨來源範圍內導覽

根據預設,當使用者在獨立 PWA 中瀏覽不同來源時,系統會顯示視窗 UI,指出他們已離開 PWA 體驗。在 Chrome 中,這個 UI 包含一個「超出範圍」列,其中包含新來源的網址。這會影響使用者體驗,因為使用者預期會繼續在相同的應用程式內容中瀏覽,但可能會誤以為已離開該內容。

獨立 PWA 頂端的超出範圍列。

使用者在獨立 PWA 中瀏覽不同來源時,Chrome 顯示的「超出範圍」列。

使用範圍擴充功能後,使用者瀏覽任何相關來源時,系統就不會顯示視窗 UI,因此 PWA 會以統一體驗呈現。

連結擷取是指應用程式在其範圍內擷取連結的能力。實作方式會因瀏覽器和作業系統而異。舉例來說,在 ChromeOS 上的 Chrome 中,安裝 PWA 範圍內的連結預設會開啟瀏覽器分頁,並在網址列中顯示有應用程式可處理這些連結,讓使用者選擇啟用自動連結擷取功能。

已安裝 PWA 的 Omnibar 提示。

ChromeOS 中分頁的 Chrome 網址列片段,顯示連結可由 PWA 處理的視覺指示,以及記住該決定的選項。

如果使用者點選的連結不在 PWA 範圍內 (包括子網域或頂層網域的連結),系統就不會將該連結視為屬於 PWA。舉例來說,連結會在瀏覽器分頁中開啟,但不會向使用者顯示有哪些應用程式可處理連結。範圍擴充功能 API 可讓您擴大 PWA 的範圍,以便將相關聯的來源視為範圍內的連結。

實作

實作範圍擴充功能時,必須在主要來源和相關聯的來源之間建立關係。

宣告相關來源清單

scope_extensions 網頁應用程式資訊清單成員新增至主要 PWA 來源,讓網頁應用程式將範圍擴大至其他來源。

Web 應用程式資訊清單 (https://example.com)

{
  "name": "Example",
  "display": "standalone",
  "start_url": "/index.html",
  "scope_extensions": [
    { "origin": "https://*.example.com" },
    { "origin": "https://example.co.uk" },
    { "origin": "https://*.example.co.uk" }
  ]
}

確認關聯

每個列出的來源都會使用 /.well-known/web-app-origin-association 設定檔,確認與網頁應用程式的關聯。這個檔案必須命名為 web-app-origin-association,並且在這個確切位置提供,因為這是已知 URI

/.well-known/web-app-origin-association (相關來源)

{
  "web_apps": [{ "web_app_identity": "https://example.com" }]
}

示範

這個示範包含兩個網站:

如要執行下列測試,您必須啟用 about://flags/#enable-desktop-pwas-scope-extensions 標記 (適用於 Chrome 115 以上版本)。

測試跨來源導覽

在執行這些測試之前,請在瀏覽器中開啟主要 PWA,並以 PWA 形式安裝,然後開啟並以獨立模式執行。PWA 包含指向擴大範圍的來源未在擴大範圍內的來源的連結。

主要 PWA 視窗,內含範圍內和延伸範圍的連結。

示範 PWA,其中包含延伸範圍中的來源連結,以及不在延伸範圍中的來源。

預設跨來源導覽 (不在擴充範圍內)

  1. 在全螢幕 PWA 中,點選不在擴充範圍內的來源連結。
  2. 因此,系統會執行導覽,並顯示超出範圍的列。

點選範圍外連結後,主 PWA 視窗會顯示範圍外列。

在獨立模式下,系統預設會針對 PWA 的跨來源導覽顯示「超出範圍」列。

使用範圍擴充功能的跨來源導覽 (在擴充範圍內)

  1. 返回 PWA 的首頁。
  2. 按一下 不在擴充範圍內的來源連結。
  3. 根據預設,系統應顯示「超出範圍」列,但由於 Scope Extensions 關聯,因此並未顯示。

點選擴充範圍連結後,主 PWA 視窗中沒有超出範圍的列。

使用範圍擴充功能建立來源關聯後,跨來源導覽中不會顯示「超出範圍」列。

  1. 在 ChromeOS 裝置上開啟及安裝主要 PWA
  2. 按一下下列連結:相關聯的來源
  3. 連結會在新瀏覽器分頁中開啟,並顯示提示,說明如何在已安裝的 PWA 中開啟連結。

針對已安裝的 PWA 顯示全方位列提示,範圍已擴大。

點選 PWA 相關聯來源的連結時,系統會在新分頁中開啟連結,並顯示「在應用程式中開啟」圖示,讓使用者選擇啟用自動連結擷取功能。

來源試用

如果您想在實際環境中使用真實使用者測試應用程式中的這個 API,可以使用來源試用版進行測試。透過原點測試,您可以取得與網域相關聯的測試權杖,讓使用者試用實驗功能。接著,您可以部署應用程式,並預期應用程式可在支援您要測試的功能的瀏覽器中運作 (在本例中,Chrome 121 到 126 版皆支援這項功能)。如要取得自己的權杖,以便執行原始試用版,請填寫申請表單

意見回饋

Chrome 團隊希望能針對這項 API 的實用性提供意見回饋。如要協助團隊根據這項 API 的實用性和目前版本未涵蓋的新用途,提供意見回饋,請開啟 GitHub 上的問題

其他資源

特別銘謝

特別感謝開發此 API 的團隊。範圍擴充功能是由 Alan CutterLu Huang 指定,並參考 Matt Giuca 的意見。這個 API 由 Google Chrome 的 Alan Cutter 和 Microsoft Edge 的 Hassan TalatKristin LeeLu Huang 共同實作。