לפעמים מפתחי Android צריכים חוויית שימוש זמנית באינטרנט כדי לעמוד בדרישות של האפליקציה שלהם. כרטיסייה זמנית בהתאמה אישית היא כרטיסייה בהתאמה אישית מיוחדת שמפעילה דפדפן אינטרנט מבודד לחלוטין מתוך אפליקציה. אפשר להשתמש בה באסטרטגיות אימות שלא צריכות לסנכרן את מצב ההתחברות עם הדפדפן או עם סשנים באינטרנט שבהם לא צריך לשמור נתונים, כמו מצב גלישה פרטית.
כברירת מחדל, הכרטיסיות בהתאמה אישית משתפות את המצב והתכונות מהדפדפן של המשתמש. בכרטיסייה מותאמת אישית זמנית, קובצי cookie, קבצים שנשמרו במטמון, היסטוריה, פרטי כניסה ונתונים אחרים קיימים רק בהיקף של המכונה של הסשן. כשסוגרים את הפעילות בכרטיסייה בהתאמה אישית, הנתונים נמחקים ללא זכר.
בדומה לכרטיסיות בהתאמה אישית, אפשר להתאים אישית כרטיסייה זמנית בהתאמה אישית באמצעות פעולות ועיצוב של ממשק המשתמש. אם אתם כבר משתמשים בכרטיסיית Auth לצורך אסטרטגיות אימות, תוכלו להוסיף גלישה זמנית לכוונה להפעלה, וכך להוסיף שכבת פרטיות נוספת לתהליך.
כרטיסיות זמניות בהתאמה אישית זמינות מגרסת Chrome 136 וניתן ליצור אותן באמצעות שורת קוד אחת. למשתמשים שבהם התכונה לא זמינה, תוכלו לאמת אם הגלישה הזמנית מופעלת ולשלב בצורה חלקה חלופות חלופיות.
איך בודקים אם יש תמיכה בדפדוף זמני
כדי להשתמש בכרטיסיות זמניות בהתאמה אישית, צריך את ספריית הדפדפן AndroidX. אפשר להוסיף את AndroidX Browser Library בקטע יחסי התלות בקובץ build.gradle
של הפרויקט. ממשקי ה-API זמינים בגרסה אלפא. מוסיפים את הקטע הבא לקובץ ה-build:
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));
למפתחים שמשתמשים ב-Auth Tab, מוסיפים את ה-setter של הגלישה הזמנית ל-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.