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 awal, platform ini memiliki dukungan yang luar biasa 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 platform, sehingga mendorong persaingan dan inovasi.

Developer dapat menyertakan web dalam aplikasi Android mereka dengan banyak cara. WebView sering digunakan untuk merender iklan, sebagai komponen tata letak yang digunakan bersama dengan 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 Apps (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, dan memungkinkan konten dikirimkan di dalam APK atau dihosting di internet. Ini adalah salah satu komponen Android yang paling fleksibel dan canggih, yang dapat digunakan untuk sebagian besar kasus penggunaan saat konten web disertakan dalam aplikasi Android. Dari mendukung layanan iklan seperti AdMob hingga mem-build 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 membuat pengalaman yang lebih lancar bagi pengguna saat membuka situs pihak ketiga. Pengalaman tersebut dikenal sebagai browser dalam aplikasi.

WebView memiliki dukungan yang luas untuk stack teknologi web modern dan mendukung banyak API web modern, seperti WebGL. Namun, WebView terutama adalah toolkit UI web. Fitur ini tidak dimaksudkan untuk - dan tidak - mendukung semua fitur platform web. Jika API sudah memiliki alternatif tingkat OS, seperti Web Bluetooth, atau memerlukan UI browser untuk diterapkan, seperti notifikasi push, API tersebut mungkin tidak didukung. Seiring dengan perkembangan platform web dan penambahan lebih banyak fitur yang hanya tersedia untuk aplikasi Android, kesenjangan ini akan menjadi lebih besar. Karena developer aplikasi tidak mengontrol fitur mana yang digunakan saat membuka konten pihak ketiga, hal ini membuat WebView menjadi pilihan yang buruk untuk browser dalam aplikasi atau membuka Progressive Web Apps. Meskipun WebView menerapkan dukungan untuk semua fitur platform web, developer masih perlu menulis kode dan menerapkan 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 penyematan akses penuh ke konten yang dirender, termasuk cookie dan DOM. Fitur tersebut adalah fitur canggih yang memerlukan tingkat kepercayaan yang tinggi dari pengguna.

Karena WebView tidak dimaksudkan sebagai framework untuk mem-build 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 membuat error seluruh aplikasi browser, atau kerentanan dapat dieksploitasi untuk mengambil kendali atas seluruh perangkat. Isolasi situs menambahkan lapisan keamanan lain yang mempersulit situs tidak tepercaya untuk mengakses dan mencuri informasi dari situs lain.

Hingga Android 8.0 Oreo, perender WebView menggunakan proses yang sama dengan aplikasi penyematan. Pada versi OS yang lebih baru, dan jika perangkat cukup mampu, perender akan berjalan dalam proses yang berbeda. Namun, satu proses masih dibagikan di antara semua halaman dan instance WebView yang menjalankannya, sehingga tidak mungkin untuk menerapkan isolasi situs sepenuhnya.

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

Indikator UI yang Aman

Penting juga untuk memberikan indikator keamanan yang baik kepada pengguna, dan browser melakukan banyak upaya dan selalu berkembang di bidang ini. Namun, WebView tidak memiliki API untuk memeriksa apakah koneksi situs aman yang memungkinkan developer aplikasi membuat indikator keamanan yang tepercaya. Kurangnya API tersebut 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 di aplikasi mereka. Selain menyebabkan peningkatan ukuran aplikasi, pendekatan ini juga kompleks 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 karenanya dikenal sebagai "Tab Khusus Chrome". Saat ini, ini adalah Android API dan browser yang paling populer mendukung Tab Khusus, termasuk Chrome, Firefox, Edge, dan Samsung Internet, sehingga lebih tepat untuk menyebutnya "Tab Khusus".

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

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

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

Membuka Progressive Web App menggunakan Aktivitas Web Tepercaya

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

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

Trusted Web Activities diperkenalkan di Chrome 72 dan memungkinkan developer untuk menggunakan PWA mereka di dalam aplikasi Android. Protokolnya mirip dengan protokol Tab Kustom, 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 benar.

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 datang.

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

Batasan solusi saat ini

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

Custom Tabs secara efektif 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 browser, sehingga beberapa fitur tersebut tidak dapat dilakukan.

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

Ringkasan

WebView berguna saat aplikasi memerlukan HTML, CSS, dan JavaScript di dalam aplikasi Android, tetapi tidak menggunakan fitur dan kemampuan yang lebih canggih yang tersedia di web modern seperti Notifikasi Push, Web Bluetooth, dan lainnya. Hal ini tidak direkomendasikan saat membuka konten yang telah dirancang untuk platform web modern, karena konten tersebut mungkin tidak ditampilkan seperti yang diinginkan developer. WebView tidak direkomendasikan untuk membuat browser dalam aplikasi. Di sisi lain, menampilkan konten web pihak pertama adalah area tempat WebView benar-benar bersinar.

Aktivitas Web Tepercaya harus digunakan saat developer ingin merender Aplikasi Web Progressive mereka sendiri dalam layar penuh di dalam aplikasi Android mereka. Aktivitas ini dapat digunakan sebagai satu-satunya aktivitas dalam aplikasi atau digunakan bersama dengan 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.