判断iOS如何监听手机屏幕是否锁屏

需求:监听手机是否锁屏,开屏。两种状态。

该方法不是私有api。

通过iOS的文件保护机制。使用观察者监听UIApplicationProtectedDataWillBecomeUnavailable和UIApplicationProtectedDataDidBecomeAvailable这两个键。并在app中写一个文件,文件内容随意。

1、 创建一个文件保存到沙盒。

ini 复制代码
- (void)createProtectedFile {
    NSString *doc = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
    NSString *path = [doc stringByAppendingPathComponent:@"pd_test"];
    NSDictionary *attr = @{ NSFileProtectionKey : NSFileProtectionComplete };
    NSData *data = [@"1" dataUsingEncoding:NSUTF8StringEncoding];
    [[NSFileManager defaultManager] createFileAtPath:path contents:data attributes:attr];
}

2、使用观察者添加监听

objectivec 复制代码
- (void)addObserverForLock() {
    [[NSNotificationCenter defaultCenter] addObserver:self
         selector:@selector(deviceLocked)
         name:UIApplicationProtectedDataWillBecomeUnavailable
         object:nil];

    // 监听解锁
    [[NSNotificationCenter defaultCenter] addObserver:self
         selector:@selector(deviceUnlocked)
         name:UIApplicationProtectedDataDidBecomeAvailable
         object:nil];
} 

- (void)deviceLocked {
    NSLog(@"设备锁屏了");
    self.isLock = YES;
}

- (void)deviceUnlocked {
    NSLog(@"设备解锁了");
    self.isLock = NO;
}

3、并在你的页面viewDidLoad中添加这两段代码

ini 复制代码
[self createProtectedFile];
[self addObserverForLock];

至此 就可以知道手机是否触发锁屏和解锁了。

相关推荐
游戏开发爱好者843 分钟前
iOS开发IDE有哪些 Xcode 和 快蝎 轻量替代方案
ide·vscode·ios·个人开发·xcode·swift·敏捷流程
ZZH_AI项目交付19 小时前
同一套前摄心率算法,为什么 iPhone 16 Pro 稳,iPhone XR 会失准?
ios·app·ai编程
DeMinds20 小时前
内容没有丢,我为什么总在重新整理?|DeMinds 如何让工作接着继续
ios·github·markdown
apd_csdn20 小时前
清华邮箱苹果邮件app设置(全)
ios·thu
MDM.Plus21 小时前
从“遥控”到“自治”:苹果 MDM 技术的代际跨越与业务重构
ios·智能手机·重构·mdm
黑化旺仔21 小时前
iOS - 天气预报仿写总结
ios
Coffeeee1 天前
ios零基础的Android开发能否靠AI让老板省一笔人工费呢
android·ios·ai编程
2501_916007471 天前
深入理解HTTPS对称与非对称加密机制及Charles抓包实践
网络协议·http·ios·小程序·https·uni-app·iphone
2501_916008891 天前
HTTPS 抓包遇到证书绑定怎么办,使用 TraceEagle 解除 App 证书校验
网络协议·计算机网络·http·网络安全·ios·adb·https
白玉cfc1 天前
【iOS】MRC和ARC
macos·ios·cocoa