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

转载自: https://a1049145827.github.io/2018/01/06/iOS%E5%BC%80%E5%8F%91-%E5%8C%BA%E5%88%86Home%E9%94%AE%E5%92%8C%E9%94%81%E5%B1%8F%E9%94%AE%E4%BA%8B%E4%BB%B6/

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

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

展开阅读全文

没有更多推荐了,返回首页