Przeglądarka na Androidzie

Jak różne komponenty mogą służyć do renderowania treści internetowych w aplikacjach na Androida.

Platforma Android istnieje od ponad 10 lat i od samego początku oferuje świetne wsparcie dla Internetu. Jest ona dostarczana z WebView, czyli komponentem, który umożliwia deweloperom korzystanie z internetu w ich własnych aplikacjach na Androida. Co więcej, Android umożliwia deweloperom tworzenie własnych silników przeglądarek, co sprzyja konkurencji i innowacjom.

Deweloperzy mogą uwzględniać internet w swoich aplikacjach na Androida na wiele sposobów. WebView jest często używany do renderowania reklam, jako element układu używany razem z elementami interfejsu użytkownika Androida lub do pakowania gier HTML5. Strony niestandardowe umożliwiają deweloperom tworzenie przeglądarek w aplikacji i płynne przełączanie się między aplikacjami a treściami internetowymi innych firm. Zaufana aktywność w internecie pozwala deweloperom korzystać z aplikacji Progressive Web Apps (PWAs) w aplikacjach na Androida, które można pobrać ze Sklepu Play.

Android WebView

WebView zapewnia deweloperom dostęp do nowoczesnego kodu HTML, CSS i JavaScriptu w ich aplikacjach na Androida. Pozwala też na przesyłanie treści w pliku APK lub hostowanie ich w internecie. Jest to jeden z najbardziej elastycznych i potężnych komponentów Androida, który może być używany w większości przypadków, gdy treści internetowe są uwzględniane w aplikacji na Androida. Od obsługi usług reklamowych, takich jak AdMob, po tworzenie i publikowanie kompletnych gier HTML5, które korzystają z nowoczesnych interfejsów API, takich jak WebGL.

Jednak gdy jest używany do tworzenia przeglądarki w aplikacji lub do włączenia PWA w aplikacji na Androida, WebView nie zapewnia bezpieczeństwa, funkcji ani możliwości platformy internetowej.

Wyzwanie związane z przeglądarką w aplikacji

Z czasem coraz więcej deweloperów zaczęło tworzyć w aplikacji na Androida przeglądarkę z dodatkiem treści innych firm, aby zapewnić użytkownikom płynniejsze korzystanie z witryn innych firm. Te funkcje stały się znane jako przeglądarki w aplikacji.

WebView zapewnia rozbudowane wsparcie dla nowoczesnego zestawu technologii internetowych i obsługuje wiele nowoczesnych interfejsów API, takich jak WebGL. WebView to przede wszystkim zestaw narzędzi do tworzenia interfejsu internetowego. Nie jest ona przeznaczona do obsługi wszystkich funkcji platformy internetowej i tak właściwie nie obsługuje wszystkich funkcji. Jeśli interfejs API ma już alternatywę na poziomie systemu operacyjnego, na przykład Web Bluetooth, lub wymaga wdrożenia interfejsu użytkownika przeglądarki, na przykład powiadomień push, może nie być obsługiwany. W miarę ulepszania platformy internetowej i dodawania do niej kolejnych funkcji, które były dostępne tylko w przypadku aplikacji na Androida, ta różnica będzie się jeszcze powiększać. Ponieważ deweloperzy aplikacji nie mają kontroli nad tym, które funkcje są używane podczas otwierania treści innych firm, WebView nie jest dobrym wyborem w przypadku przeglądarek w aplikacji lub otwierania progresywnych aplikacji internetowych. Nawet gdyby WebView obsługiwał wszystkie funkcje platformy internetowej, deweloperzy nadal musieliby pisać kod i wdrażać własne interfejsy użytkownika dla funkcji takich jak uprawnienia czy powiadomienia push, co utrudniałoby zapewnienie spójności dla użytkowników.

Zagadnienia związane z bezpieczeństwem podczas używania WebView jako przeglądarki w aplikacji

WebView zapewnia aplikacji, która go osadzała, pełny dostęp do renderowanych treści, w tym plików cookie i DOM. To zaawansowane funkcje, które wymagają dużego zaufania użytkowników.

WebView nie jest przeznaczony do tworzenia przeglądarek, dlatego nie ma w nim funkcji bezpieczeństwa dostępnych w nowoczesnych przeglądarkach.

