Plugin.Maui.ScreenSecurity fornece uma solução perfeita para prevenir a exposição ao conteúdo, além de bloquear capturas de tela e gravações dentro do seu aplicativo .NET Maui
| Plataforma | Versão |
|---|---|
| .Net Maui Android | API 21+ |
| .NET MAUI IOS | iOS 14+ |
| Windows | 10.0.17763+ |
IsProtectionEnabled para verificar se a proteção da tela já está ativada ou desativada.ScreenCaptured , que desencadeia notificações quando uma captura de tela é tirada ou a tela é gravada.Blazor adicionada para mostrar a implementação deste plug -in.Clique aqui para ver o Changelog completo!
Plugin.Maui.ScreenSecurity está disponível via Nuget, pegue o pacote mais recente e instale -o em sua solução:
Install-Package Plugin.Maui.ScreenSecurity
Inicialize o plug -in na sua classe MauiProgram :
using Plugin . Maui . ScreenSecurity ;
public static MauiApp CreateMauiApp ( )
{
var builder = MauiApp . CreateBuilder ( ) ;
builder
. UseMauiApp < App > ( )
. ConfigureFonts ( fonts =>
{
fonts . AddFont ( "OpenSans-Regular.ttf" , "OpenSansRegular" ) ;
fonts . AddFont ( "OpenSans-Semibold.ttf" , "OpenSansSemibold" ) ;
} )
. UseScreenSecurity ( ) ;
return builder . Build ( ) ;
} No seu arquivo Android.manifest (Platforms/Android), adicione a seguinte permissão:
< uses-permission android : name = " android.permission.DETECT_SCREEN_CAPTURE " />Por fim, adicione a instância padrão do plugin como um singleton para injetar -o no seu código tarde:
builder . Services . AddSingleton < IScreenSecurity > ( ScreenSecurity . Default ) ; É importante reconhecer que impedir que os usuários tivessem capturas de tela ou gravações do seu aplicativo pode ser uma tarefa desafiadora e alcançar a prevenção completa pode não ser viável. Vale a pena notar que nenhum método pode eliminar completamente a possibilidade de sua tela ser capturada através de outro dispositivo físico ou uma violação potencial no sistema operacional.
Também é importante considerar o impacto na experiência do usuário ao implementar qualquer um desses métodos e atingir um saldo com as preocupações de segurança do seu aplicativo.
Se você ainda estiver usando a versão 1.0.0, consulte os documentos do Legacy para a versão anterior.
A nova API Unified inclui dois métodos: ActivateScreenSecurityProtection() e DeactivateScreenSecurityProtection() , com parâmetros opcionais aplicáveis apenas à plataforma iOS. Ele também fornece duas propriedades: IsProtectionEnabled , que verifica se a proteção é ativa, e o manipulador de eventos ScreenCaptured , que notifica quando uma captura de tela é tirada ou a tela é gravada.
void ActivateScreenSecurityProtection ( ) ;Quando você ativa essa proteção, o conteúdo do seu aplicativo será salvaguardado quando for enviado para a tela dos recentes ou o comutador de aplicativos. Isso ajuda a garantir que informações confidenciais não sejam expostas.
void ActivateScreenSecurityProtection ( bool blurScreenProtection , bool preventScreenshot , bool preventScreenRecording ) ;Este método é semelhante ao método anterior, mas com parâmetros para alterar os valores padrão no iOS:
blurScreenProtection : Ativar/desativar o desbroteamento da tela para impedir a visibilidade do conteúdo em segundo plano. Verdadeiro por padrão.preventScreenshot : decida se os usuários podem tirar capturas de tela do seu aplicativo. Verdadeiro por padrão.preventScreenRecording : controle se os usuários podem gravar a tela enquanto usam seu aplicativo. Verdadeiro por padrão. void ActivateScreenSecurityProtection ( ScreenProtectionOptions screenProtectionOptions ) ; Este método é semelhante ao método original, mas pega um parâmetro ScreenProtectionOptions . Isso permite que você personalize ainda mais a proteção da tela, especificando uma cor ou uma imagem , juntamente com a criação de captura de tela e proteção de gravação de tela para dispositivos iOS.
Nota : Se você definir a cor e a imagem , ele aplicará apenas o que você declarou primeiro.
Propriedades ScreenProtectionOptions :
Color : representa uma cor na forma de uma corda hexadecimal e pode ser passada como um argumento para personalizar a camada de cores. Ele suporta formatos como #RGB , #RGBA , #RRGGBB ou #RRGGBBAA . Vazio por padrão.Image : o nome do arquivo de imagem junto com sua extensão. Para utilizar esta propriedade, siga estas etapas:ResourcesImages .MauiImage , considere alterar a ação de construção para Embedded resource para garantir a funcionalidade adequada.PreventScreenshot : decida se os usuários podem tirar capturas de tela do seu aplicativo. Verdadeiro por padrão.PreventScreenRecording : controle se os usuários podem gravar a tela enquanto usam seu aplicativo. Verdadeiro por padrão. void DeactivateScreenSecurityProtection ( ) ;Este método desativa toda a proteção de segurança da tela.
bool IsProtectionEnabled { get ; }Este bool verifica se a proteção da tela está ativada.
event EventHandler < EventArgs > ? ScreenCaptured ;O manipulador de eventos é acionado quando a tela é capturada, através de uma captura de tela ou gravação no Android e iOS, mas apenas para capturas de tela no Windows .
public partial class MainPage : ContentPage
{
private readonly IScreenSecurity _screenSecurity ;
public MainPage ( IScreenSecurity screenSecurity )
{
InitializeComponent ( ) ;
_screenSecurity = screenSecurity ;
}
protected override void OnAppearing ( )
{
base . OnAppearing ( ) ;
// Check if screen security protection is not enabled
if ( ! _screenSecurity . IsProtectionEnabled )
{
// Activate the screen security protection with default settings
_screenSecurity . ActivateScreenSecurityProtection ( ) ;
}
// Attach to the ScreenCaptured event handler
_screenSecurity . ScreenCaptured += OnScreenCaptured ;
/*
// For changing iOS options, follow one of the next examples:
// Example 1: Customize with a specific color
var screenProtectionOptions = new ScreenProtectionOptions
{
HexColor = "#6C4675",
PreventScreenshot = true,
PreventScreenRecording = false
};
// Example 2: Customize with an image
var screenProtectionOptions = new ScreenProtectionOptions
{
Image = "protection_bg.png"
PreventScreenshot = false,
PreventScreenRecording = true
};
_screenSecurity.ActivateScreenSecurityProtection(screenProtectionOptions);
*/
}
protected override void OnDisappearing ( )
{
_screenSecurity . DeactivateScreenSecurityProtection ( ) ;
// Detach from the ScreenCaptured event handler
_screenSecurity . ScreenCaptured -= OnScreenCaptured ;
base . OnDisappearing ( ) ;
}
private async void OnScreenCaptured ( object sender , EventArgs e )
{
string title = "ScreenSecuritySample" ;
string message = "Screen was captured by screenshot or recording." ;
await Shell . Current . DisplayAlert ( title , message , "Ok" ) ;
}
} Consulte a amostra de segurança da tela para obter uma implementação abrangente e detalhada deste plug -in, fornecendo uma compreensão completa de seu uso.
Sinta -se à vontade para abrir um problema se encontrar algum bug ou enviar um PR para contribuir com melhorias ou correções. Suas contribuições são muito apreciadas.
O plugin.Maui.SCREENSecurity é licenciado sob licença do MIT.