Fork me on GitHub

iOS开发 区分Home键和锁屏键事件

在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键从多任务管理进入)。

一个小功能坑也不少,所以还是做好立项前的评估吧^_^

------------- 本文结束感谢您的阅读 -------------