iOS録画画面とスクリーンモニターモニターの実現コード
2973 ワード
最近はプロジェクトの安全性に関する仕事をしています。APP内の敏感ページでユーザーのスクリーンショット防止の機能をする必要があります。
スクリーン状態取得
アルバムの最新写真を編集する方法はiOS 8以降では無効となり、フレームワークの「Photos」もiOS 10以降では無効となります。
検索でUAppplicationの中にはユーザーがスクリーンショットした後の通知しかないです。アプリケーションではスクリーンショットした通知しか受けられません。介入できません。
iOS 11 SDKには、現在の画面が録画されていることを知らせるために、UICreenのAPIが追加されている。UICScreen.isCapturedがtrueであるとき、現在のスクリーンが録画されているか、ミラーリングされているか、あるいはAirlayに送信されているかを示します。
録画画面の状態が変化すると、UIKEreenCapturedDidChangeのnotificationが送信されます。
これに基づいて、アプリケーションでこの通知を受信して、ユーザの記録画面の動作に対応する処理を行うことができます。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
スクリーン状態取得
アルバムの最新写真を編集する方法はiOS 8以降では無効となり、フレームワークの「Photos」もiOS 10以降では無効となります。
検索でUAppplicationの中にはユーザーがスクリーンショットした後の通知しかないです。アプリケーションではスクリーンショットした通知しか受けられません。介入できません。
// This notification is posted after the user takes a screenshot (for example by pressing both the home and lock screen buttons)
UIKIT_EXTERN NSNotificationName const UIApplicationUserDidTakeScreenshotNotification NS_AVAILABLE_IOS(7_0);
直接介入はできませんが、ユーザがスクリーンを切ったら、他の方法でユーザの行動を制限したり、ポップアップヒントをユーザに伝えることができます。
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(screenshots) name:UIApplicationUserDidTakeScreenshotNotification object:nil];
}
-(void)screenshots
{
UIAlertView *alert1 = [[UIAlertView alloc] initWithTitle:nil message:@"[ ] 。 , 。" delegate:nil cancelButtonTitle:nil otherButtonTitles:@" ", nil];
[alert1 show];
-(void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationUserDidTakeScreenshotNotification object:nil];
}
ディスク状態取得iOS 11 SDKには、現在の画面が録画されていることを知らせるために、UICreenのAPIが追加されている。UICScreen.isCapturedがtrueであるとき、現在のスクリーンが録画されているか、ミラーリングされているか、あるいはAirlayに送信されているかを示します。
録画画面の状態が変化すると、UIKEreenCapturedDidChangeのnotificationが送信されます。
これに基づいて、アプリケーションでこの通知を受信して、ユーザの記録画面の動作に対応する処理を行うことができます。
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
//
UIScreen * sc = [UIScreen mainScreen];
if (@available(iOS 11.0, *)) {
if (sc.isCaptured) {
NSLog(@" ~~~~~~~~~%d",sc.isCaptured);
[self screenshots];
}
} else {
// Fallback on earlier versions
}
if (@available(iOS 11.0, *)) {
//
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(screenshots) name:UIScreenCapturedDidChangeNotification object:nil];
} else {
// Fallback on earlier versions
}
}
-(void) screenshots
{
UIAlertView *alert1 = [[UIAlertView alloc] initWithTitle:nil message:@"[ ] 。 , 。" delegate:nil cancelButtonTitle:nil otherButtonTitles:@" ", nil];
[alert1 show];
-(void)dealloc
{
if (@available(iOS 11.0, *)) {
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIScreenCapturedDidChangeNotification object:nil];
} else {
// Fallback on earlier versions
}
}
上記の監視記録画面の状態はiOS 11の後だけで、しかも単に録画画面の状態を検出しただけで、録画した内容をオフにすることができませんでした。iOS 11の前の録画手段の監視はまだ確認されていません。以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。