Poprawianie prywatności użytkowników w internecie dzięki tymczasowym niestandardowym kartom

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.

Dodatkowe materiały