Pakiety WebAPK na Androidzie

Gdy użytkownik doda Twoją progresywną aplikację internetową do ekranu głównego na Androidzie, Chrome automatycznie wygeneruje plik APK, który czasami nazywamy plikiem WebAPK. Instalacja za pomocą pliku APK umożliwia wyświetlanie aplikacji w programie uruchamiającym, w ustawieniach aplikacji na Androidzie oraz rejestrowanie zestawu filtrów intencji.

Instalowanie PWA na Androidzie to coś więcej niż dodanie progresywnej aplikacji internetowej do ekranu głównego użytkownika. Chrome automatycznie generuje i instaluje specjalny plik APK Twojej aplikacji. Czasami nazywamy go WebAPK. Instalacja za pomocą pliku APK umożliwia wyświetlanie aplikacji w programie uruchamiającym, w ustawieniach aplikacji na Androidzie oraz rejestrowanie zestawu filtrów intencji.

Aby wygenerować WebAPK, Chrome sprawdza plik z manifestem aplikacji internetowej i inne metadane. Gdy wykryjemy aktualizację pliku manifestu, Chrome będzie musiał wygenerować nowy plik APK.

Filtry intencji na Androida

Gdy progresywna aplikacja internetowa zostanie zainstalowana na urządzeniu z Androidem, zarejestruje zestaw filtrów intencji dla wszystkich adresów URL w zakresie aplikacji. Gdy użytkownik kliknie link, który znajduje się w zakresie aplikacji, aplikacja otworzy się, a nie otworzy się w karcie przeglądarki.

Rozważ tę część manifest.json:

"start_url": "/",
"display": "standalone",

Gdy aplikacja internetowa korzystająca z tej funkcji zostanie uruchomiona z menu aplikacji, otworzy się jako samodzielna aplikacja bez żadnego paska przeglądarki.https://example.com/

Plik WebAPK zawiera te filtry intencji:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data
    android:scheme="https"
    android:host="example.com"
    android:pathPrefix="/" />
</intent-filter>

Jeśli użytkownik kliknie w zainstalowanej aplikacji link do https://example.com/read, zostanie on przechwycony przez intencję i otwarty w aplikacji Progressive Web.

Używanie scope do ograniczania filtrów intencji

Jeśli nie chcesz, aby aplikacja Progressive Web obsługiwała wszystkie adresy URL w Twojej witrynie, możesz dodać do pliku manifestu aplikacji internetowej właściwość scope. Właściwość scope informuje Androida, aby otwierał Twoją aplikację internetową tylko wtedy, gdy adres URL pasuje do origin + scope. Dzięki temu możesz kontrolować, które adresy URL będą obsługiwane przez aplikację, a które powinny być otwierane w przeglądarce. Jest to przydatne, gdy aplikacja i inne treści niebędące aplikacjami znajdują się w tej samej domenie.

Rozważ tę część manifest.json:

"scope": "/app/",
"start_url": "/app/",
"display": "standalone",

Po uruchomieniu z menu z aplikacjami https://example.com/app/ jako samodzielna aplikacja bez elementów przeglądarki.

Podobnie jak wcześniej wygenerowany plik WebAPK będzie zawierał filtr intencji, ale z innym atrybutem android:pathPrefix w sekcji AndroidManifest.xml pliku APK:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data
    android:scheme="https"
    android:host="example.com"
    android:pathPrefix="/app/" />
</intent-filter>

Przyjrzyjmy się kilku przykładom:

Tak

https://example.com/app/ w: /app/

Tak

https://example.com/app/read/book – w: /app/

Nie

https://example.com/help/ – nie w /app/

Nie

https://example.com/about/ – nie w /app/

Więcej informacji o scope, tym, co się dzieje, gdy nie ustawisz tego parametru, i o tym, jak możesz go użyć do określenia zakresu aplikacji, znajdziesz w artykule scope.

