Улучшите конфиденциальность пользователей в Интернете с помощью временных пользовательских вкладок.

Разработчикам Android иногда требуется временный веб-интерфейс, чтобы удовлетворить требования своих приложений. Эфемерная пользовательская вкладка — это специализированная пользовательская вкладка, которая запускает полностью изолированный веб-браузер из приложения. Это можно использовать для стратегий аутентификации, которые не должны синхронизировать состояние входа в систему с браузером или веб-сессиями, в которых данные не должны сохраняться, например в режиме частного просмотра.

По умолчанию пользовательские вкладки используют состояние и функции браузера пользователя. На временной настраиваемой вкладке файлы cookie, кэшированные файлы, история, учетные данные и другие данные существуют только в пределах экземпляра сеанса. Когда действие настраиваемой вкладки закрывается, данные удаляются бесследно.

Как и пользовательские вкладки, временную пользовательскую вкладку можно настроить с помощью действий и тем пользовательского интерфейса. Если вы уже используете вкладку «Аутентификация» для стратегий аутентификации, к намерению запуска можно добавить временный просмотр, добавив в процесс еще один уровень конфиденциальности.

Эфемерные пользовательские вкладки доступны в Chrome 130 и могут быть созданы с помощью одной строки кода. Для пользователей, которым эта функция недоступна, вы можете проверить, включен ли временный просмотр, и легко интегрировать резервные альтернативы.

Запуск временного сеанса

Для эфемерных пользовательских вкладок требуется библиотека браузера AndroidX . Библиотеку браузера AndroidX можно добавить в раздел зависимостей файла build.gradle проекта. API доступны в альфа-версии. Добавьте в файл сборки следующее:

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

Чтобы создать временный сеанс просмотра, используйте пользовательский установщик, предоставленный в 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));

Поскольку эфемерный просмотр инициируется дополнительным намерением в стандартной реализации пользовательских вкладок Chrome, настройки можно добавлять так же, как и в типичные пользовательские вкладки.

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

Для разработчиков, использующих вкладку Auth, добавьте установщик эфемерного просмотра в AuthTabIntent :

// Add ephemeral browsing to Auth Tab

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

Некоторые настройки изменены или недоступны на временной вкладке:

  • История не записывается в эфемерном сеансе.
  • Пользователи не могут загрузить текущую страницу.
  • Длительное нажатие ссылки для открытия в новой вкладке Chrome отключено.
  • Возможность открыть текущую страницу в браузере по умолчанию с дополнительным меню запускает окно браузера в режиме инкогнито.

Откат к предыдущим реализациям

Не все пользовательские устройства имеют возможность запускать эфемерные пользовательские вкладки. Чтобы справиться с этими случаями, разработчики могут использовать CustomTabsClient для запроса базового браузера, чтобы определить, поддерживается ли временный просмотр. Для этого требуется подключение службы к CustomTabsClient . Для этого запустите новый CustomTabsServiceConnection для доступа к CustomTabsClient предоставленному после успешной привязки.

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

Приложения, обслуживающие пользователей, у которых еще нет доступа к эфемерным настраиваемым вкладкам, могут использовать другие методы, такие как WebView с отключенным кешированием. Пример реализации, использующей эфемерные пользовательские вкладки с возвратом к WebView, можно найти в вспомогательной библиотеке браузера Android .

Дополнительные ресурсы