투케이2K

286. (ios/swift) AppDelegate 앱 딜리게이트에 화면 캡쳐 (capture) 및 녹화 (record) 이벤트 감지 등록 실시 본문

IOS

286. (ios/swift) AppDelegate 앱 딜리게이트에 화면 캡쳐 (capture) 및 녹화 (record) 이벤트 감지 등록 실시

투케이2K 2022. 11. 16. 11:00

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT

 

[소스 코드]

import UIKit
import AVFoundation

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
    
    
    // MARK: - [클래스 설명]
    /*
    // -----------------------------------------
    1. 애플리케이션 딜리게이트
    // -----------------------------------------
    */
    
    
    
    
    
    // MARK: - [전역 변수 선언 실시]
    var window: UIWindow? // [ios 13 미만 버전 제어 위해 선언]



    
    
    // MARK: - [앱 프로세스 완료 및 앱 실행 실시]
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        print("")
        print("====================================")
        print("[AppDelegate >> didFinishLaunchingWithOptions]")
        print("-------------------------------")
        print("설 명 :: 앱 프로세스 완료 및 앱 실행 실시")
        print("====================================")
        print("")
        
        
        // -----------------------------------------
        // MARK: - [캡쳐 및 녹화 이벤트 감지를 위해 NotificationCenter 등록]
        window = UIWindow(frame: UIScreen.main.bounds)
        window?.rootViewController = ViewController()
        window?.makeKeyAndVisible()
        
        NotificationCenter.default.addObserver(
          self,
          selector: #selector(self.captureEvent),
          name: UIApplication.userDidTakeScreenshotNotification, // [캡쳐 감지]
          object: nil
        )
        NotificationCenter.default.addObserver(
          self,
          selector: #selector(self.recordEvent),
          name: UIScreen.capturedDidChangeNotification, // [녹화 감지]
          object: nil
        )
        // -----------------------------------------

        
        // -----------------------------------------
        return true
        // -----------------------------------------
    }



    
    
    // MARK: - [Scene 만들기 위한 구성 객체 반환 : 스토리보드 , info]
    @available(iOS 13.0, *)
    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
        print("")
        print("====================================")
        print("[AppDelegate >> configurationForConnecting]")
        print("-------------------------------")
        print("설 명 :: Scene 만들기 위한 구성 객체 반환 : 스토리보드 , info")
        print("====================================")
        print("")

        return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
    }

    
    
    
    
    // MARK: - [Scene 구성 객체 해제 실시]
    @available(iOS 13.0, *)
    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
        print("")
        print("====================================")
        print("[AppDelegate >> didDiscardSceneSessions]")
        print("-------------------------------")
        print("설 명 :: Scene 구성 객체 해제 실시")
        print("====================================")
        print("")
    }
    
    
    
    
    
    // MARK: - [애플리케이션 사용자가 작업 태스크 날린 이벤트 감지]
    func applicationWillTerminate(_ application: UIApplication) {
        print("")
        print("====================================")
        print("[AppDelegate >> applicationWillTerminate]")
        print("-------------------------------")
        print("설 명 :: 애플리케이션 사용자가 작업 태스크 날린 이벤트 감지")
        print("====================================")
        print("")
    }
    
    
    
    
    
    // MARK: - [디바이스 화면 세로 모드 고정 실시]
    //*
    func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
        /*
        print("")
        print("====================================")
        print("[AppDelegate >> supportedInterfaceOrientationsFor]")
        print("-------------------------------")
        print("설 명 :: 디바이스 화면 세로 모드 고정 실시")
        print("====================================")
        print("")
        // */
        
        // [세로 방향 고정]
        return UIInterfaceOrientationMask.portrait
    }
    // */
    
    
    
    
    
    // MARK: - [캡쳐 이벤트 감지 메소드]
    @objc private func captureEvent() {
        print("")
        print("====================================")
        print("[AppDelegate >> captureEvent]")
        print("-------------------------------")
        print("설 명 :: 캡쳐 이벤트 감지")
        print("====================================")
        print("")
    }
    
    
    
    
    
    // MARK: - [녹화 이벤트 감지 메소드]
    @objc private func recordEvent() {
        print("")
        print("====================================")
        print("[AppDelegate >> recordEvent]")
        print("-------------------------------")
        print("설 명 :: 녹화 이벤트 감지")
        print("====================================")
        print("")
    }
    

} // [클래스 종료]
 

[결과 출력]

 

 

반응형
Comments