2017-09-14 6 views
1

私は著作権で保護されたコンテンツを持っているアプリケーションを持っています。私はユーザーにそれを記録させたくありません。彼らが画面の録画を開始する場合、私はこれをキャッチするアプリを望みます。画面が記録されている場合にキャッチする機能は何ですか?デバイス画面がIOSに記録されているかどうかを確認する方法11

私は予防したくない、私は理解してそれをキャッチしたい。

注:一部の回答は、AirPlayやミラーリングなどの解決策を示しています。私が望むのは、アプリの前または途中で開始された画面録画だけを捕捉することです。ユーザーがAirPlayとミラーリングを使用できるようにしたい。

+2

[ios11で画面レコードを防ぐ方法]の可能な重複(https://stackoverflow.com/questions/45401959/how-to-prevent-screen-record-in- ios11) –

答えて

1

画面は、ユーザーがUIApplicationUserDidTakeScreenshotNotificationを聞くことによって、スクリーンショットを撮影した場合にも検出することができ、この

UIScreen.main.isCaptured 
+0

これは画面キャプチャだけでなく、airplayによるミラーリングです。正確な解決策ではありません。 – birdcage

+0

このリンクをご覧くださいhttps://developer.apple.com/documentation/uikit/uiscreen –

+0

私はしました。 "このプロパティの値がtrueの場合、この画面のコンテンツは積極的に記録、ミラーリング、またはAirPlay経由で送信されます。" – birdcage

0

で記録されているかどうかを確認することができます。

また、録画を検出するために使用することができway-

let main = OperationQueue.main 
NotificationCenter.default.addObserver(forName: NSNotification.Name.UIApplicationUserDidTakeScreenshot, 
    object: nil, 
    queue: mainQueue, 
    using: { notification in 
     // Warn user 
}) 

そして

UIScreen.main.isCaptured 

This下回ることをで使用することができます。私はこれを使用していないが、ほとんどあなたはこれのためにKVOを行う必要があります。

+0

私はスクリーンショットを検出したくありません。画面の記録を検出したいだけです。また、エアプレイやミラーリングもありません。 – birdcage

0

画面をチェックし(Objective Cのために)

を記録されているアプリのデリゲートに以下のコードを入れて、仕上げの起動を行なったし、アクティブになりました。

BOOL isCaptured = [[UIScreen mainScreen] isCaptured];

0

現在のステータスを取得するには、UIScreen.main.isCapturedを使用します。あなたは新しい通知UIScreenCapturedDidChangeNotificationを聞く必要があります。録音状態が変わると、何らかのアクション(例えば、再生の停止など)が必要になります。これはiOS11 +であることを忘れないでください。

コードの断片:

if (@available(iOS 11.0, *)) { 
    [[NSNotificationCenter defaultCenter] addObserver:self 
        selector:@selector(capturedChange) 
    name:UIScreenCapturedDidChangeNotification object:nil]; 
} 


- (void)capturedChange { 
    if (@available(iOS 11.0, *)) { 
    NSLog(@"Recording Status: %s", [UIScreen mainScreen].isCaptured ? "true" : "false"); 
     //do something 
    } 
} 
関連する問題