美文网首页
iOS开发之应用内检测手机锁屏,解锁状态

iOS开发之应用内检测手机锁屏,解锁状态

作者: 牛大发了 | 来源:发表于2017-04-18 11:14 被阅读0次

iPhone的锁屏监测分为两种方式监听:

1. 程序在前台,这种比较简单。直接使用Darwin层的通知就可以了:

#import

#defineNotificationLockCFSTR("com.apple.springboard.lockcomplete")

#defineNotificationChangeCFSTR("com.apple.springboard.lockstate")

#defineNotificationPwdUICFSTR("com.apple.springboard.hasBlankedScreen")

staticvoidscreenLockStateChanged(CFNotificationCenterRefcenter,void*observer,CFStringRefname,constvoid*object,CFDictionaryRefuserInfo)

{

NSString*lockstate=(__bridgeNSString*)name;

if([lockstate isEqualToString:(__bridgeNSString*)NotificationLock]){

NSLog(@"locked.");

}else{

NSLog(@"lock state changed.");

}

}

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

{

// Override point for customization after application launch.

CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),

NULL, screenLockStateChanged, NotificationLock, NULL,

CFNotificationSuspensionBehaviorDeliverImmediately);

CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),

NULL, screenLockStateChanged, NotificationChange, NULL,

CFNotificationSuspensionBehaviorDeliverImmediately);

//setScreenStateCb();

return YES;

}

2. 第二种是程序退后台后,这时再锁屏就收不到上面的那个通知了,需要另外一种方式, 以循环的方式一直来检测是否是锁屏状态,会消耗性能并可能被苹果挂起;

staticvoidsetScreenStateCb()

{

uint64_t locked;

__blockinttoken=0;

notify_register_dispatch("com.apple.springboard.lockstate",&token,dispatch_get_main_queue(),^(intt){

});

notify_get_state(token,&locked);

NSLog(@"%d",(int)locked);

}

-(void)applicationDidEnterBackground:(UIApplication*)application

{

while(YES){

setScreenStateCb();

sleep(1);

}

}

相关文章

  • iOS开发之应用内检测手机锁屏,解锁状态

    iPhone的锁屏监测分为两种方式监听: 1. 程序在前台,这种比较简单。直接使用Darwin层的通知就可以了: ...

  • Activity提权

    监控手机的锁屏状态,当手机屏幕锁屏是启动一个一像素的Activity,在用户解锁时再将Activity解锁掉,从而...

  • iOS硬件相关开发

    心跳之旅—?—iOS用手机摄像头检测心率(PPG)【iOS开发】网易云音乐锁屏界面效果实现 DJI SDK iOS...

  • Android 手势密码锁的使用细说

    监听屏幕锁屏和解锁事件 启动时进行检测 基类中全局进行监听 构造广播监听锁屏截屏事件 应用Application里...

  • iOS硬件相关开发

    心跳之旅—?—iOS用手机摄像头检测心率(PPG) 【iOS开发】网易云音乐锁屏界面效果实现 DJI SDK iO...

  • Media Module之Camera(八) 常见问题

    简要介绍一下,平时在开发相机时可能会遇到的一些常见问题。此文章也会陆续更新。 【锁屏】锁屏状态(有密码)下解锁解锁...

  • 点亮,解锁,锁屏,点亮,解锁,锁屏,末一遍又一遍的把弄着手机,好像随时会有什么发生,但每次锁屏后,又把手机丢到一边...

  • 焦点日记坚持分享第88天(20190422)

    戒掉游戏的第一天。时常拿起手机,解锁,锁屏;解锁,锁屏…… 手机也没有响,我也没啥东西需要查看,就是这...

  • 设计闲话 #12: 通知中心,Widget,iOS 10 与「主

    iOS 10 对锁屏界面作出了重大改动——滑动解锁改为按下 Home 键解锁,左右滑动锁屏界面分别切换到 Widg...

  • 如何检测 iOS 设备解锁/锁屏?

    注意:“com.apple.springboard.lockcomplete” 通知总是会接在 “com.appl...

网友评论

      本文标题:iOS开发之应用内检测手机锁屏,解锁状态

      本文链接:https://www.haomeiwen.com/subject/uasfzttx.html