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

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

该方法不是私有api。

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

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

- (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、使用观察者添加监听

- (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中添加这两段代码

[self createProtectedFile];
[self addObserverForLock];

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

友情链接更多精彩内容