IOS-监测锁屏事件
来源:互联网 发布:淘宝宝贝批量编辑 编辑:程序博客网 时间:2024/04/27 17:17
http://www.cnblogs.com/daguo/p/4171389.html
iPhone的锁屏监测分为两种方式监听:
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,const void* 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-监测锁屏事件
- 锁屏监测
- android press 事件监测
- java监测窗口事件
- 监测变量事件
- Java监测窗口事件
- 安卓开发中监测触屏事件的使用
- Android手机屏幕锁屏监测
- iOS 监测网络。
- iOS - 监测网络状态
- iOS编程-网络监测
- iOS网络监测
- IOS--网络监测
- iOS-监测网络状态
- 监测iOS截屏(Swift)
- iOS网络监测方法
- ios监测相册变化
- IOS 监测网络状态
- C#连接access数据库
- MFC单文档SDI
- Unity NGUI panel 实现层级管理 即点谁谁置顶
- Android应用下载安装Home键退出,再进 应用会重启问题解决
- 剑指offer-面试题3:二维数组中的查找
- IOS-监测锁屏事件
- Linux上下行网速测试工具_speedtest-cli
- ld-linux.so.2的解决方法
- Android studio(1.4.1) NDK开发
- ByteArrayOutputStream源代码解析(解决乱码问题)
- awk 格式化输出
- fgf
- Java中Properties类的操作
- 定制正确的oracle备份策略 0级备份