屏幕锁定时如何关闭我的iPhone应用程序?

时间:2011-05-23 22:37:19

标签: iphone objective-c auto-lock

我正在编写一个涉及初始屏幕身份验证的应用程序,并允许在以后的屏幕上访问敏感数据。当iPhone被锁定时,无论是使用锁定按钮还是通过自动锁定,我都希望应用程序将自己关闭作为安全措施。有没有办法可以做到这一点?

4 个答案:

答案 0 :(得分:11)

您的UIApplicationDelegate将收到

– applicationWillResignActive:
屏幕锁定时的

消息,

– applicationDidBecomeActive: 

什么时候回来。但是,它也可以在其他情况下接收这些消息(例如接听电话,用户在iOS 4.0及更高版本上关闭应用程序),我不知道区分原因的方法。

我认为更好的用户体验是在应用程序恢复时再次弹出身份验证。这样,当手机解锁时,用户不会感到困惑,并且他们运行的应用程序已经神秘地退出。

答案 1 :(得分:7)

为了解决任何困惑,我只是在iOS 4.3.2的设备上运行了一些测试:

当您启动应用时,您的应用会被发送:     应用中:didFinishLaunchingWithOptions:     applicationDidBecomeActive:

当您点击主页按钮时,您的应用会被发送:

applicationWillResignActive:
applicationDidEnterBackground:

稍后重新启动相同的应用时,您的应用会被发送:

applicationWillEnterForeground:
applicationDidBecomeActive:

当您点击锁定按钮时,您的应用会被发送:

applicationWillResignActive:

解锁后,您的应用会被发送:

applicationDidBecomeActive:

当您接到电话时,您的应用会收到:

applicationWillResignActive:

如果您没有接听该电话,则会向您的应用发送一个:

applicationDidBecomeActive:

当您接到电话时,您的应用会收到:

applicationWillResignActive:

如果您接听该电话,您的应用会收到:

applicationDidEnterBackground:

挂断电话时,您的应用会被发送:

applicationWillEnterForeground:
applicationDidBecomeActive:

我会说当你得到applicationWillResignActive时:那么你应该注销,取消验证,锁定或丢弃你的机密信息,当你得到applicationDidBecomeActive:然后重新验证。那个在启动时被调用,从后台返回并解锁设备。

此外,这两种方法可能对您有意义,但它们并不能真正帮助您感兴趣的具体案例:

- (void)applicationProtectedDataWillBecomeUnavailable:(UIApplication *)application 

- (void)applicationProtectedDataDidBecomeAvailable:(UIApplication *)application

答案 2 :(得分:3)

如果我没记错的话,当手机上锁时,应用程序会进入睡眠状态。

自推出多任务处理Apple以来,更改了行为,以便在解锁/切换时向您的应用程序发送特定消息。

我建议只听那个东西,然后再要求认证。

我不认为你可以退出你的应用程序(也不应该),我不知道任何只会杀死自己的应用程序......

很抱歉这里不太具体,但我希望你现在知道去哪里......

答案 3 :(得分:3)

  1. “关闭您的应用”违反Apple指南。虽然有些应用实际上是这样做的,但这可能会让您的应用遭到拒绝。在多任务处理之前,它违反了Apple的指导原则,现在由于多任务处理而变得更加重要。用户体验是当他们在锁定或进入另一个应用程序后回到手机和您的应用程序时,您的应用程序应该仍在运行。要“关闭你的应用”会让用户相信你的应用已崩溃,他们可能会写评论。

  2. 如果您希望在用户“离开”时保护应用中的信息,那么您应该查看UIApplicationDelegate Protocol Reference。 Particually applicationDidEnterBackground:(您应该在哪里注销用户)和applicationDidBecomeActive:(您应该让用户重新登录)。

  3. 作为最后一点,您可能希望默认为“自动注销”,但会为用户提供一个设置选项,以便他们保持登录状态。没那么难,少数想要它的人可以利用这个设置。