Skip to content

Safe Data Leakage via Application Background Screenshot and Prevent Screenshot for iOS.

License

Notifications You must be signed in to change notification settings

prongbang/ScreenProtectorKit

Repository files navigation

ScreenProtectorKit πŸ›‘οΈ

Swift Platform CocoaPods Compatible SPM Compatible License

Secure your iOS app's sensitive data by preventing screenshots and protecting background app snapshots with ease.

✨ Features

  • πŸ“Έ Screenshot Prevention - Detect and handle screenshot attempts
  • πŸ–ΌοΈ Custom Background Protection - Replace app preview with custom content
  • 🎨 Multiple Protection Styles:
    • Blur effect
    • Custom image
    • Solid color
  • 🎬 Screen Recording Detection - Know when screen is being recorded
  • πŸš€ Easy Integration - Simple API with clear documentation
  • πŸ“¦ Multiple Installation Options - CocoaPods and Swift Package Manager support

πŸ“¦ Installation

CocoaPods

Add to your Podfile:

pod 'ScreenProtectorKit'

Then run:

pod install

Swift Package Manager

Add to your Package.swift:

let package = Package(
  dependencies: [
    .package(url: "https://github.com/prongbang/ScreenProtectorKit.git", from: "1.3.1"),
  ],
)

Or via Xcode:

  1. File β†’ Add Packages...
  2. Enter package URL: https://github.com/prongbang/ScreenProtectorKit.git
  3. Select version: 1.3.1 or later

πŸš€ Quick Start

Basic Setup

import ScreenProtectorKit

class AppDelegate: FlutterAppDelegate {
    private lazy var screenProtectorKit = { 
        return ScreenProtectorKit(window: window) 
    }()
    
    override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        // Configure screenshot prevention
        screenProtectorKit.configurePreventionScreenshot()
        return true
    }
}

πŸ“± Protection Methods

1. Screenshot Prevention

Detect and respond to screenshot attempts:

override func applicationDidBecomeActive(_ application: UIApplication) {
    screenProtectorKit.enabledPreventScreenshot()
}

override func applicationWillResignActive(_ application: UIApplication) {
    screenProtectorKit.disablePreventScreenshot()
}

2. Blur Background Protection

Apply blur effect when app goes to background:

override func applicationDidBecomeActive(_ application: UIApplication) {
    screenProtectorKit.disableBlurScreen()
}

override func applicationWillResignActive(_ application: UIApplication) {
    screenProtectorKit.enabledBlurScreen()
}

3. Image Background Protection

Show custom image when app is in background:

override func applicationDidBecomeActive(_ application: UIApplication) {
    screenProtectorKit.disableImageScreen()
}

override func applicationWillResignActive(_ application: UIApplication) {
    screenProtectorKit.enabledImageScreen(named: "LaunchImage")
}

4. Color Background Protection

Display solid color when app is in background:

override func applicationDidBecomeActive(_ application: UIApplication) {
    screenProtectorKit.disableColorScreen()
}

override func applicationWillResignActive(_ application: UIApplication) {
    screenProtectorKit.enabledColorScreen(hexColor: "#ffffff")
}

5. Screen Recording Detection

Check if screen is being recorded:

let isRecording = screenProtectorKit.screenIsRecording()
if isRecording {
    // Handle screen recording scenario
}

πŸ’‘ Usage Examples

Complete Implementation

import ScreenProtectorKit

class AppDelegate: FlutterAppDelegate {
    private lazy var screenProtectorKit = { 
        return ScreenProtectorKit(window: window) 
    }()
    
    override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        // Setup screenshot prevention
        screenProtectorKit.configurePreventionScreenshot()
        
        // Handle screen recording if needed
        if screenProtectorKit.screenIsRecording() {
            showRecordingWarning()
        }
        
        return true
    }
    
    override func applicationDidBecomeActive(_ application: UIApplication) {
        // Enable screenshot prevention
        screenProtectorKit.enabledPreventScreenshot()
        
        // Remove protection overlay
        screenProtectorKit.disableBlurScreen()
    }
    
    override func applicationWillResignActive(_ application: UIApplication) {
        // Disable screenshot prevention
        screenProtectorKit.disablePreventScreenshot()
        
        // Add protection overlay
        screenProtectorKit.enabledBlurScreen()
    }
    
    private func showRecordingWarning() {
        // Show alert to user about screen recording
    }
}

⚠️ Important Notes

  • Screenshot prevention on iOS works by detecting attempts, not blocking them entirely
  • Background protection helps prevent data leaks in app switcher
  • Screen recording detection only indicates if recording is in progress
  • Test thoroughly across different iOS versions and devices

πŸ”§ Requirements

  • iOS 13.0+
  • Swift 5.5+
  • Xcode 13.0+

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ’– Support the Project

If you find this package helpful, please consider supporting it:

"Buy Me A Coffee"

πŸ”— Links