iOS开发之应用内检测手机是否为锁屏,解锁状态
来源:互联网 发布:淘宝吉姆尼外观零部件 编辑:程序博客网 时间:2024/05/04 03:17
1. 程序在前台,这种比较简单。直接使用Darwin层的通知就可以了:
#import <notify.h>
#define NotificationLock CFSTR("com.apple.springboard.lockcomplete")
#define NotificationChange CFSTR("com.apple.springboard.lockstate")
#define NotificationPwdUI CFSTR("com.apple.springboard.hasBlankedScreen")
static void screenLockStateChanged(CFNotificationCenterRef center,void* observer,CFStringRef name,constvoid* object,CFDictionaryRef userInfo)
{
NSString* lockstate = (__bridge NSString*)name;
if ([lockstate isEqualToString:(__bridge NSString*)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. 第二种是程序退后台后,这时再锁屏就收不到上面的那个通知了,需要另外一种方式, 以循环的方式一直来检测是否是锁屏状态,会消耗性能并可能被苹果挂起;
static void setScreenStateCb()
{
uint64_t locked;
__block int token = 0;
notify_register_dispatch("com.apple.springboard.lockstate",&token,dispatch_get_main_queue(),^(int t){
});
notify_get_state(token, &locked);
NSLog(@"%d",(int)locked);
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
while (YES) {
setScreenStateCb();
sleep(1);
}
}
- iOS开发之应用内检测手机是否为锁屏,解锁状态
- iOS开发之应用内检测手机锁屏,解锁状态
- iOS开发之应用内检测手机锁屏,解锁状态
- iOS开发之应用内检测手机锁屏,解锁状态
- iOS开发之应用内检测手机锁屏,解锁状态
- 应用内检测手机锁屏,解锁状态
- iOS开发-检测程序在前台和后台锁屏解锁的状态
- Mac下检测ios应用内是否有私有API
- iOS开发之检测网络连接状态
- iOS开发之指纹解锁
- iOS开发之指纹解锁
- iOS开发之指纹解锁
- iOS应用内判断推送开发是否打开
- iOS开发之检测设备锁屏
- ASP¦检测客户端是否为手机
- php检测访问者是否为手机
- ios手势锁屏、解锁功能开发
- iOS开发-检测网络状态
- linux基础命令
- shell脚本中执行时提示“没有那个文件或目录”的解决办法
- ScriptableObject 整理1 :ScriptableObject的介绍
- SDL2.0 扣色(png图片重叠,前景色透明)
- java生成单个和批量二维码
- iOS开发之应用内检测手机是否为锁屏,解锁状态
- [干货]基础机器学习算法
- phpmyadmin登录有效期修改
- java 泛型
- Maven学习 (三) 使用m2eclipse创建web项目
- Java IO: RandomAccessFile
- 使用栈计算中缀表达式
- 图片的二次采样三级缓存策略
- PE结构->【基址重定位】