שיפור הפרטיות באינטרנט למשתמשים באמצעות כרטיסיות זמניות בהתאמה אישית

לפעמים מפתחי 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.

מקורות מידע נוספים