国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS錄屏和截屏監(jiān)聽的實現(xiàn)代碼

2019-10-21 18:41:11
字體:
供稿:網(wǎng)友

最近在做項目安全性方面的工作,需要在APP內(nèi)敏感頁面做防用戶截屏錄屏的功能,就在網(wǎng)上查閱了一些資料,在這里做個筆記,方便日后查找。

截屏狀態(tài)獲取

編輯相冊中最新照片的方法iOS8之后就已經(jīng)失效,框架“Photos”也在iOS10之后失效。

搜索發(fā)現(xiàn)UIApplication中僅有用戶截屏后的通知,應(yīng)用中只會收到已經(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);

雖然無法直接干預(yù),但可以知道用戶截屏了就可以用其它的方式來限制用戶的行為或者彈出提示告訴用戶。

-(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)含個人資金賬戶。不要截圖,錄制或分享給他人以保障資金賬戶安全。" 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時,表示當(dāng)前屏幕正在被錄制、鏡像或被Airplay 發(fā)送。

當(dāng)錄屏狀態(tài)發(fā)生變化時,UIKit會發(fā)送UIScreenCapturedDidChange的notification。

基于此,我們可以在應(yīng)用中接收此通知,來對用戶的錄屏行為做相應(yīng)的處理

-(void)viewWillAppear:(BOOL)animated{  [super viewWillAppear:animated];//監(jiān)測當(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, *)) {//檢測到當(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)含個人資金賬戶。不要截圖,錄制或分享給他人以保障資金賬戶安全。" 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)測錄屏狀態(tài)只是在iOS11之后,而且只是單單的檢測到錄屏狀態(tài)并且沒有辦法去關(guān)閉錄屏狀態(tài)或者修改錄制到的內(nèi)容,至于在iOS11之前的錄屏手段的監(jiān)測暫時還沒查到,有哪位大神知道的話麻煩告知小弟,在此謝過。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到IOS開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 独山县| 莒南县| 桂阳县| 尼勒克县| 泉州市| 广南县| 辉县市| 津市市| 西吉县| 平南县| 武定县| 丹江口市| 鄂托克旗| 西乡县| 宣化县| 诏安县| 云浮市| 深州市| 昌邑市| 封丘县| 固阳县| 洛川县| 涟源市| 东莞市| 泰州市| 任丘市| 永德县| 莒南县| 岗巴县| 临湘市| 收藏| 揭东县| 旬邑县| 来凤县| 石家庄市| 安乡县| 巴里| 南京市| 黑龙江省| 调兵山市| 赤峰市|