Jak różne komponenty można wykorzystać do renderowania treści internetowych w aplikacjach na Androida.
Android istnieje od ponad 10 lat, a od samego początku zachęca do korzystania z internetu. Jest wyposażona w komponent WebView, który umożliwia programistom używanie internetu we własnych aplikacjach na Androida. Co więcej, Android umożliwia deweloperom wprowadzenie na platformę własnego mechanizmu przeglądarki, co sprzyja konkurencyjności i innowacyjności.
Programiści mogą umieszczać sieć w swoich aplikacjach na Androida na wiele sposobów. WebView jest często używany do renderowania reklam, jako komponentu układu używanego razem z elementami interfejsu Androida lub do tworzenia pakietów gier HTML5. Karty niestandardowe umożliwiają deweloperom wbudowanie przeglądarek w aplikacjach i zapewniają płynną nawigację po treściach internetowych innych firm, a Zaufana aktywność w internecie – umożliwia deweloperom wykorzystywanie ich progresywnych aplikacji internetowych (PWA) w aplikacjach na Androida, które można pobrać ze Sklepu Play.
Android WebView
WebView daje programistom dostęp do nowoczesnego kodu HTML, CSS i JavaScriptu w aplikacjach na Androida. Umożliwia też przesyłanie treści w ramach pakietu APK lub przechowywanie ich w internecie. To jeden z najbardziej elastycznych i zaawansowanych komponentów Androida, którego można używać w większości zastosowań, w których treści internetowe są uwzględniane w aplikacjach na Androida. Od obsługi usług reklamowych, takich jak AdMob, po tworzenie i dostarczanie kompletnych gier HTML5, które wykorzystują nowoczesne interfejsy API, takie jak WebGL.
Jednak w przypadku tworzenia aplikacji w przeglądarce lub dołączania jej do aplikacji na Androida WebView nie ma zabezpieczeń, funkcji i możliwości platformy internetowej.
Wyzwanie przeglądarki w aplikacji
Z czasem coraz więcej deweloperów wprowadza w przeglądarkach do swoich aplikacji na Androida, które zawierają treści od innych firm, aby zwiększyć wygodę użytkowników korzystających z witryn innych firm. i stały się one nazywane przeglądarkami w aplikacji.
WebView szeroko obsługuje nowoczesny stos technologii internetowych i obsługuje wiele nowoczesnych interfejsów API, np. WebView. WebView to jednak przede wszystkim zestaw narzędzi interfejsu internetowego. Nie obsługuje on wszystkich funkcji platformy internetowej. Jeśli interfejs API ma już rozwiązanie alternatywne na poziomie systemu operacyjnego, np. Web Bluetooth, lub wymaga zaimplementowania interfejsu przeglądarki (np. powiadomień push), może nie być obsługiwany. W miarę rozwoju platformy internetowej dodają się nowe funkcje, które były dostępne tylko dla aplikacji na Androida. Deweloperzy aplikacji nie mają wpływu na to, które funkcje są używane przy otwieraniu treści innych firm, dlatego WebView to nieodpowiedni wybór w przypadku przeglądarek w aplikacjach lub progresywnych aplikacji internetowych. Nawet jeśli komponent WebView wdrożył obsługę wszystkich funkcji platformy internetowej, deweloperzy nadal musieliby pisać kod i wdrażać własny interfejs użytkownika pod kątem takich funkcji jak uprawnienia czy powiadomienia push, co utrudnia uzyskanie spójności dla użytkowników.
Uwagi na temat bezpieczeństwa podczas korzystania z komponentu WebView jako przeglądarki w aplikacji
WebView daje aplikacji umieszczonej na stronie 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.
Ponieważ WebView nie jest platformą do tworzenia przeglądarek, nie ma funkcji zabezpieczeń dostępnych w nowoczesnych przeglądarkach.
Architektura wieloprocesowa i izolacja witryn
Przeglądarki zostały zaprojektowane z myślą o bezpieczeństwie podczas renderowania i wykonywania niezaufanych treści. Aby zapewnić użytkownikom bezpieczeństwo podczas korzystania z treści potencjalnie niewiarygodnych, a nawet szkodliwych, nowoczesne przeglądarki stosują takie techniki jak architektura wieloprocesowa i izolacja witryn.
Bez architektury wieloprocesowej awaria spowodowana przez stronę internetową może spowodować awarię całej aplikacji przeglądarki lub wykorzystanie luki w zabezpieczeniach do przejęcia kontroli nad całym urządzeniem. Izolacja witryn to dodatkowa warstwa zabezpieczeń, która utrudnia niezaufanym witrynom dostęp do informacji z innych stron i kradzież ich.
Do wersji Androida 8.0 Oreo mechanizm renderowania WebView używał tego samego procesu co aplikacja umieszczania. W nowszych wersjach systemu operacyjnego i gdy urządzenia mają odpowiednią wydajność, mechanizm renderowania uruchamia się w innym procesie. Między wszystkimi stronami i instancjami WebView, które je uruchamiają, nadal jest jednak używany jeden proces, co uniemożliwia pełne wdrożenie izolacji witryn.
Brak architektury wieloprocesowej i izolacji witryn nie stanowią problemu w przypadku aplikacji renderujących treści, które są ich własnością i są zaufane. Może jednak powodować problemy aplikacji uruchamiających niezaufane treści innych firm, np. przeglądarki w aplikacjach. Naraża użytkowników na luki w zabezpieczeniach takie jak Meltdown i Spectre, które mogą służyć do kradzieży plików cookie, danych bankowych, danych osobowych i innych danych.
Wskaźniki bezpiecznego interfejsu
Ważne jest również dostarczanie użytkownikom dobrych wskaźników bezpieczeństwa, a przeglądarki wkładają dużo wysiłku w działanie tej kwestii i stale się rozwijają. WebView nie ma jednak interfejsu API służącego do sprawdzania, czy połączenie z witryną jest bezpieczne, który umożliwia deweloperom aplikacji tworzenie wiarygodnych wskaźników bezpieczeństwa. Brak takiego interfejsu API może na przykład spowodować, że adres URL wyświetlany na pasku adresu nie będzie pasował do strony wyświetlanej użytkownikowi, nawet w przypadku bezpiecznych połączeń HTTPS.
Inną opcją dostępną dla programistów jest umieszczenie w aplikacji mechanizmu przeglądarki. Poza tym, że zwiększa się liczba zgłoszeń, takie podejście jest zarówno złożone, jak 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 używanie kart z domyślnej przeglądarki użytkownika w ramach aplikacji. Karty niestandardowe zostały pierwotnie wprowadzone przez Chrome i nosiły nazwę „Karty niestandardowe Chrome”. Dziś jest to interfejs API Androida, a najpopularniejsze przeglądarki obsługują karty niestandardowe, takie jak Chrome, Firefox, Edge i Samsung Internet, dlatego lepiej nazywać je „kartami niestandardowymi”.
Karty niestandardowe ułatwiają deweloperom płynne integrowanie treści internetowych z aplikacjami. Umożliwiają też deweloperom dostosowanie działania, w którym są wyświetlane treści internetowe, przez dostosowanie koloru paska narzędzi, przycisków poleceń, animacji przejścia i innych elementów.
Oferują też funkcje, które były wcześniej niedostępne podczas korzystania z komponentu WebView lub umieszczania silnika przeglądarki. Karty niestandardowe udostępniają pamięć urządzenia wraz z przeglądarką. Dzięki temu użytkownicy nie muszą ponownie logować się na swoje ulubione strony za każdym razem, gdy jedna z zainstalowanych aplikacji rozpoczyna sesję przeglądania w aplikacji.
W przeciwieństwie do komponentów WebView karty niestandardowe obsługują wszystkie funkcje platformy internetowej i interfejsy API obsługiwane przez przeglądarkę.
Otwieranie progresywnych aplikacji internetowych za pomocą zaufanej aktywności internetowej
Progresywne aplikacje internetowe zapewniają wiele możliwości i działań, które były kiedyś dostępne w internecie tylko w aplikacjach związanych z daną platformą. Wraz z wprowadzeniem zachowań przypominających aplikacje wzrosła chęć ponownego wykorzystania tych funkcji na Androidzie, a deweloperzy zaczęli szukać sposobów na zintegrowanie takich aplikacji w swoich aplikacjach.
Karty niestandardowe obsługują wszystkie nowoczesne funkcje internetowe i interfejsy API, ale ponieważ są przeznaczone przede wszystkim do otwierania treści pochodzących od innych osób, u góry znajdują się pasek narzędzi z informacjami o odwiedzanym przez nich adresie URL oraz ikonę blokady informującą o tym, czy witryna jest bezpieczna. Po otwarciu własnego środowiska aplikacji pasek narzędzi uniemożliwia aplikacji poczucie integracji z systemem operacyjnym.
Platforma Trusted Web Activities została wprowadzona w Chrome 72 i umożliwia deweloperom korzystanie z PWA w aplikacji na Androida. Jego protokół jest podobny do protokołu kart niestandardowych, ale zawiera interfejsy API umożliwiające deweloperom sprawdzenie (za pomocą linków do zasobów cyfrowych), czy kontrolują zarówno aplikację na Androida, jak i otwarty adres URL, oraz usuwa pasek adresu URL, gdy oba te warunki są spełnione.
Zespół wprowadził też interfejsy API do tworzenia ekranów powitalnych wyświetlanych przy otwieraniu aplikacji PWA lub przekazywania powiadomień internetowych do obsługi przez kod Androida. Wkrótce udostępnimy więcej funkcji, takich jak obsługa Płatności w Play.
Adresy URL otwierane w zaufanych działaniach internetowych powinny być aplikacjami PWA i mają zestaw zachowań i cech wydajności, dlatego aplikacja Trusted Web Activities wprowadza kryteria jakości otwieranych w nich aplikacji PWA.
Ograniczenia obecnych rozwiązań
Opinie deweloperów pokazały, że potrzebna jest zgodność kart niestandardowych z platformą w połączeniu z elastycznością komponentu WebView, aby można było na przykład uzyskiwać dostęp do modelu DOM lub wstawiać kod JavaScript w przeglądarkach w aplikacji.
Karty niestandardowe to karty renderowane przez przeglądarkę użytkownika z własnym interfejsem lub bez interfejsu. Oznacza to, że przeglądarka musi sprostać jego oczekiwaniom w zakresie prywatności i bezpieczeństwa, uniemożliwiając korzystanie z niektórych funkcji.
Zespół Google Web on Android szuka alternatywnych rozwiązań i eksperymentuje z rozwiązaniami, które pomogą rozwiązać te problemy. Więcej informacji podamy w najbliższym czasie.
Podsumowanie
WebView jest przydatny, gdy aplikacja w aplikacji na Androida wymaga kodu HTML, CSS i JavaScript, ale nie używa bardziej zaawansowanych funkcji i możliwości dostępnych w nowoczesnej wersji internetowej, takich jak powiadomienia push czy Bluetooth. Nie jest on zalecany w przypadku otwierania treści zaprojektowanych pod kątem nowoczesnej platformy internetowej, ponieważ mogą nie być wyświetlane w sposób zgodny z oczekiwaniami dewelopera. Do tworzenia przeglądarek w aplikacjach nie zalecamy korzystania z komponentu WebView. Z drugiej strony komponenty WebView są wyjątkowo przydatne, jeśli chodzi o wyświetlanie własnych treści z internetu.
Zaufanej aktywności internetowej należy używać, gdy deweloperzy chcą renderować własną progresywną aplikację internetową na pełnym ekranie w aplikacji na Androida. Można ich używać jako jedynej aktywności w aplikacji lub razem z innymi aktywnościami na Androidzie.
Karty niestandardowe to zalecany sposób otwierania treści pochodzących od innych firm, zaprojektowanych z myślą o platformie internetowej, nazywanych też przeglądarkami w aplikacjach.