Mit benutzerdefinierten Tabs für Sitzungen den Datenschutz für Nutzer verbessern

Android-Entwickler benötigen manchmal eine kurzlebige Weboberfläche, um die Anforderungen ihrer App zu erfüllen. Ein Ephemeral Custom Tab ist ein spezieller Custom Tab, der einen vollständig isolierten Webbrowser aus einer App heraus startet. Er kann für Authentifizierungsstrategien verwendet werden, bei denen der Anmeldestatus nicht mit dem Browser synchronisiert werden soll, oder für Websitzungen, in denen Daten nicht beibehalten werden sollen, z. B. im privaten Browsermodus.

Standardmäßig werden in benutzerdefinierten Tabs Status und Funktionen des Nutzerbrowsers verwendet. In einem temporären benutzerdefinierten Tab sind Cookies, Dateien im Cache, Verlauf, Anmeldedaten und andere Daten nur im Rahmen der Instanz der Sitzung vorhanden. Wenn die Aktivität auf dem benutzerdefinierten Tab geschlossen wird, werden die Daten spurlos gelöscht.

Wie benutzerdefinierte Tabs können auch temporäre benutzerdefinierte Tabs mit Aktionen und UI-Theming angepasst werden. Wenn Sie bereits den Auth Tab für Authentifizierungsstrategien verwenden, kann dem Start-Intent das temporäre Browsen hinzugefügt werden, wodurch der Prozess noch besser geschützt wird.

Temporäre benutzerdefinierte Tabs sind ab Chrome 136 verfügbar und können mit einer einzigen Codezeile instanziiert werden. Bei Nutzern, für die die Funktion nicht verfügbar ist, können Sie prüfen, ob das temporäre Surfen aktiviert ist, und nahtlos Fallback-Alternativen einbinden.

Prüfen, ob das temporäre Surfen unterstützt wird

Für sitzungsspezifische benutzerdefinierte Tabs ist die AndroidX-Browserbibliothek erforderlich. Die AndroidX Browser Library kann im Abschnitt „dependencies“ der build.gradle-Datei eines Projekts hinzugefügt werden. Die APIs sind in einem Alpha-Build verfügbar. Fügen Sie Ihrer Build-Datei Folgendes hinzu:

dependencies {
    implementation 'androidx.browser:browser:1.9.0-alpha05'
}

Mit CustomTabsClient#isEphemeralBrowsingSupported(Context, String) können Sie prüfen, ob die temporäre Suche unterstützt wird:

// In your activity

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

Dabei ist provider der Paketname des zu verwendenden Webbrowsers. Unter Prüfen, ob ein Android-Gerät einen Browser mit Unterstützung für benutzerdefinierte Tabs hat finden Sie Informationen zum Abrufen eines Paketnamens für einen Browser, der benutzerdefinierte Tabs unterstützt.

Ephemere Sitzung starten

Verwenden Sie den benutzerdefinierten Setter in CustomTabsIntent, um eine temporäre Browsersitzung zu erstellen:

// In your activity

String url = "https://developers.android.com";
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder()
    .setEphemeralBrowsingEnabled(true)
    .build();

customTabsIntent.launchUrl(MainActivity.this, Uri.parse(url));

Da das temporäre Browsen durch ein Intent-Extra in der Standardimplementierung von benutzerdefinierten Chrome-Tabs ausgelöst wird, können Anpassungen wie bei typischen benutzerdefinierten Tabs hinzugefügt werden.

// 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));

Entwickler, die den Auth-Tab verwenden, müssen den Setter für das sitzungsspezifische Browsen in AuthTabIntent einfügen:

// Add ephemeral browsing to Auth Tab

AuthTabIntent authTabIntent = new AuthTabIntent.Builder()
    .setEphemeralBrowsingEnabled(true)
    .build();
authTabIntent.launch(launcher, uri, redirectScheme);

Einige Anpassungen werden in einem temporären Tab geändert oder sind dort nicht verfügbar:

  • In einer flüchtigen Sitzung wird kein Verlauf protokolliert.
  • Nutzer können die aktuelle Seite nicht herunterladen.
  • Das Öffnen eines Links auf einem neuen Chrome-Tab durch langes Drücken ist deaktiviert.
  • Wenn Sie die aktuelle Seite über das Dreipunkt-Menü im Standardbrowser öffnen, wird ein Browserfenster im Inkognitomodus gestartet.

Auf vorherige Implementierungen zurückgreifen

Nicht alle Nutzergeräte können sitzungsspezifische benutzerdefinierte Tabs starten. Um diese Fälle zu verarbeiten, können Entwickler CustomTabsClient verwenden, um den zugrunde liegenden Browser abzufragen und festzustellen, ob temporäres Browsen unterstützt wird. Dazu ist eine Dienstverbindung zu CustomTabsClient erforderlich. Dazu starten Sie ein neues CustomTabsServiceConnection, um auf das CustomTabsClient zuzugreifen, das nach einer erfolgreichen Bindung bereitgestellt wird.

// 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);

Apps, die Nutzern dienen, die noch keinen Zugriff auf sitzungsspezifische benutzerdefinierte Tabs haben, können andere Methoden verwenden, z. B. eine WebView mit deaktiviertem Caching. Ein Beispiel für eine Implementierung, die temporäre benutzerdefinierte Tabs mit Fallback auf WebView nutzt, finden Sie in der Android Browser Helper-Bibliothek.

Zusätzliche Ressourcen