iOS屏幕录像检测

时间:2018-11-22 07:09:11

标签: ios objective-c uiscreen

我试图检测iOS 11应用程序的屏幕截图是否打开,以检测此UIScreen.mainScreen.isCaptured属性用于检查是否已记录。

在首次启动时运行良好,当应用程序终止并再次启动时,尽管屏幕截图已打开,但API返回NO。

代码:

//In viewWillAppear block

__block ViewController *weakSelf = self;
  [NSTimer scheduledTimerWithTimeInterval:2.0 repeats:YES block:^(NSTimer * _Nonnull timer) {
    [weakSelf screenCaptureDetection];
  }];

- (void) screenCaptureDetection {
  if (@available(iOS 11.0, *)) {
    for (UIScreen *screen in [UIScreen screens]) {
      if([screen performSelector:@selector(isCaptured)]){
      //Detected YES
    }
  }
}

用例场景:

  1. 启动应用程序
  2. 使用苹果屏幕录制选项启动屏幕录制器
  3. 检测到屏幕录像机
  4. 终止应用程序
  5. 重复步骤1和2
  6. 未检测到屏幕记录,API UIScreen.mainScreen.isCaptured返回否

请提出建议

1 个答案:

答案 0 :(得分:0)

您应该反复检查记录。

我使用了这段代码,并且对我有用。 检查一下:

https://gist.github.com/abhimuralidharan/8db55dff9023028867b719f251372bd7#file-screenrecordingdetector-m