iOS錄屏和截屏監(jiān)聽的實(shí)現(xiàn)代碼
最近在做項(xiàng)目安全性方面的工作,需要在APP內(nèi)敏感頁(yè)面做防用戶截屏錄屏的功能,就在網(wǎng)上查閱了一些資料,在這里做個(gè)筆記,方便日后查找。
截屏狀態(tài)獲取
編輯相冊(cè)中最新照片的方法iOS8之后就已經(jīng)失效,框架“Photos”也在iOS10之后失效。
搜索發(fā)現(xiàn)UIApplication中僅有用戶截屏后的通知,應(yīng)用中只會(huì)收到已經(jīng)截屏的通知并沒辦法干預(yù)。
// 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);
雖然無(wú)法直接干預(yù),但可以知道用戶截屏了就可以用其它的方式來(lái)限制用戶的行為或者彈出提示告訴用戶。
-(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:@"[安全提醒]內(nèi)含個(gè)人資金賬戶。不要截圖,錄制或分享給他人以保障資金賬戶安全。" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"確定", nil];
[alert1 show];
-(void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationUserDidTakeScreenshotNotification object:nil];
}
錄屏狀態(tài)獲取
iOS 11 SDK 中新增了UIScreen的API用以告知應(yīng)用當(dāng)前屏幕正在錄屏。當(dāng)UIScreen.isCaptured 為true時(shí),表示當(dāng)前屏幕正在被錄制、鏡像或被Airplay 發(fā)送。
當(dāng)錄屏狀態(tài)發(fā)生變化時(shí),UIKit會(huì)發(fā)送UIScreenCapturedDidChange的notification。
基于此,我們可以在應(yīng)用中接收此通知,來(lái)對(duì)用戶的錄屏行為做相應(yīng)的處理
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
//監(jiān)測(cè)當(dāng)前設(shè)備是否處于錄屏狀態(tài)
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, *)) {
//檢測(cè)到當(dāng)前設(shè)備錄屏狀態(tài)發(fā)生變化
[[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:@"[安全提醒]內(nèi)含個(gè)人資金賬戶。不要截圖,錄制或分享給他人以保障資金賬戶安全。" 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
}
}
上述監(jiān)測(cè)錄屏狀態(tài)只是在iOS11之后,而且只是單單的檢測(cè)到錄屏狀態(tài)并且沒有辦法去關(guān)閉錄屏狀態(tài)或者修改錄制到的內(nèi)容,至于在iOS11之前的錄屏手段的監(jiān)測(cè)暫時(shí)還沒查到,有哪位大神知道的話麻煩告知小弟,在此謝過。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- IOS 開發(fā)之ios視頻截屏的實(shí)現(xiàn)代碼
- iOS 對(duì)當(dāng)前webView進(jìn)行截屏的方法
- 利用Python為iOS10生成圖標(biāo)和截屏
- 教你用Python腳本快速為iOS10生成圖標(biāo)和截屏
- 在iOS開發(fā)的Quartz2D使用中實(shí)現(xiàn)圖片剪切和截屏功能
- iOS使用WebView生成長(zhǎng)截圖的第3種解決方案
- iOS 對(duì)view進(jìn)行截圖的示例代碼
- 關(guān)于iOS截圖你應(yīng)該知道的那些事兒
- IOS實(shí)現(xiàn)手動(dòng)截圖并保存
- iOS捕捉截屏事件并展示截圖效果
相關(guān)文章
iOS開發(fā)中TabBar再次點(diǎn)擊實(shí)現(xiàn)刷新效果
這篇文章主要介紹了iOS開發(fā)中TabBar再次點(diǎn)擊實(shí)現(xiàn)刷新效果,實(shí)現(xiàn)方法也很簡(jiǎn)單,需要的朋友可以參考下2018-04-04
iOS中導(dǎo)航欄pop返回時(shí)出現(xiàn)黑塊問題的解決方法
在iOS開發(fā)的工作當(dāng)中,Push和Pop經(jīng)常用于界面之間的跳轉(zhuǎn)和返回。下面這篇文章主要給大家介紹了關(guān)于iOS中導(dǎo)航欄pop返回時(shí)出現(xiàn)黑塊問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-10-10
iOS中UIWebView網(wǎng)頁(yè)加載組件的基礎(chǔ)及使用技巧實(shí)例
UIWebView是開發(fā)中很常用的應(yīng)用內(nèi)調(diào)用網(wǎng)頁(yè)瀏覽的控件,這里整理了一些iOS中UIWebView網(wǎng)頁(yè)加載組件的基礎(chǔ)及使用技巧實(shí)例 ,需要的朋友可以參考下2016-06-06
超全的iOS各種設(shè)備信息獲取方法總結(jié)(包括iPhone8/iPhone X)
這篇文章主要給大家介紹了關(guān)于iOS各種設(shè)備信息獲取方法,iPhone8/iPhone X的后驅(qū)詳細(xì)信息也已更新,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12
IOS初始化控制器的實(shí)現(xiàn)方法總結(jié)
這篇文章主要介紹了IOS初始化控制器的實(shí)現(xiàn)方法總結(jié)的相關(guān)資料,這里提供兩種實(shí)現(xiàn)方法分別是ViewControllViewController方法和 ViewControllViewController 與 xib方法,需要的朋友可以參考下2017-10-10
iOS實(shí)現(xiàn)視頻壓縮上傳實(shí)例代碼
本篇文章主要介紹了iOS實(shí)現(xiàn)視頻壓縮上傳實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-04-04
iOS-Mac配置Tomcat教程 Mac環(huán)境配置Tomcat教程
這篇文章主要介紹了iOS-Mac配置Tomcat教程,Mac環(huán)境配置Tomcat,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11

