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 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 zsynchronizować 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 136 Chrome 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.

Sprawdzanie, czy przeglądanie ulotne jest obsługiwane

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-alpha05'
}

Aby sprawdzić, czy przeglądanie efemeryczne jest obsługiwane, użyj CustomTabsClient#isEphemeralBrowsingSupported(Context, String):

// In your activity

if (CustomTabsClient.isEphemeralBrowsingSupported(this, provider)) {
    ...
}

gdzie provider to nazwa pakietu przeglądarki internetowej, której chcesz użyć. Aby pobrać nazwę pakietu przeglądarki obsługującej karty niestandardowe, zapoznaj się z artykułem Sprawdzanie, czy urządzenie z Androidem ma przeglądarkę obsługującą karty niestandardowe.

Uruchamianie sesji ulotnej

Aby utworzyć sesję przeglądania efemerycznego, użyj niestandardowego settera 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.
  • 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 rozwijanego 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 ulotne. 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 dostarczona po pomyślnym połączeniu.

// 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łączonym buforowaniem. Przykład implementacji, która korzysta z ulotnych kart niestandardowych z opcją WebView, można znaleźć w bibliotece Android Browser Helper.

Dodatkowe materiały