Plugin.Maui.ScreenSecurity fournit une solution transparente pour prévenir l'exposition au contenu, ainsi que le blocage des captures d'écran et des enregistrements dans votre application .net Maui
| Plate-forme | Version |
|---|---|
| .Net Maui Android | API 21+ |
| .Net Maui iOS | iOS 14+ |
| Fenêtre | 10.0.17763+ |
IsProtectionEnabled pour vérifier si la protection de l'écran est déjà activée ou désactivée.ScreenCaptured , qui déclenche les notifications lorsqu'une capture d'écran est prise ou que l'écran est enregistré.Blazor pour présenter l'implémentation de ce plugin.Cliquez ici pour voir le Changelog complet!
Plugin.Maui.ScreenSecurity est disponible via NuGet, prenez le dernier package et installez-le sur votre solution:
Install-Package Plugin.Maui.ScreenSecurity
Initialisez le plugin dans votre 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 ( ) ;
} Dans votre fichier Android.manifest (plates-formes / Android), ajoutez l'autorisation suivante:
< uses-permission android : name = " android.permission.DETECT_SCREEN_CAPTURE " />Enfin, ajoutez l'instance par défaut du plugin en tant que singleton pour l'injecter en retard dans votre code:
builder . Services . AddSingleton < IScreenSecurity > ( ScreenSecurity . Default ) ; Il est important de reconnaître que l'empêcher des utilisateurs de prendre des captures d'écran ou des enregistrements de votre application peut être une tâche difficile et obtenir une prévention complète peut ne pas être possible. Il convient de noter qu'aucune méthode ne peut éliminer entièrement la possibilité que votre écran soit capturé via un autre appareil physique ou une brèche potentielle dans le système d'exploitation.
Il est également important de considérer l'impact sur l'expérience utilisateur lors de la mise en œuvre de l'une de ces méthodes et de la conclusion d'un équilibre avec les problèmes de sécurité de votre application.
Si vous utilisez toujours la version 1.0.0, veuillez vous référer aux documents hérités pour la version précédente.
La nouvelle API unifiée comprend deux méthodes: ActivateScreenSecurityProtection() et DeactivateScreenSecurityProtection() , avec des paramètres facultatifs applicables uniquement à la plate-forme iOS. Il fournit également deux propriétés: IsProtectionEnabled , qui vérifie si la protection est active, et le gestionnaire d'événements ScreenCaptured , qui informe lorsqu'une capture d'écran est prise ou que l'écran est enregistré.
void ActivateScreenSecurityProtection ( ) ;Lorsque vous activez cette protection, le contenu de votre application sera sauvegardé lorsqu'il sera envoyé à l'écran Récentes ou au Switcher d'application. Cela permet de garantir que les informations sensibles ne seront pas exposées.
void ActivateScreenSecurityProtection ( bool blurScreenProtection , bool preventScreenshot , bool preventScreenRecording ) ;Cette méthode est similaire à la méthode précédente, mais avec des paramètres pour modifier les valeurs par défaut dans iOS:
blurScreenProtection : activer / désactiver le flou d'écran pour empêcher la visibilité du contenu en arrière-plan. Vrai par défaut.preventScreenshot : décidez si les utilisateurs peuvent prendre des captures d'écran de votre application. Vrai par défaut.preventScreenRecording : Contrôlez si les utilisateurs peuvent enregistrer l'écran lors de l'utilisation de votre application. Vrai par défaut. void ActivateScreenSecurityProtection ( ScreenProtectionOptions screenProtectionOptions ) ; Cette méthode est similaire à la méthode d'origine, mais prend un paramètre ScreenProtectionOptions . Cela vous permet de personnaliser davantage la protection de l'écran en spécifiant une couleur ou une image , ainsi que la capture d'écran et l'enregistrement d'écran pour les appareils iOS.
Remarque : Si vous définissez à la fois la couleur et l'image , elle n'appliquera que celle que vous avez déclaré en premier.
ScreenProtectionOptions Propriétés:
Color : représente une couleur sous la forme d'une chaîne hexadécimale et peut être transmise comme un argument pour personnaliser la couche de couleur. Il prend en charge des formats tels que #RGB , #RGBA , #RRGGBB ou #RRGGBBAA . Vide par défaut.Image : le nom du fichier image avec son extension. Afin d'utiliser cette propriété, veuillez suivre ces étapes:ResourcesImages .MauiImage , envisagez de modifier l'action de build en Embedded resource pour assurer une bonne fonctionnalité.PreventScreenshot : décidez si les utilisateurs peuvent prendre des captures d'écran de votre application. Vrai par défaut.PreventScreenRecording : Contrôlez si les utilisateurs peuvent enregistrer l'écran lors de l'utilisation de votre application. Vrai par défaut. void DeactivateScreenSecurityProtection ( ) ;Cette méthode désactive toute la protection de la sécurité des écrans.
bool IsProtectionEnabled { get ; }Ce bool vérifie si la protection d'écran est activée.
event EventHandler < EventArgs > ? ScreenCaptured ;Le gestionnaire d'événements est déclenché lorsque l'écran est capturé, soit via une capture d'écran, soit en enregistrant sur Android et iOS, mais uniquement pour des captures d'écran sur 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" ) ;
}
} Reportez-vous à l'échantillon d'écran pour une implémentation complète et détaillée de ce plugin, vous fournissant une compréhension complète de son utilisation.
N'hésitez pas à ouvrir un problème si vous rencontrez des bogues ou si vous soumettez un PR pour apporter des améliorations ou des correctifs. Vos contributions sont grandement appréciées.
Le plugin.maui.screensecurity est sous licence MIT.