Rozszerzenia zakresu aplikacji internetowych

W Chrome 122 możesz zasubskrybować wersję próbną dla dostawców treści w ramach elementu manifestu aplikacji scope_extensions, który umożliwia prezentowanie witryn zarządzających wieloma subdomenami i domenami najwyższego poziomu jako pojedynczej aplikacji internetowej. W tym dokumencie wyjaśniamy, dlaczego zespół Chrome wprowadza tę funkcję i kiedy warto z niej korzystać.

Omówienie

Niektóre aplikacje internetowe mają wiele źródeł, na przykład example.com jako aplikacja główna, a potem space_1.example.com, …, space_n.example.com, czasami połączone z special-example.com, jako podfunkcje, wszystkie w ramach aplikacji głównej. Ten typ architektury witryny ma znaczenie w kontekście progresywnych aplikacji internetowych. Ograniczenia obejmują brak możliwości udostępniania usług, urządzeń, pamięci lokalnej i uprawnień w różnych źródłach. Ponadto w przypadku nawigacji między domenami w samodzielnej aplikacji internetowej PWA wyświetla się okno (pasek „poza zakresem”), co oznacza, że użytkownik opuścił środowisko aplikacji internetowej PWA. Sposoby obejścia niektórych z tych problemów znajdziesz w artykułach Progresywne aplikacje internetowe w witrynach wieloźródłowychTworzenie wielu progresywnych aplikacji internetowych w tej samej domenie.

Interfejs Scope Extensions API umożliwia aplikacjom internetowym przezwyciężenie niektórych problemów, które zasada dotycząca tego samego źródła narzuca na tego typu architekturę witryny. Umożliwia ona aplikacjom internetowym rozszerzenie zakresu na inne źródła, aby zapewnić spójne działanie, o ile istnieje zgodność między źródłem głównym aplikacji internetowej a powiązanymi źródłami.

Cele

Głównym celem interfejsu Scope Extensions API jest umożliwienie witrynom, które kontrolują wiele subdomen i domen najwyższego poziomu, zachowywanie się jak jedna spójna aplikacja internetowa, jeśli chodzi o interfejs użytkownika aplikacji internetowej i przechwytywanie linków. Na przykład umożliwienie witrynie example.com, która obejmuje example.com.co.uksupport.example.com, działania jak najbardziej jak jedna aplikacja internetowa.

Diagram przedstawiający główną PWA i powiązane subdoświadczenia

Rozszerzenia zakresu umożliwiają, aby aplikacje PWA z wielu źródeł działały jak ciągła aplikacja internetowa pod względem interfejsu użytkownika.

W praktyce przekłada się to na 2 bardziej szczegółowe cele:

  • Nawigacja między domenami: umożliwia użytkownikom poruszanie się po powiązanych domenach bez zakłócania wrażeń użytkownika przez wywołanie okna z interfejsem użytkownika informującego o opuszczeniu aplikacji internetowej.
  • Rejestrowanie linków z innych witryn: zezwalaj aplikacjom internetowym na rejestrowanie przejścia użytkownika do witryn powiązanych.

Nawigacja objęta zakresem w ramach domen

Domyślnie, gdy użytkownicy przechodzą między źródłami w samodzielnej aplikacji PWA, wyświetla się im okno z interfejsem, które informuje, że opuszczają środowisko aplikacji PWA. W Chrome interfejs ten składa się z paska „poza zakresem”, który zawiera adres URL nowej domeny. Wpływa to negatywnie na wrażenia użytkowników, ponieważ oczekują oni, że będą mogli kontynuować nawigację w tym samym kontekście aplikacji, ale mogą mieć wrażenie, że aplikacja została zamknięta.

Pasek „Out of scope” (poza zakresem) u góry samodzielnej aplikacji internetowej.

Pasek „poza zakresem” wyświetlany w Chrome, gdy użytkownicy przechodzą między różnymi źródłami w samodzielnej aplikacji PWA.

Dzięki rozszerzeniom zakresu interfejs okna nie będzie wyświetlany, gdy użytkownicy będą przechodzić do dowolnego powiązanego źródła, dzięki czemu PWA będzie prezentować się jako jednolita usługa.

Przechwytywanie linków to zdolność aplikacji do przechwytywania linków w jej zakresie. Sposób implementacji różni się w zależności od przeglądarki i systemu operacyjnego. W Chrome na ChromeOS na przykład linki w zakresie zainstalowanej PWA domyślnie otwierają kartę przeglądarki z oznaczeniem na pasku adresu, że jest aplikacja, która może obsługiwać te linki. Użytkownik może od tego momentu włączyć automatyczne przechwytywanie linków.

Prośba w pasku wielofunkcyjnym dotycząca zainstalowanej aplikacji PWA

Fragment paska adresu Chrome na karcie w ChromeOS pokazujący wizualny wskaźnik, że link może być obsługiwany przez PWA, oraz opcję zapamiętania tej decyzji

