录屏状态监听之防录屏 - iOS
继之前接到电话、短信和截屏监听需求之后,在 iOS 11.0 系统之上新增了屏幕录制的新功能玩法,所以也随之迎来了新的屏幕录制监听的需求,即防录屏功能监听 。。。

通过官方文档得知 capturedDidChangeNotification 方法可以捕获屏幕状态发生变化时发送的通知,故借此方法展开监听的操作,具体 code 如下:
一、方法实现
#pragma mark - 监听录制
/**
监听屏幕录制
iOS 11.0 版本以上
*/
- (void)monitorRecordVideo {// 监听屏幕录制
kWeakSelf(self);
// 监测设备的录制状态
if (@available(iOS 11.0, *)) {
[[NSNotificationCenter defaultCenter] addObserverForName:UIScreenCapturedDidChangeNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {
NSLog(@"屏幕录制 ..."); [weakself showPromptWarningView];
}];
} else {
// Fallback on earlier versions
}
}
/**
提示视图
*/
- (void)showPromptWarningView {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示"
message:@"请勿录制"
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"确定", nil];
[alertView show];
}
注:因该方法是 iOS 11.0 之后新增,所以要添加系统版本的判定,避免不必要的意外状况发生。
二、方法调用
在所需要的页面或地方直接调用该方法即可,页面中可以在 viewWillAppear 或 viewDidLoad 方法中都 ok。
[self monitorRecordVideo];// 防录屏监听
以上便是此次分享的内容,希望内容能对大家实际有所帮助,有什么不足之处欢迎指点共同进步!
录屏状态监听之防录屏 - iOS的更多相关文章
- 截屏状态监听 - iOS
既接到电话状态监听的需求之后再次添加了截屏状态的监听,当使用 App 时若用户执行截屏操作需要对当前状态进行监听操作,下面有两种方法,其中可以替换截屏的图片内容(Plan A),也可以弹出提示框(Pl ...
- Android USB大容量存储时SD卡状态监听(转)
对SD卡状态监听,到现在为止我知道的有两种方式: 1.注册StorageEventListener来监听sd卡状态 StorageEventListener中有onStorageStateChange ...
- JS控制全屏,监听退出全屏事件
实现方案 //进入全屏 function requestFullScreen(de) { if(de.requestFullscreen){ //W3C de.requestFullscreen(); ...
- 电话状态监听 - iOS
今天接到一个监听状态的需求,当使用 App 时若电话介入需要对当前状态进行监听操作(注:并非通话内容),根据不同的状态实行相关的需求操作,废话不多说步骤如下. 首先,常规操作先引用对应的头文件,来为后 ...
- 退出全屏监听ESC事件,这里没有用keydown来监听,因为全屏时候keydown监听不到
浏览器故意不上监听ESC键的,跟网页加载完成之后不能用程序使浏览器全屏一样的道理,避免开发者恶意全屏,不啰嗦,解决办法如下:window.onresize = function(){if(!check ...
- android切换前后台状态监听
public class BaseApplication extends Application { private static BaseApplication instance; /** * 当前 ...
- iOS实现电话状态监听 CoreTelephony
在程序中如果需要监听电话状态,可以引入CoreTelephony框架,这个框架包含了电话相关的API,可以实现监测来电,查看运营商信息等功能.下面就是具体的实现监测来电的代码.一定要把center写成 ...
- 短信状态监听 - iOS
当使用 App 时若短信介入需要对当前状态进行监听操作,根据不同的状态实行相关的需求操作,废话不多说步骤如下. 首先,常规操作先引用对应的头文件,来为后续功能铺路. #import <Messa ...
- 改进xutils下载管理器,使其,在随意地方进行进度更新,以及其它状态监听操作
1.前面在做下载进度监听.尝试过,通过加入 弱引用的View进度条,到相应的集合. 等到要进行更新进度的时候.通过Key 获取相应的VIew来进行更新 进度条.效果是达到了,可是我们怎样来监听其它的状 ...
随机推荐
- jQuery_完成复选框的全选与全不选
别的不多说,直接上代码,用于完成复选框的全选与全不选. <!DOCTYPE html> <html> <head> <meta charset="U ...
- 新手 Redis 配置笔记(windows),附下载地址
1.关于安装文件的选择 安装的时候应该下载免安装版,安装版虽然一路下一步就可以了,但是,当要修改配置文件的时候,特别痛苦,搜了两个小时,居然没有找到如何用命令修改配置文件,开放远程连接.所以对于第一次 ...
- JavaScript 事件不触发
在class上绑定的事件,点击图片的时候无法触发 <div id="files" class="files"> <div> <p& ...
- memcached空指针内存错误与死循环问题分析(memcached dead loop and crash bug! issue #260 and issue #370)
(由于这是发在memcached邮件列表的,所以只能用一下蹩脚的英文了) (you should read the discuss about issue #260 first: https://g ...
- 五大好用的开源MySQL管理工具推荐
众所周知,对于数据库管理工作者(DBA)来说,保持数据正常运行在最佳状态需要具备敏捷.专注.冷静和快速的反应能力.因为数据库几乎是所有应用程序成功运行的核心,由于DBA负责组织数据,因此寻找可靠的工具 ...
- python使用内置方法和修饰器方法获取类名、函数名
1. 外部获取 从外部的情况好获取,可以使用指向函数的对象,然后用__name__属性. def a(): pass a.__name__ 或者 getattr(a,'__name__') 2. 内部 ...
- Spring 缓存注解解析过程
Spring 缓存注解解析过程 通过 SpringCacheAnnotationParser 的 parseCacheAnnotations 方法解析指定方法或类上的缓存注解, @Cacheable ...
- 思维导图之kubernetes
k8s docker
- oracle ogg 单实例双向-新增表,修改表结构(oracle-oracle
--新增inset测试--dept 表结构orcl,ogg都存在,数据相同(但是rep1配置文件没有添加) SCOTT@ orcl ,'hongquan','BBA'); row created. S ...
- python接口自动化:绕过验证码登录
上线产品的登录接口会有验证码,一般可以通过添加cookie的方式绕过验证码. 一.抓登录的cookie 1. 先手动登录一次,然后用fiddler抓取这个cookie,再直接把这个值添加到cookie ...