iOS 检测屏幕状态(是否锁屏)

一.实现监听

1.定义宏
//锁屏通知
#define NotificationOff CFSTR("com.apple.springboard.lockcomplete")

//解锁通知
#define NotificationOn CFSTR("com.apple.springboard.hasBlankedScreen")
2.注册屏幕监听事件
    CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, ListeningScreenLockState, NotificationOff, NULL, CFNotificationSuspensionBehaviorDeliverImmediately);
    
    CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, ListeningScreenLockState, NotificationOn, NULL, CFNotificationSuspensionBehaviorDeliverImmediately);
3.监听方法
static void ListeningScreenLockState(CFNotificationCenterRef center,void* observer,CFStringRef name,const void* object,CFDictionaryRef userInfo)

{
    
    NSString* screenState = (__bridge NSString*)name;
    
    if ([screenState isEqualToString:(__bridge  NSString*)NotificationOff]) {
        
        NSLog(@"********锁屏**********");
        
    } else {
        
        NSLog(@"********解锁**********");
     
    }
    
}

二.监听结果 调用方法

由于监听方法为C函数 需要在c函数里面调用iOS 方法

1.将类定义成:
static MinshLivenessViewController *selfClass = nil;
  1. self赋给selfClass
selfClass = self;(我是将这句代码写在viewDidLoad 里面)

3.在c函数里面调用:

[selfClass 方法名];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,268评论 30 472
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,427评论 0 6
  • 史上最全的iOS面试题及答案 迷途的羔羊--专为路痴量身打造的品牌。史上最精准的定位。想迷路都难!闪电更新中......
    南虞阅读 1,574评论 0 8
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,856评论 0 9
  • 当家乡有一天真的成了远方,那思念的滋味是那样酸楚。你会眺望远处的那片云,那座山,想那下面应该是家乡。你会融...
    满江枫飞阅读 475评论 2 3