第一种方式可以写函数判断
int hasBlankedScreen;
static void setScreenStateCb()
{
#if 0//是否锁屏
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);
#endif
#if 1 //是否亮屏
uint64_t locked;
__block int token = 0;
notify_register_dispatch("com.apple.springboard.hasBlankedScreen",&token,dispatch_get_main_queue(),^(int t){
});
notify_get_state(token, &locked);
NSLog(@"是否亮屏%d",(int)locked);
hasBlankedScreen = (int)locked;
#endif
}
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), //center
NULL, // observer
displayStatusChanged, // callback
CFSTR("com.apple.springboard.hasBlankedScreen"), // event name
NULL, // object
CFNotificationSuspensionBehaviorDeliverImmediately);
//methodstatic void displayStatusChanged(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo)
{
// the "com.apple.springboard.lockcomplete" notification will always come after the "com.apple.springboard.lockstate" notification
CFStringRef nameCFString = (CFStringRef)name;
NSString *lockState = (__bridge NSString*)nameCFString;
NSLog(@"Darwin notification NAME = %@",name);
if([lockState isEqualToString:@"com.apple.springboard.hasBlankedScreen"])
{
UIApplication *app=[UIApplication sharedApplication];
if (app.applicationState==UIApplicationStateActive) {
[[NSNotificationCenter defaultCenter]postNotificationName:@"isPlay" object:nil userInfo:[NSNumber numberWithInteger:1]];
}else
{
[[NSNotificationCenter defaultCenter]postNotificationName:@"isPlay" object:nil userInfo:[NSNumber numberWithInteger:0]];
}
//Logic to disable the GPS
}
}