Recursos do dispositivo
Bloquear capturas de tela em uma página
Deixe uma página do seu app desativar capturas de tela, gravação de tela e a prévia em recentes - e devolva isso quando o usuário sair
1O que isso faz#
Uma linha na sua página ativa o bloqueio de captura de tela do Android para a tela que o usuário está vendo:
- as capturas de tela falham (o usuário recebe a mensagem "não é possível tirar captura de tela" do Android)
- a gravação de tela e o espelhamento mostram um quadro preto
- a prévia do app na tela de recentes fica oculta
O que ela não consegue fazer - e nada no Android consegue - é impedir que alguém fotografe a tela com outro celular. Se você precisa disso, precisa de uma marca d'água, não de uma 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();2Proteja uma página, não o app inteiro#
A proteção pertence à página que a pediu. O AppMint a libera assim que o app navega para qualquer outro lugar - uma nova página, uma rota pushState, uma rota #hash - assim, sua tela de extrato pode ficar protegida enquanto o resto do app tira capturas de tela normalmente.
Isso também significa que uma página precisa pedir de novo após recarregar: um documento novo ainda não pediu nada, e herdar a resposta do anterior é como os apps acabam bloqueados em telas que ninguém queria proteger.
3Em um app de página única#
As mudanças de rota dentro de uma única página liberam a proteção automaticamente, então o padrão é ativá-la quando a tela protegida é montada e deixar a navegação cuidar do resto.
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.4Não use um temporizador para isso#
Uma ideia comum é reafirmar a proteção em intervalos, digamos a cada segundo, e deixá-la expirar quando a página parar de pedir. Não funciona, e vale saber por quê: o Android não consulta seu app quando o usuário aperta os botões de captura de tela. A flag precisa já estar ativa na janela. Qualquer segundo em que sua página esteja ocupada, limitada em segundo plano ou entre dois ciclos do temporizador é um segundo em que a captura de tela funciona.
Peça uma vez, quando o conteúdo sensível aparecer. O AppMint remove a proteção quando o usuário sai.