يحتاج مطوّرو تطبيقات Android أحيانًا إلى تجربة ويب عابرة لتلبية متطلبات تطبيقاتهم. "العلامة المخصّصة المؤقتة" هي علامة مخصّصة مخصّصة لتشغيل متصفّح ويب معزول بالكامل من داخل تطبيق. ويمكن استخدامها لاستراتيجيات المصادقة التي لا يجب أن تتزامن مع حالة تسجيل الدخول مع جلسات المتصفّح أو الويب التي لا يجب الاحتفاظ ببياناتها، مثل وضع التصفّح بخصوصية تامّة.
تشارك علامات التبويب المخصّصة تلقائيًا الحالة والميزات من متصفّح المستخدم. في علامة التبويب المخصّصة المؤقتة، لا تتوفّر ملفات تعريف الارتباط والملفات المخزّنة مؤقتًا والسجلّ وبيانات الاعتماد والبيانات الأخرى إلا في نطاق جلسة المستخدم. عند إغلاق "نشاط علامة التبويب المخصّصة"، يتم حذف البيانات بدون أي أثر.
مثل علامات التبويب المخصّصة، يمكن تخصيص علامة التبويب المخصّصة المؤقتة باستخدام الإجراءات وتنسيقات واجهة المستخدم. إذا كنت تستخدم حاليًا علامة التبويب "المصادقة" لاستراتيجيات المصادقة، يمكن إضافة ميزة التصفّح المؤقت إلى نية الإطلاق، ما يضيف طبقة أخرى من الخصوصية إلى العملية.
تتوفّر علامات التبويب المخصّصة المؤقتة من الإصدار 136 من Chrome ويمكن إنشاؤها باستخدام سطر واحد من الرمز البرمجي. بالنسبة إلى المستخدمين الذين لا تتوفّر لديهم الميزة، يمكنك التحقّق مما إذا كان وضع التصفّح المؤقّت مفعّلاً ودمج بدائل النسخ الاحتياطية بسلاسة.
التحقّق مما إذا كانت ميزة "التصفّح المؤقّت" متاحة
تتطلّب علامات التبويب المخصّصة المؤقتة مكتبة المتصفّح AndroidX. يمكن إضافة مكتبة متصفّح AndroidX في قسم "التبعيات" في ملف build.gradle
الخاص بالمشروع. تتوفّر واجهات برمجة التطبيقات في إصدار أوّلي. أضِف ما يلي إلى ملف الإنشاء:
dependencies {
implementation 'androidx.browser:browser:1.9.0-alpha05'
}
يمكنك التحقّق مما إذا كانت ميزة التصفّح المؤقّت متاحة من خلال CustomTabsClient#isEphemeralBrowsingSupported(Context, String)
:
// In your activity
if (CustomTabsClient.isEphemeralBrowsingSupported(this, provider)) {
...
}
حيث يكون provider
هو اسم حزمة متصفّح الويب الذي سيتم استخدامه. يُرجى الرجوع إلى مقالة التحقّق مما إذا كان جهاز Android يتضمّن متصفّحًا متوافقًا مع علامات التبويب المخصّصة للحصول على اسم حزمة لمتصفّح متوافق مع علامات التبويب المخصّصة.
بدء جلسة عابرة
لإنشاء جلسة تصفّح عابرة، استخدِم الإعداد المخصّص المقدَّم في 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.