防止在iOS应用中捕获屏幕
为了安全起见,我需要防止我的应用程序的用户抓屏。 我显示的内容是保密的,不应该复制到设备上。 我看到堆栈溢出,但Android的一个答案 。
在iOS中可能以某种方式防止屏幕捕获?
虽然通过点击几下button将截图捕获到图库中对于用户来说是非常有用的特征,但是对于防止这种情况的需求也是有限的。 任何指针?
没有办法阻止完整的截图。 您可以执行Snapchat所做的操作,即通过要求用户触摸屏幕来查看您显示的任何信息。 这是因为系统截图事件中断触动。 这不是一个完美的方法,你不能阻止用户100%的时间截图。
更多细节: iOS检测截图?
另一个问题是在湿件中的屏幕捕获 – 就像一个人用其他设备(如照相机或其他电话)捕获屏幕一样。 即使你在应用程序中阻止它,也不可能阻止某人拍摄屏幕的照片
一种可能的解决方法是Yovo 。 我刚刚看到这个演示,让我心动!
这是一个非常聪明的方式来掩盖屏幕截图,甚至部分处理由JimBobBennet带来的“湿件”情况。
你在图像上设置了一个模糊遮罩(在应用程序中使用栅栏模式,但是任何模式都可以)并将其作为一个快速移动。 如果用户截图,他们会得到一个单一的框架,这本身是模糊的静止图像。
它利用了我们的大脑可以在移动的面罩背后拼接图像的事实 – 类似于如何“透视”移动的风扇的叶片。
为了捕捉图像,你需要logging一个video,这是一个相当麻烦。
唯一的问题可能是知识产权 – Yovo宣称拥有300多项专利 。
我听说你可以使用UIApplicationUserDidTakeScreenshotNotification侦听截图事件
NSOperationQueue *mainQueue = [NSOperationQueue mainQueue]; [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationUserDidTakeScreenshotNotification object:nil queue:mainQueue usingBlock:^(NSNotification *note) { // executes after screenshot NSLog(@"Screenshot Detection : %@", note); UIAlertView *screenshotAlert = [[UIAlertView alloc] initWithTitle:@"Screenshot Detected" message:@"Oh Oh no screenshot bruhh" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [screenshotAlert show]; }];
如果可以立即删除屏幕截图文件呢?