【发布时间】:2013-10-27 11:25:57
【问题描述】:
我的应用在从锁屏变为活动状态(活动时锁定)或从其他任何地方变为活动状态时具有不同的行为。
在 iOS 6 及更低版本上我可以检测到这一点
UIApplicationState state = [[UIApplication sharedApplication] applicationState];
if (UIApplicationStateInactive == state)
// Coming from locked screen (iOS 6)
else
// Coming from Springboard, another app, etc...
但在 iOS 7 上,两种情况下的状态值都是 UIApplicationStateBackground。这是预期的行为吗?如何正确检测应用程序现在是否从锁屏启动?
注册开发者,我已经在 NDA 取消之前在开发者论坛上发布了这个,请参阅 here
【问题讨论】:
-
我不相信你能做到这一点。事实上,即使是在 iOS 6 上,你也在做出你不能随便做出的假设。例如,如果您被电话打断,应用程序状态也是
UIApplicationStateInactive。 -
它实际上对我的用例来说非常可靠,直到 iOS 7。为了这个问题,我简化了代码。
-
我想说的是,这段代码(在 iOS 6 中)可以可靠地检测到您何时来自锁定屏幕,但也可以检测到用户何时在电话后返回。如果您能够以某种方式区分这些事件,那就太好了(而且我实际上对如何区分这些事件很感兴趣,因为据我所知,这是/不可能的)。
-
就我的目的而言,该应用程序处理这些情况的方式相同。我只对来自跳板的行为感兴趣
标签: ios cocoa-touch background multitasking uiapplicationdelegate