Cải thiện quyền riêng tư trên web cho người dùng bằng Thẻ tuỳ chỉnh tạm thời

Đô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.

Tài nguyên khác