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 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łączania 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 nowoczesnych 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 nie obsługuje ich wszystkich. Jeśli interfejs API ma już alternatywę na poziomie systemu operacyjnego, na przykład Web Bluetooth, lub wymaga implementacji interfejsu użytkownika w przeglądarce, 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 aplikacjach na Androida, ta różnica będzie się pogłębiać. 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ło wszystkie funkcje platformy internetowej, deweloperzy nadal musieliby pisać kod i wdrażać własne interfejsy 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, pełny dostęp do renderowanych treści, w tym plików cookie i DOM. To potężne 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 ich kradzież.

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óre są przez niego zaufane, 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. Interfejs WebView nie ma jednak interfejsu API do sprawdzania, czy połączenie z witryną jest bezpieczne, co uniemożliwia deweloperom tworzenia 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. Takie podejście nie tylko zwiększa rozmiar aplikacji, ale też jest skomplikowane i czasochłonne.

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

Karty niestandardowe zostały wprowadzone w Chrome 45 i umożliwiają deweloperom korzystanie z karty w domyślnej przeglądarce użytkownika w ramach aplikacji. Karty niestandardowe zostały pierwotnie wprowadzone przez Chrome i były wtedy nazywane „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 do nich nazwa „karty niestandardowe”.

Karty niestandardowe pomagają deweloperom płynnie integrować treści internetowe 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ą logować się ponownie w ulubionych witrynach za każdym razem, gdy jedna z zainstalowanych aplikacji rozpoczyna sesję przeglądania w aplikacji.

W przeciwieństwie do 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.

Strony niestandardowe obsługują wszystkie nowoczesne funkcje i interfejsy API, ale ponieważ zostały zaprojektowane głównie do otwierania treści innych firm, na górze mają pasek narzędzi, który informuje użytkowników, który adres URL odwiedzają, oraz ikonę kłódki, która wskazuje, 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 PWA lub 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 w istocie karta renderowana przez przeglądarkę użytkownika z niestandardowym interfejsem lub bez niego. 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 pozwolą na realizację tych scenariuszy. 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.