在AppDelegate文件中,由于锁屏和Home键两种操作,我们接到的事件是一样的,
但有时候业务需要我们区分这两个事件,这里我们就介绍一个方法,锁屏事件和Home键事件在App接到的回调方法是一样的,我们无法区分。不过有一个很明显的特征我们还是可以利用的:锁屏时设备屏幕亮度为0。
具体检测代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 | - (void)applicationWillResignActive:(UIApplication *)application {
CGFloat screenBrightness = [[UIScreen mainScreen] brightness];
if (screenBrightness > 0) {
// Home事件
NSLog(@"Home事件");
} else {
// 锁屏事件
NSLog(@"锁屏事件");
}
}
|
但是App进入前台的时候无论是按锁屏键还是按home键,检测到屏幕亮度都不为0,就不能再通过屏幕亮度来判断状态了。
好在我们进后台的时候记录了是锁屏还是Home键的事件,回来的时候肯定是成对的(也有特殊情况,用户在锁屏界面进入其他App,然后按home键,这时候我们的应用就是处于后台运行,下次进入是点击图标或者双击Home键从多任务管理进入)。
一个小功能坑也不少,所以还是做好立项前的评估吧^_^
本文介绍了一种在iOS开发中区分锁屏事件和Home键事件的方法。通过检查屏幕亮度,可以在应用即将进入非活跃状态时判断触发事件的来源。然而,在应用重新进入前台时,此方法不再适用,因为屏幕亮度已不再是可靠的指标。
317

被折叠的 条评论
为什么被折叠?