Architektura wieloprocesowa i izolacja witryn

Przeglądarki są zaprojektowane tak, aby zapewniać bezpieczeństwo podczas renderowania i wykonywania niesprawdzonych treści. Aby zapewnić użytkownikom bezpieczeństwo podczas przeglądania treści, które mogą być niegodne zaufania lub nawet złośliwe, nowoczesne przeglądarki stosują takie techniki jak architektura wieloprocesowaizolacja witryn.

Bez architektury wieloprocesowej awaria spowodowana przez stronę internetową może spowodować awarię całej aplikacji przeglądarki lub umożliwić wykorzystanie luki w zabezpieczeniach w celu przejęcia kontroli nad całym urządzeniem. Izolacja witryn dodaje kolejną warstwę zabezpieczeń, która utrudnia niesprawdzonym witrynom dostęp do informacji z innych witryn i kradzież tych informacji.

Do Androida 8.0 Oreo mechanizm renderowania WebView używał tego samego procesu co aplikacja do umieszczania. W nowszych wersjach systemu operacyjnego i na wystarczająco wydajnych urządzeniach renderowanie odbywa się w ramach innego procesu. Jednak wszystkie strony i procesy WebView są nadal obsługiwane przez ten sam proces, co uniemożliwia pełną izolację witryn.

Brak architektury wieloprocesowej i izolacji witryny nie stanowi problemu w przypadku aplikacji, które wyświetlają treści należące do użytkownika i któremu użytkownik ufa, ale może być problemem w przypadku aplikacji korzystających z niezaufanego materiału zewnętrznego, takich jak przeglądarki w aplikacji. Użytkownicy są wtedy narażeni na luki w zabezpieczeniach, takie jak MeltdownSpectre, które mogą być wykorzystywane do kradzieży plików cookie, danych bankowych, informacji osobistych i innych danych.

Bezpieczne wskaźniki interfejsu

Ważne jest też, aby zapewnić użytkownikom dobre wskaźniki bezpieczeństwa. Przeglądarki dokładają wszelkich starań, aby stale rozwijać te funkcje. Jednak interfejs WebView nie ma interfejsu API do sprawdzania, czy połączenie z witryną jest bezpieczne, co uniemożliwia deweloperom tworzenie wiarygodnych wskaźników bezpieczeństwa. Brak takiego interfejsu API może spowodować, że adres URL wyświetlany na pasku adresu nie będzie się zgadzać ze stroną wyświetlaną użytkownikowi, nawet w przypadku bezpiecznych połączeń HTTPS.

Inną opcją dostępną dla deweloperów jest umieszczenie w aplikacji silnika przeglądarki. Poza tym powoduje zwiększenie rozmiaru aplikacji, a także jest skomplikowane i czasochłonne.

Karty niestandardowe jako rozwiązanie dla przeglądarek w aplikacjach

Karta niestandardowa została wprowadzona w Chrome 45 i pozwala deweloperom używać karty z domyślnej przeglądarki użytkownika jako części aplikacji. Karty niestandardowe zostały pierwotnie wprowadzone przez Chrome i nazywane były „kartami niestandardowymi Chrome”. Obecnie jest to interfejs API Androida, a większość popularnych przeglądarek obsługuje karty niestandardowe, w tym Chrome, Firefox, Edge i Samsung Internet, więc bardziej pasuje nazwa „karty niestandardowe”.

Karty niestandardowe ułatwiają deweloperom płynne łączenie treści internetowych z aplikacją. Pozwalają też deweloperom dostosowywać aktywność, w ramach której wyświetlane są treści internetowe, m.in. kolor paska narzędzi, przyciski akcji, animację przejścia i inne.

Oferują też funkcje, które były wcześniej niedostępne podczas korzystania z WebView lub umieszczania w aplikacji silnika przeglądarki. Ponieważ przeglądarka w aplikacji korzysta z przeglądarki użytkownika, aplikacja Custom Tabs udostępnia pamięć z przeglądarką, dzięki czemu użytkownicy nie muszą się logować na swoich ulubionych stronach za każdym razem, gdy jedna z zainstalowanych aplikacji rozpoczyna sesję przeglądania w aplikacji.

W odróżnieniu od WebView, karty niestandardowe obsługują wszystkie funkcje i interfejsy API platformy internetowej, które są obsługiwane przez przeglądarkę.

