Đôi khi, nhà phát triển Android cần có trải nghiệm web tạm thời để đáp ứng các yêu cầu của ứng dụng. Thẻ tuỳ chỉnh tạm thời là một Thẻ tuỳ chỉnh chuyên biệt, chạy một trình duyệt web hoàn toàn tách biệt trong ứng dụng. Bạn có thể sử dụng thẻ này cho các chiến lược xác thực không nên đồng bộ hoá trạng thái đăng nhập với trình duyệt hoặc các phiên web không nên giữ lại dữ liệu, chẳng hạn như chế độ duyệt web riêng tư.
Theo mặc định, Thẻ tuỳ chỉnh sẽ chia sẻ trạng thái và tính năng từ trình duyệt của người dùng. Trong Thẻ tuỳ chỉnh tạm thời, cookie, tệp được lưu vào bộ nhớ đệm, nhật ký, thông tin xác thực và dữ liệu khác chỉ tồn tại trong phạm vi của phiên bản phiên. Khi bạn đóng thẻ Hoạt động tuỳ chỉnh, dữ liệu sẽ bị xoá không để lại dấu vết.
Giống như Thẻ tuỳ chỉnh, bạn có thể tuỳ chỉnh Thẻ tuỳ chỉnh tạm thời bằng các thao tác và giao diện người dùng. Nếu bạn đang sử dụng Thẻ xác thực cho các chiến lược xác thực, thì bạn có thể thêm tính năng duyệt web tạm thời vào ý định khởi chạy, từ đó tăng cường quyền riêng tư cho quy trình này.
Thẻ tuỳ chỉnh tạm thời có trong Chrome 130 và có thể được tạo bản sao bằng một dòng mã. Đối với những người dùng không có tính năng này, bạn có thể xác thực xem tính năng duyệt web tạm thời có được bật hay không và tích hợp liền mạch các phương án dự phòng.
Chạy một phiên tạm thời
Thẻ tuỳ chỉnh tạm thời yêu cầu thư viện trình duyệt AndroidX. Bạn có thể thêm Thư viện trình duyệt AndroidX trong phần phần phụ thuộc của tệp build.gradle
của dự án. Các API này có trong bản dựng alpha. Thêm nội dung sau vào tệp bản dựng:
dependencies {
implementation 'androidx.browser:browser:1.9.0-alpha01'
}
Để tạo một phiên duyệt web tạm thời, hãy sử dụng phương thức setter tuỳ chỉnh được cung cấp trong 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));
Vì tính năng duyệt web tạm thời được kích hoạt bằng một ý định bổ sung trong quá trình triển khai Thẻ tuỳ chỉnh của Chrome theo tiêu chuẩn, nên bạn có thể thêm các tuỳ chỉnh giống như trong các thẻ tuỳ chỉnh thông thường.
// 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));
Đối với nhà phát triển sử dụng Thẻ xác thực, hãy thêm phương thức setter duyệt web tạm thời vào AuthTabIntent
:
// Add ephemeral browsing to Auth Tab
AuthTabIntent authTabIntent = new AuthTabIntent.Builder()
.setEphemeralBrowsingEnabled(true)
.build();
authTabIntent.launch(launcher, uri, redirectScheme);
Một số tuỳ chỉnh sẽ bị sửa đổi hoặc không dùng được trong thẻ tạm thời:
- Nhật ký không được ghi lại trong một phiên tạm thời.
- Người dùng không thể tải trang hiện tại xuống.
- Tính năng nhấn và giữ đường liên kết để mở trong thẻ mới trên Chrome đã bị tắt.
- Lựa chọn mở trang hiện tại trong trình duyệt mặc định bằng trình đơn mục bổ sung sẽ mở một cửa sổ trình duyệt ở Chế độ ẩn danh.
Dự phòng cho các phương thức triển khai trước đó
Không phải thiết bị nào của người dùng cũng có thể chạy Thẻ tuỳ chỉnh tạm thời. Để xử lý những trường hợp này, nhà phát triển có thể sử dụng CustomTabsClient
để truy vấn trình duyệt cơ bản nhằm xác định xem tính năng duyệt web tạm thời có được hỗ trợ hay không. Điều này đòi hỏi phải có kết nối dịch vụ với CustomTabsClient
. Để thực hiện việc này, hãy chạy một CustomTabsServiceConnection
mới để truy cập vào CustomTabsClient
được cung cấp sau khi liên kết thành công.
// 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);
Các ứng dụng phân phát cho người dùng chưa có quyền truy cập vào Thẻ tuỳ chỉnh tạm thời có thể sử dụng các phương thức khác, chẳng hạn như WebView đã tắt tính năng lưu vào bộ nhớ đệm. Bạn có thể tìm thấy ví dụ về cách triển khai tận dụng Thẻ tuỳ chỉnh tạm thời có dự phòng cho WebView trong thư viện Trình trợ giúp trình duyệt Android.