Web di Android

Cara berbagai komponen dapat digunakan untuk merender konten web di dalam aplikasi Android.

Platform Android telah ada selama lebih dari sepuluh tahun, dan sejak awalnya memberikan dukungan yang besar untuk Web. Aplikasi ini dikirimkan dengan WebView, komponen yang memungkinkan developer menggunakan web di dalam Aplikasi Android mereka sendiri. Lebih dari itu, Android memungkinkan developer menghadirkan mesin browser mereka sendiri ke dalam platform, mendorong kompetisi dan inovasi.

Developer dapat menyertakan web ke dalam aplikasi Android dengan berbagai cara. WebView sering digunakan untuk merender iklan, sebagai komponen tata letak yang digunakan bersama elemen UI Android, atau untuk memaketkan game HTML 5. Tab Kustom memungkinkan developer membuat browser dalam aplikasi dan memberikan pengalaman navigasi yang lancar ke konten web pihak ketiga, dan Aktivitas Web Tepercaya memungkinkan developer menggunakan Progressive Web App (PWA) di aplikasi Android, yang dapat didownload dari Play Store.

Android WebView

WebView memberi developer akses ke HTML, CSS, dan JavaScript modern di dalam aplikasi Android mereka, serta memungkinkan konten dikirim dalam APK atau dihosting di internet. Komponen ini merupakan salah satu komponen Android yang paling fleksibel dan canggih, yang dapat digunakan untuk sebagian besar kasus penggunaan saat konten web disertakan dalam aplikasi Android. Mulai dari mendukung layanan iklan seperti AdMob hingga membuat dan mengirimkan game HTML5 lengkap yang menggunakan API modern seperti WebGL.

Namun, saat digunakan untuk membuat browser dalam aplikasi atau menyertakan PWA dalam aplikasi Android, WebView tidak memiliki keamanan, fitur, dan kemampuan platform web.

Tantangan browser dalam aplikasi

Seiring waktu, semakin banyak developer yang membuat pengalaman browser yang menggabungkan konten pihak ketiga ke dalam aplikasi Android mereka, dengan tujuan menciptakan pengalaman yang lebih lancar bagi pengguna saat membuka situs pihak ketiga. Pengalaman tersebut kemudian dikenal sebagai {i>browser<i} dalam aplikasi.

WebView memiliki dukungan ekstensif untuk web tech stack modern dan mendukung banyak API web modern, seperti WebGL. Namun, WebView pada dasarnya adalah toolkit UI web. Halaman ini tidak dimaksudkan untuk, dan tidak, untuk mendukung semua fitur platform web. Jika API sudah memiliki alternatif tingkat OS, seperti Bluetooth Web, atau mengharuskan implementasi UI browser, seperti notifikasi push, API tersebut mungkin tidak didukung. Seiring dengan berkembangnya platform web dan menambahkan lebih banyak fitur yang hanya tersedia untuk aplikasi Android, kesenjangan ini akan semakin besar. Karena developer aplikasi tidak mengontrol fitur mana yang digunakan saat membuka konten pihak ketiga, WebView menjadi pilihan yang buruk untuk browser dalam aplikasi atau membuka Progressive Web App. Meskipun WebView menerapkan dukungan untuk semua fitur platform web, developer masih perlu menulis kode dan mengimplementasikan UI mereka sendiri untuk fungsi seperti izin atau notifikasi push, sehingga sulit untuk mencapai konsistensi bagi pengguna.

Pertimbangan Keamanan untuk menggunakan WebView sebagai browser dalam aplikasi

WebView memberi aplikasi penyemat akses penuh ke konten yang dirender, termasuk cookie dan DOM. Itu adalah fitur canggih yang membutuhkan kepercayaan tingkat tinggi dari pengguna.

Karena WebView tidak dimaksudkan sebagai framework untuk membuat browser, WebView tidak memiliki fitur keamanan yang tersedia di browser modern.

Arsitektur multiproses dan isolasi situs

