بهبود حریم خصوصی وب برای کاربران با تب های سفارشی زودگذر

توسعه دهندگان اندروید گاهی برای برآوردن نیازهای برنامه خود به یک تجربه وب زودگذر نیاز دارند. تب سفارشی زودگذر یک تب سفارشی تخصصی است که یک مرورگر وب کاملا ایزوله را از داخل یک برنامه راه اندازی می کند. این می‌تواند برای استراتژی‌های احراز هویت که نباید حالت ورود به سیستم را با مرورگر یا جلسات وب که در آن داده‌ها نباید حفظ شود، همگام‌سازی کند، مانند حالت مرور خصوصی، استفاده شود.

به طور پیش فرض، تب های سفارشی وضعیت و ویژگی های مرورگر کاربر را به اشتراک می گذارند. در یک برگه سفارشی زودگذر، کوکی‌ها، فایل‌های حافظه پنهان، تاریخچه، اعتبارنامه‌ها و سایر داده‌ها فقط در محدوده نمونه جلسه وجود دارند. هنگامی که «فعالیت برگه سفارشی» بسته می‌شود، داده‌ها بدون ردیابی حذف می‌شوند.

مانند تب های سفارشی، یک تب سفارشی زودگذر را می توان با اکشن ها و قالب های رابط کاربری سفارشی کرد. اگر قبلاً از Auth Tab برای استراتژی‌های احراز هویت استفاده می‌کنید، مرور زودگذر را می‌توان به هدف راه‌اندازی اضافه کرد و لایه دیگری از حریم خصوصی را به فرآیند اضافه کرد.

برگه‌های سفارشی زودگذر از 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));

از آنجایی که مرور زودگذر توسط یک هدف اضافی در پیاده‌سازی استاندارد Tabs سفارشی 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 غیرفعال است.
  • گزینه باز کردن صفحه فعلی در مرورگر پیش‌فرض با منوی سرریز، پنجره مرورگر را در حالت ناشناس راه‌اندازی می‌کند.

بازگشت به پیاده سازی های قبلی

همه دستگاه‌های کاربر توانایی راه‌اندازی در تب‌های سفارشی زودگذر را ندارند. برای رسیدگی به این موارد، توسعه دهندگان می توانند از 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 Browser Helper یافت می‌شود.

منابع اضافی