Przeglądarki w aplikacjach zapewniają użytkownikom pełne możliwości przeglądania internetu bez konieczności opuszczania aplikacji. Android oferuje 2 główne interfejsy API do implementacji przeglądarek w aplikacjach: Karty niestandardowe i komponenty WebView. Używaj przeglądarki w aplikacji, gdy masz link lub reklamę prowadzącą do strony internetowej. Możesz otworzyć tę stronę bezpośrednio w aplikacji, jak pokazano na rysunku 1.
Wybór między kartami niestandardowymi a komponentami WebView to ważna decyzja architektoniczna, która wpływa na szybkość programowania, wrażenia użytkowników i zakres kontroli nad interfejsem.
Szybkie porównanie
W podjęciu decyzji, które narzędzie najlepiej odpowiada Twoim potrzebom, pomoże Ci ta tabela:
| Funkcja | WebView | Karty niestandardowe |
|---|---|---|
| Główny przypadek użycia | tworzenie aplikacji hybrydowych, w których treści internetowe są główną lub dodatkową zawartością, wyświetlanie reklam displayowych, kampanii promujących aplikację lub stron z warunkami korzystania z usługi; | wyświetlanie treści z zewnętrznych witryn (np. artykułów prasowych lub stron produktów); |
| Element sterujący interfejsu | Pełny Jest to komponent View, który możesz umieścić w dowolnym miejscu. Masz kontrolę nad całym interfejsem. |
Ograniczone. Możesz zmienić kolor paska narzędzi i dodać kilka działań niestandardowych. |
| Dane i sesje | W piaskownicy. Nie udostępnia plików cookie ani danych logowania głównej przeglądarce użytkownika. | Udostępniono. Korzysta z domyślnej sesji przeglądarki użytkownika, w tym z plików cookie i zapisanych haseł. |
| Most między aplikacją natywną a internetową | Tak. Most JavaScriptu umożliwia głęboką, dwukierunkową komunikację między treściami z internetu a kodem aplikacji natywnej. | Ograniczone. Do przekazywania podstawowych ciągów znaków możesz używać metody window.postMessage(). |
| Wysiłek dewelopera | Wysoki. Musisz samodzielnie zarządzać cyklem życia, nawigacją i wydajnością. | Niska Możesz ją wdrożyć za pomocą kilku linijek kodu. |
WebView
WebView to widok, który sprawia, że strony internetowe stają się integralną częścią układu aplikacji. Jest to zaawansowane rozwiązanie, ale nieco bardziej skomplikowane w obsłudze niż karty niestandardowe.
WebView może wczytywać zdalne lub lokalne treści z internetu, wykonywać kod JavaScript i umożliwiać dwukierunkową komunikację między treściami z internetu a kodem aplikacji natywnej. Więcej informacji o możliwościach WebView znajdziesz w artykule Co potrafi WebView.
Możesz też użyć WebView, aby udostępnić aplikację internetową lub wyświetlić stronę internetową w aplikacji, np. umowę użytkownika, którą musisz okresowo aktualizować. Więcej informacji znajdziesz w artykule Tworzenie aplikacji internetowych w komponencie WebView.
Dlaczego warto wybrać WebView
Oto kilka scenariuszy, w których WebView jest dobrym rozwiązaniem:
- Aplikacje hybrydowe: tworzysz aplikację, w której treści z internetu i komponenty natywne (np. pasek nawigacyjny lub pływający przycisk polecenia) występują obok siebie.
- Treści własne: treści z internetu są podstawową, interaktywną częścią wrażeń użytkownika aplikacji, np. edytorem dokumentów lub obszarem roboczym do projektowania.
- Pełna kontrola nad interfejsem: musisz zmodyfikować zawartość samej strony internetowej lub nałożyć na nią natywne elementy interfejsu.
- Szczegółowe statystyki: potrzebujesz szczegółowych informacji o zaangażowaniu i aktywności użytkowników w komponencie WebView.
Najważniejsze kompromisy
Oto kilka kluczowych kwestii, które należy wziąć pod uwagę podczas korzystania z WebView:
- Wydajność: WebView może wymagać dużej ilości pamięci. Jeśli nie będziesz nim ostrożnie zarządzać, możesz napotkać problemy z wydajnością lub błędy typu „Aplikacja nie odpowiada” (ANR).
- Bezpieczeństwo i konserwacja: odpowiadasz za zwiększanie bezpieczeństwa i zarządzanie cyklem życia. Obejmuje to zarządzanie zachowywaniem stanu podczas ponownego tworzenia procesu za pomocą
WebViewCompat.saveState()i przestrzeganie limitu transakcji zapisanego stanu Androida wynoszącego 1 MB. Aktualizacje WebView są jednak udostępniane na całym świecie przez Google Play, więc nie musisz się martwić, że silnik stanie się nieaktualny.
Karty niestandardowe
Karty niestandardowe to świetny sposób na kierowanie użytkowników do zewnętrznych adresów URL, ponieważ zapewniają szybkie, bezpieczne i przyjazne dla użytkownika okno przeglądarki, które otwiera się nad aplikacją.
Dlaczego warto wybrać karty niestandardowe
Oto kilka sytuacji, w których karty niestandardowe są dobrym rozwiązaniem:
- Linki zewnętrzne: gdy użytkownik kliknie link do witryny, która nie należy do Ciebie, karty niestandardowe utrzymują go w kontekście aplikacji, zapewniając jednocześnie przeglądarkę z pełną funkcjonalnością.
- Łatwość integracji: to najprostszy sposób na uruchomienie osadzonej usługi internetowej.
- Udostępniony stan: ponieważ udostępnia pliki cookie domyślnej przeglądarce użytkownika, użytkownicy nie muszą ponownie logować się w witrynach, które już odwiedzili.
- Logowanie przez usługę zewnętrzną: dobrze sprawdzają się w procesach logowania przez usługę zewnętrzną (np. „Zaloguj się przez Google” lub „Zaloguj się przez Facebooka”), ponieważ przeglądarka bezpiecznie obsługuje dane logowania.
Chociaż większość przeglądarek obsługuje karty niestandardowe, niektóre oferują więcej opcji dostosowywania niż inne. Więcej informacji znajdziesz w sekcji Obsługa przeglądarek.
Używanie treści z internetu w Jetpack Compose
Podczas tworzenia aplikacji za pomocą Jetpack Compose możesz używać zarówno kart niestandardowych, jak i komponentu WebView:
- Karty niestandardowe: ponieważ karty niestandardowe używają
Intent, możesz je uruchamiać z dowolnegoContextw funkcjach Compose, co zapewnia płynną integrację. - WebView: Compose nie ma jeszcze natywnej funkcji kompozycyjnej WebView, więc musisz użyć
AndroidView, aby umieścić standardowy komponent WebView w układzie.
Dodatkowe materiały
Aby dowiedzieć się, jak tworzyć strony internetowe na urządzenia z Androidem za pomocą interfejsów API WebView lub kart niestandardowych, zapoznaj się z tymi dokumentami:
- Umieszczanie treści z internetu w aplikacji jako treści głównych lub dodatkowych
- Dokumentacja API: WebView
- Karty niestandardowe – omówienie
- Omówienie zaufanych aktywności internetowych
- Efektywne zarządzanie stanem WebView
- Obsługiwane przeglądarki