iOSの録画とスクリーンショットの傍受(および発生したバグ)

1967 ワード

必要:

                ,   APP                   

スクリーンショット


作り方:スクリーンショットを防止する必要があるコントローラに通知を加える
[[NSNotificationCenter defaultCenter] addObserver:observer
                               selector:aSelector
                                   name:UIApplicationUserDidTakeScreenshotNotification
                                 object:nil];

スクリーン


iOS 11 SDKにUIscreenのAPIが追加され、アプリケーションの現在の画面が録画されていることを通知します.UIscreenisCapturedがtrueの場合、現在の画面が録画、ミラーリング、またはAirplayによって送信されていることを示します.画面の状態が変化すると、UIPCreenCapturedDidChangeのnotificationが送信されます.これに基づいて、アプリケーションでこの通知を受信して、ユーザーのスクリーン動作を適切に処理することができます.
スクリーンの作り方:2つのステップに分かれています
  • 最初のステップ:録画画面が開いたとき、セキュリティキーボードのヒント情報をポップアップし、ユーザーに
  • を入力させません.
    追加:キーボードポップアップの通知:キーボードポップアップの通知で録画中かどうかを判断する
     [[NSNotificationCenter defaultCenter] addObserver:self
                                   selector:aSelector
                                       name:UIKeyboardWillShowNotification
                                     object:nil];
    
    

    録画するかどうか
    UIScreen *mainScreen = [UIScreen mainScreen];
            if (@available(iOS 11.0, *)) {
                if (mainScreen.isCaptured) {
      
                }
    
  • 第2のステップ:ユーザがセキュリティキーボードでコンテンツを送信すると、このとき、スクリーンスイッチをオンにして通知を追加し、スクリーンスイッチの通知
  • を記録する.
    if (@available(iOS 11.0, *)) {
            [[NSNotificationCenter defaultCenter]  addObserver:observer
                                       selector:aSelector
                                           name:UIScreenCapturedDidChangeNotification
                                         object:nil];
        }
    

    注意事項がすでに発生した問題
    
     -      ,    
     -       ,       (UIAlertController)      ,        ,           ,                ,           ,    ,        (UIKeyboardWillShowNotification)     (resignFirstResponder)