Android 개발자는 앱 요구사항을 충족하기 위해 일시적인 웹 환경이 필요한 경우가 있습니다. 임시 맞춤 탭은 앱 내에서 완전히 격리된 웹브라우저를 실행하는 특수 맞춤 탭입니다. 이는 로그인 상태를 브라우저와 동기화해서는 안 되거나 데이터를 보관해서는 안 되는 웹 세션(예: 시크릿 모드)에 사용할 수 있는 인증 전략입니다.
기본적으로 맞춤 탭은 사용자의 브라우저에서 상태와 기능을 공유합니다. 임시 맞춤 탭에서는 쿠키, 캐시된 파일, 기록, 사용자 인증 정보, 기타 데이터가 세션 인스턴스의 범위 내에만 존재합니다. 맞춤 탭 활동이 닫히면 데이터가 흔적 없이 삭제됩니다.
맞춤 탭과 마찬가지로 임시 맞춤 탭은 작업 및 UI 테마 설정으로 맞춤설정할 수 있습니다. 이미 인증 전략에 인증 탭을 사용하고 있다면 실행 인텐트에 일시적인 탐색을 추가하여 프로세스에 또 다른 개인 정보 보호 레이어를 추가할 수 있습니다.
일회성 맞춤 탭은 Chrome 130부터 사용할 수 있으며 한 줄의 코드로 인스턴스화할 수 있습니다. 이 기능을 사용할 수 없는 사용자의 경우 일시적인 탐색이 사용 설정되어 있는지 확인하고 대체 방법을 원활하게 통합할 수 있습니다.
임시 세션 실행
임시 맞춤 탭에는 AndroidX 브라우저 라이브러리가 필요합니다. AndroidX 브라우저 라이브러리는 프로젝트의 build.gradle
파일의 종속 항목 섹션에 추가할 수 있습니다. 이 API는 알파 빌드에서 사용할 수 있습니다. 빌드 파일에 다음을 추가합니다.
dependencies {
implementation 'androidx.browser:browser:1.9.0-alpha01'
}
일시적인 브라우징 세션을 만들려면 CustomTabsIntent
에 제공된 맞춤 setter를 사용하세요.
// 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));
인증 탭을 사용하는 개발자의 경우 AuthTabIntent
에 임시 탐색 setter를 추가합니다.
// 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 브라우저 도우미 라이브러리에서 확인할 수 있습니다.