Améliorer la confidentialité des utilisateurs sur le Web grâce aux onglets personnalisés éphémères

Les développeurs Android ont parfois besoin d'une expérience Web éphémère pour répondre aux exigences de leur application. Un onglet personnalisé éphémère est un onglet personnalisé spécialisé qui lance un navigateur Web entièrement isolé à partir d'une application. Il peut être utilisé pour les stratégies d'authentification qui ne doivent pas synchroniser l'état de connexion avec le navigateur ou les sessions Web où les données ne doivent pas être conservées, comme un mode de navigation privée.

Par défaut, les onglets personnalisés partagent l'état et les fonctionnalités du navigateur de l'utilisateur. Dans un onglet personnalisé éphémère, les cookies, les fichiers en cache, l'historique, les identifiants et d'autres données n'existent que dans le champ d'application de l'instance de la session. Lorsque l'activité de l'onglet personnalisé est fermée, les données sont supprimées sans laisser de trace.

Comme les onglets personnalisés, un onglet personnalisé éphémère peut être personnalisé avec des actions et un thème d'UI. Si vous utilisez déjà l'onglet Authentification pour vos stratégies d'authentification, vous pouvez ajouter la navigation éphémère à l'intent de lancement, ce qui renforce la confidentialité du processus.

Les onglets personnalisés éphémères sont disponibles à partir de Chrome 130 et peuvent être instanciés avec une seule ligne de code. Pour les utilisateurs pour lesquels la fonctionnalité n'est pas disponible, vous pouvez vérifier si la navigation éphémère est activée et intégrer facilement des alternatives de remplacement.

Lancer une session éphémère

Les onglets personnalisés éphémères nécessitent la bibliothèque de navigateur AndroidX. La bibliothèque de navigateur AndroidX peut être ajoutée dans la section "dépendances" du fichier build.gradle d'un projet. Les API sont disponibles dans une version alpha. Ajoutez ce qui suit à votre fichier de compilation:

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

Pour créer une session de navigation éphémère, utilisez le setter personnalisé fourni dans 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));

Étant donné que la navigation éphémère est déclenchée par un intent supplémentaire dans l'implémentation standard des onglets personnalisés Chrome, des personnalisations peuvent être ajoutées comme dans les onglets personnalisés standards.

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

Pour les développeurs qui utilisent l'onglet Auth, ajoutez le setter de navigation éphémère à AuthTabIntent:

// Add ephemeral browsing to Auth Tab

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

Certaines personnalisations sont modifiées ou indisponibles dans un onglet éphémère:

  • L'historique n'est pas enregistré dans une session éphémère.
  • Les utilisateurs ne peuvent pas télécharger la page actuelle.
  • L'appui prolongé sur un lien pour l'ouvrir dans un nouvel onglet Chrome est désactivé.
  • L'option permettant d'ouvrir la page actuelle dans le navigateur par défaut avec le menu à développer lance une fenêtre de navigateur en mode navigation privée.

Retour aux implémentations précédentes

Tous les appareils des utilisateurs ne peuvent pas lancer d'onglets personnalisés éphémères. Pour gérer ces cas, les développeurs peuvent utiliser CustomTabsClient pour interroger le navigateur sous-jacent afin de déterminer si la navigation éphémère est prise en charge. Pour ce faire, vous devez disposer d'une connexion de service à CustomTabsClient. Pour ce faire, lancez un nouveau CustomTabsServiceConnection pour accéder au CustomTabsClient fourni après une liaison réussie.

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

Les applications qui servent des utilisateurs qui n'ont pas encore accès aux onglets personnalisés éphémères peuvent utiliser d'autres méthodes, telles qu'une WebView avec le cache désactivé. Un exemple d'implémentation qui exploite les onglets personnalisés éphémères avec un retour à WebView se trouve dans la bibliothèque Android Browser Helper.

Ressources supplémentaires