当 iPhone 锁定且用户按下电源按钮时编程后台行为



抱歉,我是iPhone开发的新手,我的谷歌搜索失败了,所以我不得不求助于在SO上发布一个可能愚蠢的问题。

我想编写一个应用程序,在挂起时,当用户按下主页或电源按钮(大概是为了解锁手机)时执行操作。 我阅读了 iOS 应用编程指南中的应用状态和多任务处理部分,"在唤醒时处理排队通知"讨论了在唤醒时处理排队事件。 然而,这不是我所追求的。

我想知道是否有可能:

  1. 从手机睡眠状态(我找不到手机状态的文档,所以我说的是用户按下电源按钮关闭屏幕的情况),我希望我的应用准备好响应用户按下电源或主页按钮(解锁手机)的事件
  2. 我希望我的应用能够响应用户解锁手机时发生的事件。 我在这里找到了一个接近的答案。
  3. 我不希望在电话进来、被忽略等时有任何时髦。 :)

据我所知,在 API 中,锁定和解锁是一个非常灰色的区域,我想验证我是否在浪费时间尝试这样做。

看起来我可以使用加速度计来检测手机何时锁定,但我也假设我将无法在所有未来版本的iOS中依靠这种行为。

编辑 - 我想我可以通过假设应用程序必须在手机锁定和解锁时运行来处理锁定和解锁要求,但我仍然无法弄清楚是否可以确定上面的 #1,即电源按钮已被按下并显示解锁屏幕。 同样,我想知道电源按钮是否已再次按下并且不再显示(即屏幕关闭)。

应用挂起/后台化的所有行为都位于引用的文档中。AppDelegate 将接收这些消息,并将它们传递给您要侦听它们的任何视图。

-applicationWillTerminate
-applicationWillEnterBackground
-applicationDidBecomeActive
-applicationWillResignActive

如果您希望视图收到任何这些事件的通知,则可以在视图中设置通知观察者。然后只需覆盖它们或设置自定义方法来执行需要完成的任何工作。

虽然Apple文档一开始可能有点模糊,但所有信息都在那里,让您知道您的应用程序将进入哪个状态以及如何处理。由你来决定你的应用需要针对其中每个事件执行哪些操作。希望这有帮助。

最新更新