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

首頁 > 系統 > iOS > 正文

iOS錄屏和截屏監聽的實現代碼

2020-07-26 02:27:57
字體:
來源:轉載
供稿:網友

最近在做項目安全性方面的工作,需要在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之前的錄屏手段的監測暫時還沒查到,有哪位大神知道的話麻煩告知小弟,在此謝過。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿合奇县| 安溪县| 霍州市| 京山县| 抚州市| 沙坪坝区| 兴安县| 都江堰市| 五指山市| 湛江市| 资溪县| 周至县| 监利县| 丹寨县| 马山县| 仁化县| 邳州市| 塔城市| 穆棱市| 三明市| 京山县| 松滋市| 新郑市| 东乌珠穆沁旗| 铅山县| 保亭| 文成县| 南乐县| 东兴市| 沭阳县| 汉源县| 泸州市| 德安县| 贡山| 唐河县| 岳普湖县| 义乌市| 萍乡市| 黄平县| 德保县| 远安县|