Plugin.Maui.ScreenSecurity proporciona una solución perfecta para prevenir la exposición al contenido, así como al bloqueo de capturas de pantalla y grabaciones dentro de su aplicación .NET Maui
| Plataforma | Versión |
|---|---|
| .Net maui android | API 21+ |
| .Net maui iOS | iOS 14+ |
| Windows | 10.0.17763+ |
IsProtectionEnabled para verificar si la protección de la pantalla ya está habilitada o deshabilitada.ScreenCaptured , que desencadena notificaciones cuando se toma una captura de pantalla o se registra la pantalla.Blazor para mostrar la implementación de este complemento.¡Haga clic aquí para ver el cambio de cambio completo!
Plugin.Maui.ScreenSecurity está disponible a través de Nuget, toma el último paquete e instálelo en su solución:
Install-Package Plugin.Maui.ScreenSecurity
Inicialice el complemento en su clase 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 ( ) ;
} En su archivo Android.manifest (Platforms/Android) agregue el siguiente permiso:
< uses-permission android : name = " android.permission.DETECT_SCREEN_CAPTURE " />Finalmente, agregue la instancia predeterminada del complemento como un singleton para inyectarlo en su código tarde:
builder . Services . AddSingleton < IScreenSecurity > ( ScreenSecurity . Default ) ; Es importante reconocer que evitar que los usuarios tomen capturas de pantalla o grabaciones de su aplicación pueden ser una tarea desafiante y lograr una prevención completa puede no ser factible. Vale la pena señalar que ningún método puede eliminar por completo la posibilidad de que su pantalla se capture a través de otro dispositivo físico o una posible violación en el sistema operativo.
También es importante considerar el impacto en la experiencia del usuario al implementar cualquiera de estos métodos y lograr un equilibrio con las preocupaciones de seguridad de su aplicación.
Si todavía está usando la versión 1.0.0, consulte los documentos heredados para la versión anterior.
La nueva API unificada incluye dos métodos: ActivateScreenSecurityProtection() y DeactivateScreenSecurityProtection() , con parámetros opcionales aplicables solo a la plataforma iOS. También proporciona dos propiedades: IsProtectionEnabled , que verifica si la protección está activa, y el controlador de eventos ScreenCaptured , que notifica cuándo se toma una captura de pantalla o se registra la pantalla.
void ActivateScreenSecurityProtection ( ) ;Cuando active esta protección, el contenido de su aplicación se salvaguardará cuando se envíe a la pantalla Recents o al conmutador de aplicaciones. Esto ayuda a garantizar que la información confidencial no esté expuesta.
void ActivateScreenSecurityProtection ( bool blurScreenProtection , bool preventScreenshot , bool preventScreenRecording ) ;Este método es similar al método anterior, pero con los parámetros para cambiar los valores predeterminados en iOS:
blurScreenProtection : Habilitar/deshabilitar la pantalla de la pantalla para evitar la visibilidad del contenido en segundo plano. Verdadero por defecto.preventScreenshot : Decide si los usuarios pueden tomar capturas de pantalla de tu aplicación. Verdadero por defecto.preventScreenRecording : controle si los usuarios pueden grabar la pantalla mientras usan su aplicación. Verdadero por defecto. void ActivateScreenSecurityProtection ( ScreenProtectionOptions screenProtectionOptions ) ; Este método es similar al método original, pero toma un parámetro ScreenProtectionOptions . Esto le permite personalizar aún más la protección de la pantalla especificando un color o una imagen , junto con la captura de pantalla y la protección de grabación de pantalla para dispositivos iOS.
Nota : Si establece el color y la imagen , solo aplicará el que declaró primero.
Propiedades ScreenProtectionOptions :
Color : representa un color en forma de una cadena hexadecimal y se puede pasar como un argumento para personalizar la capa de color. Admite formatos como #RGB , #RGBA , #RRGGBB o #RRGGBBAA . Vacío por defecto.Image : el nombre del archivo de imagen junto con su extensión. Para utilizar esta propiedad, siga estos pasos:ResourcesImages .MauiImage , considere cambiar la acción de compilación a Embedded resource para garantizar una funcionalidad adecuada.PreventScreenshot : Decide si los usuarios pueden tomar capturas de pantalla de tu aplicación. Verdadero por defecto.PreventScreenRecording : controle si los usuarios pueden grabar la pantalla mientras usan su aplicación. Verdadero por defecto. void DeactivateScreenSecurityProtection ( ) ;Este método desactiva toda la protección de seguridad de la pantalla.
bool IsProtectionEnabled { get ; }Este bool verifica si la protección de la pantalla está habilitada.
event EventHandler < EventArgs > ? ScreenCaptured ;El controlador de eventos se activa cuando se captura la pantalla, ya sea a través de una captura de pantalla o grabación en Android e iOS, pero solo para capturas de pantalla en 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 la muestra de seguridad de la pantalla para obtener una implementación integral y detallada de este complemento, proporcionándole una comprensión completa de su uso.
No dude en abrir un problema si encuentra algún error o envía un PR para contribuir con mejoras o correcciones. Sus contribuciones son muy apreciadas.
El complemento.maui.screenseCurity tiene licencia bajo la licencia MIT.