Browser dirancang agar aman saat merender dan menjalankan konten yang tidak tepercaya. Untuk memastikan pengguna tetap aman saat membuka konten yang berpotensi tidak dapat dipercaya atau bahkan berbahaya, browser modern menggunakan teknik seperti menggunakan arsitektur multiproses dan isolasi situs.

Tanpa arsitektur multiproses, error yang disebabkan oleh halaman web dapat menimbulkan error pada seluruh aplikasi browser, atau kerentanan dapat dieksploitasi untuk mengontrol seluruh perangkat. Isolasi situs menambahkan lapisan keamanan lain yang mempersulit situs yang tidak tepercaya untuk mengakses dan mencuri informasi dari situs lain.

Hingga Android 8.0 Oreo, perender WebView menggunakan proses yang sama dengan aplikasi penyemat. Pada versi OS yang lebih baru, dan jika perangkat cukup memadai, perender akan berjalan dalam proses yang berbeda. Namun, satu proses masih digunakan bersama antara semua halaman dan instance WebView yang menjalankannya, sehingga isolasi situs tidak dapat diimplementasikan sepenuhnya.

Tidak adanya arsitektur multiproses dan isolasi situs bukanlah masalah bagi aplikasi yang merender konten yang mereka miliki dan percayai, tetapi dapat menjadi masalah untuk aplikasi yang menjalankan konten pihak ketiga yang tidak tepercaya, seperti browser dalam aplikasi, dan membuat pengguna rentan terhadap kerentanan seperti Meltdown dan Spectre, yang dapat digunakan untuk mencuri cookie, informasi perbankan, informasi pribadi, dan lainnya.

Indikator UI Aman

Penting juga untuk memberikan indikator keamanan yang baik kepada pengguna, dan browser melakukan banyak upaya dan selalu berkembang di area ini. Namun, WebView tidak memiliki API untuk memeriksa apakah koneksi situs aman atau tidak yang memungkinkan developer aplikasi membangun indikator keamanan yang tepercaya. Tidak adanya API seperti itu dapat menyebabkan, misalnya, URL yang ditampilkan di kolom URL tidak cocok dengan halaman yang ditampilkan kepada pengguna, bahkan melalui koneksi HTTPS yang aman.

Opsi lain yang tersedia bagi developer adalah menyematkan mesin browser dalam aplikasi mereka. Selain menyebabkan bertambahnya ukuran aplikasi, pendekatan ini rumit dan memakan waktu.

Tab Khusus sebagai solusi untuk browser dalam aplikasi

Tab Khusus diperkenalkan di Chrome 45 dan memungkinkan developer menggunakan tab dari browser default pengguna sebagai bagian dari aplikasi mereka. Tab Khusus awalnya diluncurkan oleh Chrome, dan oleh karena itu dikenal sebagai "Tab Khusus Chrome". Saat ini, Android API menjadi Android API dan browser paling populer mendukung Tab Khusus, termasuk Chrome, Firefox, Edge, dan Samsung Internet. Jadi, lebih cocok untuk menyebutnya "Custom Tabs".

Tab Khusus membantu developer mengintegrasikan konten web ke dalam pengalaman aplikasi mereka dengan lancar. API ini juga memungkinkan developer menyesuaikan aktivitas yang menampilkan konten web dengan memungkinkan mereka menyesuaikan warna toolbar, tombol tindakan, animasi transisi, dan lainnya.

Library ini juga menawarkan fitur yang sebelumnya tidak tersedia saat menggunakan WebView atau menyematkan mesin browser. Karena browser dalam aplikasi didukung oleh browser pengguna, Tab Khusus berbagi penyimpanan dengan browser, sehingga pengguna tidak perlu login kembali ke situs favorit mereka setiap kali salah satu aplikasi terinstal memulai sesi penjelajahan Dalam Aplikasi.

Tidak seperti WebView, Tab Khusus mendukung semua fitur platform web dan API yang didukung oleh browser yang mendukungnya.

