iOS 判断解屏和锁屏状态

在AppDelegate中实现如下方法

//锁屏
#import <notify.h>
#define NotificationLock CFSTR("com.apple.springboard.lockcomplete")
#define NotificationChange CFSTR("com.apple.springboard.lockstate")
#define NotificationPwdUI CFSTR("com.apple.springboard.hasBlankedScreen")

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, screenLockStateChanged, NotificationLock, NULL, CFNotificationSuspensionBehaviorDeliverImmediately);

    CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, screenLockStateChanged, NotificationChange, NULL, CFNotificationSuspensionBehaviorDeliverImmediately);
return YES;
}
static void screenLockStateChanged(CFNotificationCenterRef center,void* observer,CFStringRef name,const void* object,CFDictionaryRef userInfo){

    NSString* lockstate = (__bridge NSString*)name;

    if ([lockstate isEqualToString:(__bridge  NSString*)NotificationLock]) {

        NSLog(@"locked.锁屏");

    }else{
        NSLog(@"状态改变了");

    }
}

这里要更正一下,这个方法在苹果新出的审核规则里,已经被拒绝了,所以开发者们可以通过appleDelegate中的applicationWillResignActive方法配合NSNotificationCenter来检测锁屏问题以及HOME键事件。

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

相关阅读更多精彩内容

  • 在开发中会遇到零零碎碎的一些小问题,诸如物联网开发中最常见的通过别的通讯协议来进行下载的方式。诸如此类会让我们无法...
    飛天江郎阅读 4,200评论 0 0
  • 最近一朋友正准备跳槽,就从各处搜索整理一些基础,便于朋友复习,也便于自己复习查看. 1. 回答person的ret...
    smile丽语阅读 5,819评论 0 7
  • 1. 启动流程 1.1 准备知识 Mach-O Apple的操作系统的可执行文件格式几乎都是mach-o,mach...
    我有小尾巴快看阅读 8,475评论 1 37
  • 变量名,函数名,就是标识符。标识符必须由字母或下划线开头,编译器决定了前8个字符最好唯一。 整形常量表示:8进制:...
    罗蓁蓁阅读 3,203评论 0 4
  • 我们认识的朋友林林总总,但是有人和时间做朋友吗?时间这位朋友会教会你什么,带你去何方?翻开李笑来的《把时间当...
    山中微风阅读 4,245评论 6 11

友情链接更多精彩内容