Jeśli użytkownik kliknie link, który wykracza poza zakres PWA (w tym linki do subdomen lub domen najwyższego poziomu), nie zostanie on uznany za użytkownika PWA. Na przykład linki będą otwierane na karcie przeglądarki bez żadnej informacji dla użytkownika, że istnieje aplikacja, która może obsłużyć link. Interfejs API rozszerzeń zakresu umożliwia rozszerzenie zakresu aplikacji internetowej, aby powiązane źródła były traktowane jako linki w zakresie.

Implementacja

Wdrożenie rozszerzeń zakresu wymaga ustanowienia relacji między głównym źródłem a powiązanymi źródłami.

Deklarowanie listy powiązanych źródeł

Dodaj do głównego źródła PWA element scope_extensions pliku manifestu aplikacji internetowej, aby umożliwić jej rozszerzenie zakresu na inne źródła.

Manifest aplikacji internetowej (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" }
  ]
}

Potwierdzenie powiązań

Każda z wymienionych usług potwierdza powiązanie z aplikacją internetową za pomocą pliku konfiguracyjnego /.well-known/web-app-origin-association. Plik musi mieć nazwę web-app-origin-association i być wyświetlany dokładnie w tej lokalizacji, ponieważ jest to znany identyfikator URI.

/.well-known/web-app-origin-association (powiązany origin)

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

Prezentacja

Demonstracja składa się z 2 witryn:

Aby wykonać te testy, musisz włączyć flagę about://flags/#enable-desktop-pwas-scope-extensions (dostępną od wersji Chrome 115).

Testowanie nawigacji między domenami

Aby przeprowadzić te testy, otwórz główną aplikację PWA w przeglądarce, zainstaluj ją jako PWA i otwórz, aby uruchomić ją w trybie samodzielnym. PWA zawiera linki do źródła o rozszerzonym zakresie i do źródła o nierozszerzonym zakresie.

Główne okno PWA z linkami w zakresie i z rozszerzonym zakresem

Demonstracyjna PWA z linkami do punktu początkowego w rozszerzonym zakresie i bez niego.

Domyślna nawigacja między domenami (nie w rozszerzonym zakresie)

  1. W PWA na pełnym ekranie kliknij link do źródła, które nie jest w rozszerzonym zakresie.
  2. W efekcie następuje nawigacja i wyświetla się pasek poza zakresem.

Główne okno PWA z paskiem „Poza zakresem” po kliknięciu linku poza zakresem.

Pasek „Poza zakresem” wyświetlany domyślnie w przypadku nawigacji między domenami w przypadku PWA w trybie samodzielnym.

Nawigacja między domenami za pomocą rozszerzeń zakresu (w rozszerzonym zakresie)

  1. Wróć na stronę główną PWA.
  2. Kliknij link do źródła, które nie jest objęte rozszerzonym zakresem.
  3. Domyślnie powinien się wyświetlać pasek „Wyjście poza zakres”, ale nie jest to możliwe z powodu powiązania rozszerzeń z zakresem.

Główne okno PWA bez paska poza zakresem po kliknięciu linku do rozszerzonego zakresu.

Pasek „Poza zakresem” nie jest wyświetlany w nawigacji między domenami po powiązaniu źródła za pomocą rozszerzeń zakresu.

  1. Na urządzeniu z ChromeOS otwórz i zainstaluj główną PWA.
  2. Kliknij ten link: powiązany punkt początkowy.
  3. Link otworzy się w nowej karcie przeglądarki, a na ekranie wyświetli się prośba o otworzenie go w zainstalowanej aplikacji PWA.

Prośba w pasku wielofunkcyjnym dotycząca zainstalowanej aplikacji PWA o rozszerzonym zakresie.

Kliknięcie linku do powiązanego źródła aplikacji internetowej powoduje otwarcie linku w nowej karcie i wyświetlenie ikony „Otwórz w aplikacji”, która umożliwia użytkownikowi włączenie automatycznego przechwytywania linków.

Wersja próbna origin

Jeśli chcesz przetestować ten interfejs API w swojej aplikacji w warunkach rzeczywistych z udziałem prawdziwych użytkowników, możesz to zrobić w ramach testowania origin. Testy Origin umożliwiają wypróbowanie eksperymentalnych funkcji przez użytkowników. Aby to zrobić, musisz uzyskać token testowy powiązany z Twoją domeną. Następnie możesz wdrożyć aplikację i oczekiwać, że będzie działać w przeglądarce, która obsługuje testowaną funkcję (w tym przypadku jest to Chrome w wersjach od 121 do 126). Aby uzyskać własny token na potrzeby testowania pochodzenia, wypełnij formularz zgłoszeniowy.

Prześlij opinię

Zespół Chrome czeka na opinie na temat przydatności tego interfejsu API. Aby pomóc zespołowi ulepszać ten interfejs API, prześlij opinię na temat jego przydatności i nowych przypadków użycia, które nie są objęte obecną wersją. Aby to zrobić, otwórz problem na GitHubie.

Dodatkowe materiały

Podziękowania

Szczególne podziękowania dla zespołu, który opracował ten interfejs API. Rozszerzenia zakresu zostały określone przez Alana CutteraLu Huang z udziałem Matta Giucy. Interfejs API został wdrożony przez Alana Cuttera z Google Chrome oraz Hassana Talata, Kristin LeeLu Huang z Microsoft Edge.