Разработчикам Android иногда требуется эфемерный веб-опыт для удовлетворения требований их приложений. Эфемерная пользовательская вкладка — это специализированная пользовательская вкладка, которая запускает полностью изолированный веб-браузер из приложения. Это может использоваться для стратегий аутентификации, которые не должны синхронизировать состояние входа с браузером или веб-сеансами, где данные не должны сохраняться, например, режим приватного просмотра.
По умолчанию пользовательские вкладки делятся состоянием и функциями из браузера пользователя. В эфемерной пользовательской вкладке файлы cookie, кэшированные файлы, история, учетные данные и другие данные существуют только в рамках экземпляра сеанса. Когда действие пользовательской вкладки закрывается, данные удаляются без следа.
Подобно пользовательским вкладкам, эфемерную пользовательскую вкладку можно настраивать с помощью действий и тем пользовательского интерфейса. Если вы уже используете Auth Tab для стратегий аутентификации, эфемерный просмотр можно добавить к намерению запуска, добавив еще один уровень конфиденциальности в процесс.
Эфемерные пользовательские вкладки доступны с Chrome 136 и могут быть созданы с помощью одной строки кода. Для пользователей, у которых эта функция недоступна, вы можете проверить, включен ли эфемерный просмотр, и легко интегрировать резервные альтернативы.
Проверьте, поддерживается ли временный просмотр
Для Ephemeral Custom Tabs требуется библиотека браузера AndroidX . Библиотеку браузера AndroidX можно добавить в раздел зависимостей файла build.gradle
проекта. API доступны в альфа-сборке. Добавьте следующее в файл сборки:
dependencies {
implementation 'androidx.browser:browser:1.9.0-alpha05'
}
Проверить, поддерживается ли эфемерный просмотр, можно с помощью CustomTabsClient#isEphemeralBrowsingSupported(Context, String)
:
// In your activity
if (CustomTabsClient.isEphemeralBrowsingSupported(this, provider)) {
...
}
где provider
— имя пакета используемого веб-браузера. Обратитесь к разделу Проверка наличия на устройстве Android браузера, поддерживающего пользовательские вкладки , чтобы получить имя пакета для браузера, поддерживающего пользовательские вкладки.
Запустить эфемерный сеанс
Чтобы создать временный сеанс просмотра, используйте пользовательский сеттер, предоставленный в 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 Tab, добавьте эфемерный сеттер просмотра в AuthTabIntent
:
// Add ephemeral browsing to Auth Tab
AuthTabIntent authTabIntent = new AuthTabIntent.Builder()
.setEphemeralBrowsingEnabled(true)
.build();
authTabIntent.launch(launcher, uri, redirectScheme);
Некоторые настройки изменены или недоступны на временной вкладке:
- История не сохраняется в эфемерном сеансе.
- Пользователи не могут загрузить текущую страницу.
- Длительное нажатие на ссылку для открытия в новой вкладке Chrome отключено.
- Возможность открыть текущую страницу в браузере по умолчанию с помощью раскрывающегося меню запускает окно браузера в режиме инкогнито.
Возврат к предыдущим реализациям
Не все пользовательские устройства имеют возможность запуска в Ephemeral Custom Tabs. Чтобы справиться с этими случаями, разработчики могут использовать 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);
Приложения, обслуживающие пользователей, у которых пока нет доступа к Ephemeral Custom Tabs, могут использовать другие методы, например WebView с отключенным кэшированием. Пример реализации, которая использует Ephemeral Custom Tabs с откатом к WebView, можно найти в библиотеке Android Browser Helper .