Membuka Progressive Web App menggunakan Aktivitas Web Tepercaya

Progressive Web App menghadirkan banyak perilaku dan kemampuan yang sebelumnya hanya tersedia untuk aplikasi khusus platform di web. Dengan diperkenalkannya perilaku yang mirip dengan aplikasi, keinginan developer untuk menggunakan kembali pengalaman tersebut di Android meningkat, dan developer mulai meminta cara untuk mengintegrasikan PWA ke aplikasi mereka.

Tab Khusus memiliki dukungan untuk semua kemampuan web dan API modern, tetapi karena pada dasarnya dirancang untuk membuka konten pihak ketiga, Tab Khusus memiliki toolbar di bagian atas yang memberi tahu pengguna URL mana yang mereka kunjungi, serta ikon gembok yang menunjukkan apakah situs aman. Saat membuka pengalaman aplikasi sendiri, toolbar mencegah aplikasi merasa terintegrasi dengan sistem operasi.

Aktivitas Web Tepercaya diperkenalkan di Chrome 72 dan memungkinkan developer menggunakan PWA di dalam aplikasi Android. Protokolnya mirip dengan protokol Tab Khusus, tetapi memperkenalkan API yang memungkinkan developer memverifikasi (melalui Digital Asset Links) bahwa mereka mengontrol aplikasi Android dan URL yang dibuka, serta menghapus kolom URL jika keduanya berlaku.

Mereka juga memperkenalkan API untuk membuat layar pembuka saat membuka PWA atau mendelegasikan notifikasi web untuk ditangani oleh kode Android. Fitur lainnya seperti dukungan untuk Layanan Penagihan Play akan segera hadir.

Karena URL yang dibuka di Aktivitas Web Tepercaya diharapkan merupakan PWA dan memiliki serangkaian perilaku dan karakteristik performa, Aktivitas Web Tepercaya memperkenalkan kriteria kualitas untuk PWA yang dibuka di dalamnya.

Keterbatasan solusi saat ini

Masukan developer menunjukkan kebutuhan akan kompatibilitas platform Tab Khusus yang dikombinasikan dengan fleksibilitas WebView sehingga mereka dapat, misalnya, mengakses DOM atau memasukkan JavaScript ke dalam browser dalam aplikasi.

Tab Kustom pada dasarnya adalah tab yang dirender oleh browser pengguna, dengan UI kustom atau tanpa UI sama sekali. Artinya, browser harus memenuhi ekspektasi pengguna terkait privasi dan keamanan terhadap browser, sehingga beberapa fitur tersebut tidak dapat digunakan.

Tim Web di Android di Google sedang mencari alternatif dan bereksperimen dengan solusi untuk memecahkan kasus penggunaan tersebut. Nantikan detailnya.

Ringkasan

WebView berguna saat aplikasi memerlukan HTML, CSS, dan JavaScript di dalam aplikasi Android-nya, tetapi tidak menggunakan fitur dan kemampuan lanjutan yang tersedia di web modern seperti Notifikasi Dorong, Bluetooth Web, dan lainnya. Hal ini tidak direkomendasikan saat membuka konten yang telah didesain untuk platform web modern, karena mungkin tidak ditampilkan dengan cara yang diinginkan developer. WebView tidak direkomendasikan untuk membuat browser dalam aplikasi. Di sisi lain, menampilkan konten web pihak pertama merupakan area keunggulan WebView.

Aktivitas Web Tepercaya harus digunakan saat developer ingin merender Progressive Web App mereka sendiri dalam layar penuh di dalam aplikasi Android. Aktivitas ini dapat digunakan sebagai satu-satunya aktivitas di aplikasi atau digunakan bersama aktivitas Android lainnya.

Tab Khusus adalah cara yang direkomendasikan untuk membuka konten pihak ketiga yang dirancang untuk platform web, yang juga dikenal sebagai browser dalam aplikasi.