Programiści aplikacji na Androida czasami potrzebują dostępu do treści internetowych, które znikają po pewnym czasie, aby spełnić wymagania dotyczące aplikacji. Ephemeral Custom Tab to specjalistyczny niestandardowy kart, który uruchamia w aplikacji w pełni izolowaną przeglądarkę internetową. Można go używać w strategiach uwierzytelniania, które nie powinny synchronizować stanu logowania z przeglądarką, lub w sesjach internetowych, w których nie powinny być przechowywane dane (np. w trybie przeglądania prywatnego).
Domyślnie karty niestandardowe mają takie samo środowisko i funkcje jak przeglądarka użytkownika. W ulotnej karcie niestandardowej pliki cookie, pliki w pamięci podręcznej, historia, dane logowania i inne dane istnieją tylko w ramach instancji sesji. Gdy zamkniesz kartę Aktywność w karcie niestandardowej, dane zostaną trwale usunięte.
Podobnie jak w przypadku niestandardowych kart, niestandardowa karta ulotna może być dostosowywana za pomocą działań i motywów interfejsu. Jeśli korzystasz już z karty uwierzytelniania w ramach strategii uwierzytelniania, możesz dodać do intencji uruchamiania przeglądanie efemeryczne, co zapewni dodatkową warstwę prywatności.
Ephemeral Custom Tabs są dostępne od wersji Chrome 130 i można je utworzyć za pomocą jednego wiersza kodu. W przypadku użytkowników, dla których funkcja jest niedostępna, możesz sprawdzić, czy przeglądanie efemeryczne jest włączone, i płynnie zintegrować alternatywne rozwiązania.
Uruchamianie sesji tymczasowej
Efektywne karty niestandardowe wymagają biblioteki przeglądarki AndroidX. Bibliotekę Browser Library z AndroidX można dodać w sekcji zależności w pliku build.gradle
projektu. Interfejsy API są dostępne w wersji alfa. Dodaj do pliku kompilacji te elementy:
dependencies {
implementation 'androidx.browser:browser:1.9.0-alpha01'
}
Aby utworzyć sesję przeglądania ulotnego, użyj niestandardowego settera udostępnionego w 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));
Ponieważ przeglądanie ulotne jest wywoływane przez dodatkowy zamiar w standardowej implementacji kart niestandardowych Chrome, dostosowania można dodawać tak samo jak w przypadku typowych kart niestandardowych.
// 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));
Jeśli jesteś deweloperem korzystającym z karty Auth, dodaj ustawianie przeglądania tymczasowego do AuthTabIntent
:
// Add ephemeral browsing to Auth Tab
AuthTabIntent authTabIntent = new AuthTabIntent.Builder()
.setEphemeralBrowsingEnabled(true)
.build();
authTabIntent.launch(launcher, uri, redirectScheme);
Niektóre opcje personalizacji są modyfikowane lub niedostępne na karcie ulotnej:
- Podczas sesji tymczasowej historia nie jest rejestrowana.
- Użytkownicy nie mogą pobrać bieżącej strony.
- Kliknięcie i przytrzymanie linku, aby otworzyć go w nowej karcie Chrome, jest wyłączone.
- Opcja otwarcia bieżącej strony w domyślnej przeglądarce za pomocą menu przepełnienia uruchamia okno przeglądarki w trybie incognito.
Przejście na wcześniejsze implementacje
Nie wszystkie urządzenia użytkowników mogą uruchamiać tymczasowe karty niestandardowe. Aby obsłużyć te przypadki, deweloperzy mogą użyć CustomTabsClient
, aby zapytać przeglądarkę o to, czy obsługuje ona przeglądanie efemeryczne. Wymaga to połączenia usługi z usługą CustomTabsClient
. Aby to zrobić, uruchom nową usługę CustomTabsServiceConnection
, aby uzyskać dostęp do usługi CustomTabsClient
, która została pomyślnie powiązana.
// 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);
Aplikacje obsługujące użytkowników, którzy nie mają jeszcze dostępu do tymczasowych kart niestandardowych, mogą używać innych metod, takich jak WebView z wyłączoną pamięcią podręczną. Przykład implementacji, która korzysta z ulotnych kart niestandardowych z opcją WebView, można znaleźć w bibliotece Android Browser Helper.