تحسين خصوصية الويب للمستخدمين باستخدام علامات التبويب المخصّصة المؤقتة

يحتاج مطوّرو تطبيقات Android أحيانًا إلى تجربة ويب عابرة لاستيفاء متطلبات تطبيقاتهم. "العلامة المخصّصة المؤقتة" هي علامة مخصّصة مخصّصة لتشغيل متصفّح ويب معزول بالكامل من داخل تطبيق. ويمكن استخدامها لاستراتيجيات المصادقة التي لا يجب أن تُزامن حالة تسجيل الدخول مع جلسات المتصفّح أو الويب التي لا يجب الاحتفاظ ببياناتها، مثل وضع التصفّح بخصوصية تامّة.

تشارك علامات التبويب المخصّصة تلقائيًا الحالة والميزات من متصفّح المستخدم. في علامة التبويب المخصّصة المؤقتة، لا تتوفّر ملفات تعريف الارتباط والملفات المخزّنة مؤقتًا والسجلّ وبيانات الاعتماد والبيانات الأخرى إلا في نطاق جلسة المستخدم. عند إغلاق "نشاط علامة التبويب المخصّصة"، يتم حذف البيانات بدون أي أثر.

مثل علامات التبويب المخصّصة، يمكن تخصيص علامة التبويب المخصّصة المؤقتة باستخدام الإجراءات وتنسيقات واجهة المستخدم. إذا كنت تستخدم حاليًا علامة التبويب "المصادقة" لاستراتيجيات المصادقة، يمكن إضافة ميزة التصفّح المؤقت إلى نية الإطلاق، ما يضيف طبقة أخرى من الخصوصية إلى العملية.

تتوفّر علامات التبويب المخصّصة المؤقتة من الإصدار 130 من Chrome ويمكن إنشاؤها باستخدام سطر واحد من الرمز البرمجي. بالنسبة إلى المستخدمين الذين لا تتوفّر لديهم الميزة، يمكنك التحقّق مما إذا كان التصفح المؤقّت مفعّلاً لديك ودمج البدائل الاحتياطية بسلاسة.

بدء جلسة عابرة

تتطلّب علامات التبويب المخصّصة المؤقتة مكتبة متصفّح AndroidX. يمكن إضافة مكتبة متصفّح AndroidX في قسم "التبعيات" في ملف build.gradle الخاص بالمشروع. تتوفّر واجهات برمجة التطبيقات في إصدار أوّلي. أضِف ما يلي إلى ملف الإنشاء:

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));

بما أنّ التصفّح المؤقّت يتم تشغيله من خلال نية إضافية في التنفيذ العادي لعلامات التبويب المخصّصة في 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:

// 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.

مراجع إضافية