Otwieranie progresywnych aplikacji internetowych za pomocą zaufanej aktywności w internecie

Progresywne aplikacje internetowe wprowadzają wiele zachowań i funkcji, które wcześniej były dostępne tylko w przypadku aplikacji na konkretne platformy. Wraz z wprowadzeniem zachowania podobnego do aplikacji wzrosło zainteresowanie deweloperów możliwością ponownego wykorzystania tych funkcji na Androidzie. Zaczęli oni pytać o sposoby na integrację Progressive Web Apps w swoich aplikacjach.

Karta niestandardowa obsługuje wszystkie nowoczesne funkcje i interfejsy API, ale ponieważ została zaprojektowana głównie do otwierania treści innych firm, na górze znajduje się pasek narzędzi, który informuje użytkowników, który adres URL odwiedzają, oraz ikona kłódki wskazująca, czy witryna jest bezpieczna. Podczas otwierania własnej aplikacji pasek narzędzi sprawia, że nie ma wrażenia, że aplikacja jest zintegrowana z systemem operacyjnym.

Zaufane działania w internecie zostały wprowadzone w Chrome 72 i umożliwiają deweloperom używanie ich PWA w aplikacji na Androida. Protokół ten jest podobny do protokołu kart niestandardowych, ale wprowadza interfejsy API, które umożliwiają deweloperom weryfikację (za pomocą linków do zasobów cyfrowych) tego, że kontrolują zarówno aplikację na Androida, jak i otwierany adres URL, oraz usuwają pasek adresu URL, gdy oba te warunki są spełnione.

Wprowadziliśmy też interfejsy API do tworzenia ekranów wczytywania podczas otwierania aplikacji PWA oraz do delegowania powiadomień internetowych do obsługi przez kod Androida. Wkrótce udostępnimy więcej funkcji, takich jak obsługa płatności w Google Play.

Adresy URL otwierane w zaufanych aktywnościach internetowych powinny być adresami aplikacji PWA i mieć określony zestaw zachowań oraz charakterystyk wydajności. Zaufane aktywności internetowe wprowadzają kryteria jakości dotyczące aplikacji PWA otwieranych w ich ramach.

Ograniczenia obecnych rozwiązań

Z opinii deweloperów wynika, że potrzebują zgodności z różnymi platformami w przypadku kart niestandardowych oraz elastyczności WebView, aby mogli na przykład uzyskać dostęp do interfejsu DOM lub wstrzyknąć JavaScript do przeglądarek w aplikacji.

Karty niestandardowe to karty renderowane przez przeglądarkę użytkownika z niestandardowym interfejsem lub bez interfejsu. Oznacza to, że przeglądarka musi spełniać oczekiwania użytkownika dotyczące prywatności i bezpieczeństwa, co uniemożliwia korzystanie z niektórych z tych funkcji.

Zespół Google ds. przeglądania internetu na Androidzie szuka alternatyw i eksperymentuje z rozwiązaniami, które mogą być przydatne w tych przypadkach użycia. Wkrótce podamy więcej informacji.

Podsumowanie

WebView jest przydatny, gdy aplikacja na Androida potrzebuje kodu HTML, CSS i JavaScriptu, ale nie korzysta z bardziej zaawansowanych funkcji i możliwości dostępnych w nowoczesnej sieci, takich jak powiadomienia push, Bluetooth internetowy itp. Nie zalecamy otwierania treści zaprojektowanych z myślą o nowoczesnej platformie internetowej, ponieważ mogą one nie wyświetlać się zgodnie z zamierzeniami dewelopera. Komponent WebView nie jest zalecany do tworzenia przeglądarek w aplikacji. Z drugiej strony wyświetlanie treści internetowych własnych jest obszarem, w którym WebViews naprawdę błyszczy.

Zaufanej aktywności w internecie należy używać, gdy deweloperzy chcą renderować własną progresywną aplikację internetową na pełnym ekranie w aplikacji na Androida. Może być używana jako jedyna aktywność w aplikacji lub razem z innymi aktywnościami na Androidzie.

Karty niestandardowe to zalecany sposób otwierania treści innych firm zaprojektowanych na potrzeby platformy internetowej, czyli przeglądarek w aplikacji.