【问题标题】:iOS Screen recording detectioniOS 录屏检测
【发布时间】:2018-11-22 07:09:10
【问题描述】:

我尝试检测 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. 未检测到录屏,APIUIScreen.mainScreen.isCaptured返回NO

请推荐

【问题讨论】:

  • 如果可以重现,您是否考虑过提交bugreport
  • 是的,它是可重现的
  • 仅供参考,除非您仍在使用 MRR,否则您应该使用 __weak 而不是 __block。使用 ARC 时,__block 变量仍由块保留。此外,__weak 为您提供归零弱参考,这可能是您正在寻找的。​​span>
  • @Lukas 我会做出改变的

标签: ios objective-c uiscreen


【解决方案1】:

你应该反复检查录音。

我使用了这段代码,它对我有用。 看看吧:

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

【讨论】:

  • 是的,我正在使用 NSTimer 每 2 秒重复一次检查
猜你喜欢
  • 2012-11-09
  • 2017-03-02
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
  • 2012-12-20
  • 2018-05-08
  • 1970-01-01
相关资源
最近更新 更多