Home

Awesome

Plugin.Maui.ScreenSecurity

NuGet

Plugin.Maui.ScreenSecurity provides a seamless solution for preventing content exposure, as well as blocking screenshots and recordings within your .NET MAUI application

Platforms supported

PlatformVersion
.Net MAUI AndroidAPI 21+
.Net MAUI iOSiOS 14+
Windows10.0.17763+

Version 1.1.6

What's new?

Click here to see the full Changelog!

Installation

Plugin.Maui.ScreenSecurity is available via NuGet, grab the latest package and install it on your solution:

Install-Package Plugin.Maui.ScreenSecurity

In your MauiProgram class add the following using statement:

using Plugin.Maui.ScreenSecurity;

Finally, add the default instance of the plugin as a singleton to inject it in your code late:

builder.Services.AddSingleton<IScreenSecurity>(ScreenSecurity.Default);

:warning: WARNING :warning:

It's important to acknowledge that preventing users from taking screenshots or recordings of your app can be a challenging task and achieving complete prevention may not be feasible. It's worth noting that no method can entirely eliminate the possibility of your screen being captured through another physical device or a potential breach in the OS.

:point_right: It's also important to consider the impact on user experience when implementing any of these methods and striking a balance with the security concerns of your app.


API Usage

If you are still using version 1.0.0, please refer to the Legacy docs for the previous version.

The new unified API only have 2 methods: ActivateScreenSecurityProtection() and DeactivateScreenSecurityProtection(), with optional parameters that will be only applied to the iOS platform.

void ActivateScreenSecurityProtection();

When you activate this protection, your app's content will be safeguarded when it's sent to the Recents screen or the App Switcher. This helps ensure that sensitive information won't be exposed.

Behavior by platform:

void ActivateScreenSecurityProtection(bool blurScreenProtection, bool preventScreenshot, bool preventScreenRecording);

This method is similar to the previous method, but with parameters to change the default values in iOS:

void ActivateScreenSecurityProtection(ScreenProtectionOptions screenProtectionOptions);

This method is similar to the original method, but takes a ScreenProtectionOptions parameter. This allows you to further customize the screen protection by specifying either a Color or an Image, along with the the screenshot and screen recording protection for iOS devices.

Note: If you set both Color and Image, it will only apply the one you declared first.

ScreenProtectionOptions properties:

void DeactivateScreenSecurityProtection();

This method deactivates all screen security protection.

Usage Example

public partial class MainPage : ContentPage
{
    private readonly IScreenSecurity _screenSecurity;

    public MainPage(IScreenSecurity screenSecurity)
    {
        InitializeComponent();

        _screenSecurity = screenSecurity;
    }

    protected override void OnAppearing()
    {
        base.OnAppearing();

        // Activate the screen security protection with default settings
        _screenSecurity.ActivateScreenSecurityProtection();

        /*
        // 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();
        
        base.OnDisappearing();
    }
}

Sample

Refer to the ScreenSecuritySample for a comprehensive and detailed implementation of this plugin, providing you with a complete understanding of its usage.

Contributions

Please feel free to open an Issue if you encounter any bugs or submit a PR to contribute improvements or fixes. Your contributions are greatly appreciated.

License

The Plugin.Maui.ScreenSecurity is licensed under MIT.

Contributors