iOS录屏和截屏监听的实现代码
2019/7/9 22:40:59
本文主要是介绍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录屏和截屏监听的实现代码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12Axios库资料:新手入门必读教程
- 2024-11-11Axios库项目实战:新手入门教程
- 2024-09-29Axios库教程:初学者必备指南
- 2024-08-29Axios库资料:新手入门指南与基本使用教程
- 2024-03-14system bios shadowed
- 2024-03-14gabios
- 2024-02-07iOS应用提交上架的最新流程
- 2024-02-06打包 iOS 的 IPA 文件
- 2023-12-07uniapp打包iOS应用并通过审核:代码混淆的终极解决方案 ?
- 2023-11-25uniapp IOS从打包到上架流程(详细简单) 原创