iOS录屏和截屏监听的实现代码

 更新时间:2018年05月10日 13:46:53   作者:关注见惯就不怪  
本篇文章主要介绍了iOS录屏和截屏监听的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

最近在做项目安全性方面的工作,需要在APP内敏感页面做防用户截屏录屏的功能,就在网上查阅了一些资料,在这里做个笔记,方便日后查找。

截屏状态获取

编辑相册中最新照片的方法iOS8之后就已经失效,框架“Photos”也在iOS10之后失效。

搜索发现UIApplication中仅有用户截屏后的通知,应用中只会收到已经截屏的通知并没办法干预。

// 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 中新增了UIScreen的API用以告知应用当前屏幕正在录屏。当UIScreen.isCaptured 为true时,表示当前屏幕正在被录制、镜像或被Airplay 发送。

当录屏状态发生变化时,UIKit会发送UIScreenCapturedDidChange的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
  }
}

上述监测录屏状态只是在iOS11之后,而且只是单单的检测到录屏状态并且没有办法去关闭录屏状态或者修改录制到的内容,至于在iOS11之前的录屏手段的监测暂时还没查到,有哪位大神知道的话麻烦告知小弟,在此谢过。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • iOS实现从背景图中取色的代码

    iOS实现从背景图中取色的代码

    这篇文章主要介绍了iOS实现从背景图中取色的代码,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • iOS开发中TabBar再次点击实现刷新效果

    iOS开发中TabBar再次点击实现刷新效果

    这篇文章主要介绍了iOS开发中TabBar再次点击实现刷新效果,实现方法也很简单,需要的朋友可以参考下
    2018-04-04
  • iOS中导航栏pop返回时出现黑块问题的解决方法

    iOS中导航栏pop返回时出现黑块问题的解决方法

    在iOS开发的工作当中,Push和Pop经常用于界面之间的跳转和返回。下面这篇文章主要给大家介绍了关于iOS中导航栏pop返回时出现黑块问题的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10
  • iOS中UIWebView网页加载组件的基础及使用技巧实例

    iOS中UIWebView网页加载组件的基础及使用技巧实例

    UIWebView是开发中很常用的应用内调用网页浏览的控件,这里整理了一些iOS中UIWebView网页加载组件的基础及使用技巧实例 ,需要的朋友可以参考下
    2016-06-06
  • Swift 访问权限的资料整理

    Swift 访问权限的资料整理

    这篇文章主要介绍了Swift 访问权限的资料整理的相关资料,希望通过本文大家能掌握这部分内容,需要的朋友可以参考下
    2017-09-09
  • 超全的iOS各种设备信息获取方法总结(包括iPhone8/iPhone X)

    超全的iOS各种设备信息获取方法总结(包括iPhone8/iPhone X)

    这篇文章主要给大家介绍了关于iOS各种设备信息获取方法,iPhone8/iPhone X的后驱详细信息也已更新,文中给出了详细的示例代码供大家参考学习,需要的朋友们下面随着小编来一起学习学习吧。
    2017-12-12
  • IOS初始化控制器的实现方法总结

    IOS初始化控制器的实现方法总结

    这篇文章主要介绍了IOS初始化控制器的实现方法总结的相关资料,这里提供两种实现方法分别是ViewControllViewController方法和 ViewControllViewController 与 xib方法,需要的朋友可以参考下
    2017-10-10
  • iOS实现视频压缩上传实例代码

    iOS实现视频压缩上传实例代码

    本篇文章主要介绍了iOS实现视频压缩上传实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • iOS-Mac配置Tomcat教程 Mac环境配置Tomcat教程

    iOS-Mac配置Tomcat教程 Mac环境配置Tomcat教程

    这篇文章主要介绍了iOS-Mac配置Tomcat教程,Mac环境配置Tomcat,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • iOS中常见的视图和图片处理示例详解

    iOS中常见的视图和图片处理示例详解

    在日常ios开发中经常会遇到视图和图片的处理,下面这篇文章主要给大家总结介绍了关于iOS中常见的视图和图片处理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习和工作具有一定的参考学习价值,需要的朋友可以参考下。
    2017-10-10

最新评论