Developer Android terkadang memerlukan pengalaman web sementara untuk memenuhi persyaratan aplikasi mereka. Tab Khusus Ephemeral adalah Tab Khusus khusus yang meluncurkan browser web yang sepenuhnya terisolasi dari dalam aplikasi. Tab ini dapat digunakan untuk strategi autentikasi yang tidak boleh menyinkronkan status login dengan browser atau sesi web tempat data tidak boleh dipertahankan, seperti mode penjelajahan pribadi.
Secara default, Tab Kustom berbagi status dan fitur dari browser pengguna. Di Tab Kustom Ephemeral, cookie, file dalam cache, histori, kredensial, dan data lainnya hanya ada dalam cakupan instance sesi. Saat Aktivitas Tab Kustom ditutup, data akan dihapus tanpa jejak.
Seperti Tab Khusus, Tab Khusus Ephemeral dapat disesuaikan dengan tindakan dan tema UI. Jika Anda sudah menggunakan Tab Autentikasi untuk strategi autentikasi, penjelajahan sementara dapat ditambahkan ke intent peluncuran, sehingga menambahkan lapisan privasi lain ke proses tersebut.
Tab Kustom Ephemeral tersedia mulai Chrome 130 dan dapat dibuat instance-nya dengan satu baris kode. Untuk pengguna yang tidak memiliki fitur ini, Anda dapat memvalidasi apakah penjelajahan sementara diaktifkan dan mengintegrasikan alternatif penggantian dengan lancar.
Meluncurkan sesi sementara
Tab Khusus Ephemeral memerlukan library browser AndroidX. Library Browser AndroidX dapat ditambahkan di bagian dependensi file build.gradle
project. API ini tersedia dalam build alfa. Tambahkan kode berikut ke file build Anda:
dependencies {
implementation 'androidx.browser:browser:1.9.0-alpha01'
}
Untuk membuat sesi penjelajahan sementara, gunakan penyetel kustom yang disediakan di CustomTabsIntent
:
// In your activity
String url = "https://developers.android.com";
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder()
.setEphemeralBrowsingEnabled(true)
.build();
customTabsIntent.launchUrl(MainActivity.this, Uri.parse(url));
Karena penjelajahan sementara dipicu oleh intent tambahan dalam penerapan Tab Khusus Chrome standar, penyesuaian dapat ditambahkan seperti pada tab khusus biasa.
// Add customizations
String url = "https://developers.android.com";
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder()
.setEphemeralBrowsingEnabled(true)
.setUrlBarHidingEnabled(false)
.setShareState(CustomTabsIntent.SHARE_STATE_OFF)
.setCloseButton(BitmapFactory.decodeResource(getResources(), R.drawable.ic_back_arrow))
.build();
customTabsIntent.launchUrl(MainActivity.this, Uri.parse(url));
Untuk developer yang menggunakan Tab Autentikasi, tambahkan penyetel penjelajahan sementara ke AuthTabIntent
:
// Add ephemeral browsing to Auth Tab
AuthTabIntent authTabIntent = new AuthTabIntent.Builder()
.setEphemeralBrowsingEnabled(true)
.build();
authTabIntent.launch(launcher, uri, redirectScheme);
Beberapa penyesuaian diubah atau tidak tersedia di tab sementara:
- Histori tidak dicatat dalam sesi sementara.
- Pengguna tidak dapat mendownload halaman saat ini.
- Menekan lama link untuk membuka di tab Chrome baru dinonaktifkan.
- Opsi untuk membuka halaman saat ini di browser default dengan menu tambahan akan meluncurkan jendela browser dalam mode Samaran.
Kembali ke penerapan sebelumnya
Tidak semua perangkat pengguna memiliki kemampuan untuk meluncurkan Tab Kustom Singkat. Untuk menangani kasus ini, developer dapat menggunakan CustomTabsClient
untuk membuat kueri browser yang mendasarinya guna menentukan apakah penjelajahan sementara didukung. Tindakan ini memerlukan koneksi layanan ke CustomTabsClient
. Untuk melakukannya, luncurkan CustomTabsServiceConnection
baru untuk mengakses CustomTabsClient
yang disediakan setelah berhasil melakukan binding.
// in your activity
CustomTabsServiceConnection connection = new CustomTabsServiceConnection() {
@Override
public void onCustomTabsServiceConnected(@NonNull ComponentName name, @NonNull CustomTabsClient client) {
CustomTabsSession session = client.newSession(null);
try {
if (session.isEphemeralBrowsingSupported(Bundle.EMPTY)) {
// launch ephemeral tab
} else {
// fallback
}
} catch (RemoteException e) {
// fallback
}
}
@Override
public void onServiceDisconnected(ComponentName componentName) { }
};
CustomTabsClient.bindCustomTabsService(this, "com.android.chrome", connection);
Aplikasi yang menayangkan pengguna yang belum memiliki akses ke Tab Kustom Ephemeral dapat menggunakan metode lain, seperti WebView dengan caching dinonaktifkan. Contoh implementasi yang memanfaatkan Tab Khusus Ephemeral dengan penggantian ke WebView dapat ditemukan di library Android Browser Helper.