A volte gli sviluppatori Android hanno bisogno di un'esperienza web effimera per soddisfare i requisiti delle loro app. Una scheda personalizzata temporanea è una scheda personalizzata specializzata che avvia un browser web completamente isolato all'interno di un'app. Può essere utilizzata per le strategie di autenticazione che non devono sincronizzare lo stato di accesso con il browser o le sessioni web in cui i dati non devono essere conservati, ad esempio una modalità di navigazione privata.
Per impostazione predefinita, le schede personalizzate condividono lo stato e le funzionalità del browser dell'utente. In una scheda personalizzata temporanea, i cookie, i file memorizzati nella cache, la cronologia, le credenziali e altri dati esistono solo nell'ambito dell'istanza della sessione. Quando l'attività della scheda personalizzata viene chiusa, i dati vengono eliminati senza lasciare traccia.
Come le schede personalizzate, una scheda personalizzata temporanea può essere personalizzata con azioni e temi dell'interfaccia utente. Se utilizzi già la scheda Auth per le strategie di autenticazione, puoi aggiungere la navigazione effimera all'intent di lancio, aggiungendo un altro livello di privacy alla procedura.
Le schede personalizzate effimere sono disponibili a partire da Chrome 130 e possono essere create con una singola riga di codice. Per gli utenti per i quali la funzionalità non è disponibile, puoi verificare se la navigazione effimera è attivata e integrare facilmente alternative di riserva.
Avvia una sessione temporanea
Le schede personalizzate temporanee richiedono la libreria del browser AndroidX. La raccolta Browser di AndroidX può essere aggiunta nella sezione delle dipendenze del file build.gradle
di un progetto. Le API sono disponibili in una build alpha. Aggiungi quanto segue al file di build:
dependencies {
implementation 'androidx.browser:browser:1.9.0-alpha01'
}
Per creare una sessione di navigazione effimera, utilizza il settatore personalizzato fornito in 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));
Poiché la navigazione effimera viene attivata da un intent aggiuntivo nell'implementazione standard delle schede personalizzate di Chrome, le personalizzazioni possono essere aggiunte come nelle normali schede personalizzate.
// 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));
Per gli sviluppatori che utilizzano Auth Tab, aggiungi il set di navigazione temporanea a AuthTabIntent
:
// Add ephemeral browsing to Auth Tab
AuthTabIntent authTabIntent = new AuthTabIntent.Builder()
.setEphemeralBrowsingEnabled(true)
.build();
authTabIntent.launch(launcher, uri, redirectScheme);
Alcune personalizzazioni vengono modificate o non sono disponibili in una scheda temporanea:
- La cronologia non viene registrata in una sessione temporanea.
- Gli utenti non riescono a scaricare la pagina corrente.
- La pressione prolungata di un link per aprirlo in una nuova scheda di Chrome è disattivata.
- L'opzione per aprire la pagina corrente nel browser predefinito con il menu extra avvia una finestra del browser in modalità di navigazione in incognito.
Ripristino delle implementazioni precedenti
Non tutti i dispositivi degli utenti possono avviare schede personalizzate temporanee. Per gestire questi casi, gli sviluppatori possono utilizzare CustomTabsClient
per eseguire query sul browser sottostante e determinare se la navigazione effimera è supportata. È necessaria una connessione di servizio a CustomTabsClient
. Per farlo, avvia un nuovo CustomTabsServiceConnection
per accedere al CustomTabsClient
fornito dopo un'associazione riuscita.
// 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);
Le app che servono utenti che non hanno ancora accesso alle schede personalizzate temporanee possono utilizzare altri metodi, ad esempio WebView con la memorizzazione nella cache disattivata. Un esempio di implementazione che sfrutta le schede personalizzate effimere con fallback a WebView si trova nella libreria Android Browser Helper.