Zarządzanie uprawnieniami

Uprawnienia działają tak samo jak w przypadku innych aplikacji internetowych i nie można ich żądać w momencie instalacji. Zamiast tego należy je żądać w czasie wykonywania kodu, najlepiej tylko wtedy, gdy są naprawdę potrzebne. Na przykład nie proś o dostęp do aparatu przy pierwszym wczytaniu, ale poczekaj, aż użytkownik spróbuje zrobić zdjęcie.

Zarządzanie miejscem na dane i stanem aplikacji

Mimo że progresywna aplikacja internetowa jest instalowana za pomocą pliku APK, Chrome używa bieżącego profilu do przechowywania wszystkich danych i nie będzie ich oddzielać. Umożliwia to udostępnianie danych między przeglądarką a zainstalowaną aplikacją. Pliki cookie są udostępniane i aktywne, wszystkie pamięci po stronie klienta są dostępne, a serwer worker jest zainstalowany i gotowy do działania.

Aktualizowanie pliku WebAPK

Informacje o tym, jak aktualizować plik WebAPK, zostały przeniesione do artykułu Jak Chrome obsługuje aktualizacje pliku manifestu aplikacji internetowej.

Najczęstsze pytania

Jakie ikony są używane do generowania ekranu powitalnego? :
Zalecamy przesłanie co najmniej 2 ikon: 192 pikseli i 512 pikseli na ekranie powitalnym. Otrzymaliśmy od Was informację, że ikony na ekranie powitalnym są za małe. Aplikacje WebAPK wygenerowane w Chrome 71 lub nowszej wersji będą wyświetlać większą ikonę na ekranie powitalnym. Nie musisz nic robić, o ile tylko używasz zalecanych ikon.
Co się stanie, jeśli użytkownik ma już zainstalowaną natywną aplikację witryny?
Podobnie jak w przypadku funkcji „Dodaj do ekranu głównego” użytkownicy będą mogli dodawać strony niezależnie od tego, z jakiej natywnej aplikacji korzystają. Jeśli oczekujesz, że użytkownicy zainstalują obie wersje, zalecamy odróżnienie ikony lub nazwy witryny od natywnej aplikacji.
Czy pamięć zainstalowanej witryny zostanie wyczyszczona, jeśli użytkownik wyczyści pamięć podręczną Chrome?
Tak.
Czy po otrzymaniu nowego urządzenia aplikacja zostanie ponownie zainstalowana?
Obecnie nie, ale uważamy, że jest to ważny obszar, i badamy możliwości jego wdrożenia.
Jak są obsługiwane uprawnienia? Czy zobaczymy prośbę w Chrome czy na Androidzie?
Uprawnieniami nadal będzie można zarządzać w Chrome. Użytkownicy będą widzieć w Chrome prośby o przyznanie uprawnień i będą mogli je edytować w ustawieniach Chrome.
W których wersjach Androida będzie działać?
Progresywne aplikacje internetowe można instalować we wszystkich wersjach Androida, na których działa Chrome na Androida, zwłaszcza Jelly Bean i nowszych.
Czy używa ona WebView?
Nie, strona otwiera się w wersji Chrome, z której użytkownik dodał stronę.
Czy możemy przesłać utworzone pliki APK do Sklepu Play?
Nie. Jeśli chcesz przesłać własny plik APK, zapoznaj się z zaufanymi działaniami w internecie.
Czy są one dostępne w Sklepie Play?
Nie. Jeśli chcesz przesłać własny pakiet APK, aby umieścić go w Sklepie Play, zapoznaj się z informacjami na temat zaufanych działań w internecie.
Jestem twórcą innej przeglądarki na Androida. Czy mogę skorzystać z tego procesu instalacji? :
Pracujemy nad rozwiązaniem tego problemu. Chcemy udostępnić tę funkcję wszystkim przeglądarkom na Androida. Wkrótce podamy więcej informacji.