Funzioni del dispositivo
Blocca gli screenshot su una pagina
Permetti a una pagina della tua app di disattivare screenshot, registrazione dello schermo e anteprima nelle app recenti, e restituisci tutto quando l'utente esce
1Cosa fa#
Una riga dalla tua pagina attiva il blocco della cattura dello schermo di Android per la schermata che l'utente sta guardando:
- gli screenshot falliscono (l'utente vede il messaggio di Android «impossibile acquisire lo screenshot»)
- la registrazione dello schermo e il casting mostrano un fotogramma nero
- l'anteprima dell'app nella schermata delle app recenti è nascosta
Quello che non può fare, e nulla su Android può, è impedire a qualcuno di fotografare lo schermo con un altro telefono. Se ti serve questo, ti serve una filigrana, non un flag.
const b = window.WebToApk || null;
// On the sensitive screen:
b?.setSecureScreen(true);
// Leaving it early (a modal closing, a tab switch inside one page):
b?.setSecureScreen(false);
// Current state:
const locked = b?.isSecureScreen();2Proteggi una pagina, non l'intera app#
La protezione appartiene alla pagina che l'ha richiesta. AppMint la rilascia nel momento in cui l'app naviga altrove (una nuova pagina, un percorso pushState, un percorso #hash), cosÏ la schermata dell'estratto conto può essere protetta mentre il resto dell'app permette gli screenshot come al solito.
Questo significa anche che una pagina deve richiederla di nuovo dopo un ricaricamento: un documento nuovo non ha ancora richiesto nulla, ed ereditare la risposta di quello precedente è il modo in cui le app finiscono bloccate su schermate che nessuno voleva proteggere.
3In un'app a pagina singola#
I cambi di percorso all'interno di una pagina rilasciano la protezione automaticamente, quindi lo schema abituale è attivarla quando la vista protetta viene montata e lasciare il resto alla navigazione.
function showStatement() {
render(statementView);
window.WebToApk?.setSecureScreen(true);
}
// Nothing to undo on the way out — moving to another route
// releases it. Call setSecureScreen(false) yourself only when
// you hide the sensitive content WITHOUT navigating.4Non usare un timer per questo#
Un'idea comune è rinnovare la protezione a intervalli, ad esempio ogni secondo, e lasciarla scadere quando la pagina smette di richiederla. Non funziona, ed è utile sapere perché: Android non consulta la tua app quando l'utente preme i tasti dello screenshot. Il flag deve essere già attivo sulla finestra. Ogni secondo in cui la tua pagina è occupata, rallentata in background o tra un tick del timer e l'altro è un secondo in cui lo screenshot riesce.
Richiedila una sola volta, quando compare il contenuto sensibile. AppMint toglie la protezione quando l'utente esce.