当控制中心像QuizUp一样打开时通知iOS

时间:2014-08-27 13:57:17

标签: ios objective-c control-center

如何在打开iOS控制中心时收到通知?

UIApplicationWillResignActiveNotification不够好,因为在通知中心打开,警报视图出现以及其他可能的情况下也会发送此通知。

我确信这是不可能的,但当用户在游戏中间打开控制中心时会通知QuizUp应用,以防止欺骗游戏。

由于

3 个答案:

答案 0 :(得分:1)

嘿,我做了很多试验和错误调查,并提出了一个非常可靠的解决方案。它适用于所有方向,全屏(无状态栏)和常规模式。 AAWindow是UIWindow的子类,您可以在GitHub上找到它。

我完成此操作的方法是在UIWindow中覆盖sendEvent,将TouchEvents与其他事件分开,并检查触摸是否发生在屏幕的最下方10%(可以打开控制中心的部分) 。如果有触摸并且在.5秒(带状态栏)或3秒(没有状态栏)的时间段内调用applicationWillResignActive,您可以非常肯定这是因为打开了控制中心。然后,NSNotification正在被触发,你可以在应用程序的任何地方做出反应。

答案 1 :(得分:0)

我测试了一种UIPanGestureRecognizer方法(有或没有状态栏可见 - 如果小拉标签出现而不是控制中心,则更改)以及观察applicationWillResignActive通知,我无法&# 39;可靠地知道控制中心是否被打开。如果平底锅足够慢,则手势识别器将首先触发,但它很容易快速向上滑动以触发控制中心并完全绕过手势识别器。

尝试检查应用是否从applicationWillResignActive转到applicationDidBecomeActive将是一种非常可靠的方式来了解应用是否进入和退出其中一个州(控制中心,通知中心,接听电话等等,但这样就告诉说通知和控制中心之间的区别是不可能的。

TL; DR:我不认为有一种可靠或准确的方法来判断控制中心是否已打开,但QuizUp可能正在做一些有趣的事情来伪造它,我是容易出错!

答案 2 :(得分:-1)

当控制中心打开时,循环未完成。仅指方法 将调用applicationDidResignActivity,但不会调用applicationDidEnterBackground。当应用程序最小化时,将调用两种方法。在这里你可以区分。