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

Posted

技术标签:

【中文标题】当 iPhone 被锁定并且用户按下电源按钮时编程后台行为【英文标题】:Programming background behavior when iPhone is locked and user presses power button 【发布时间】:2012-06-18 15:54:24 【问题描述】:

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

我想编写一个应用程序,该应用程序在暂停时会在用户按下主页或电源按钮时执行一个操作(大概是为了解锁手机)。我阅读了 ios App Programming Guide 的 App States and Multitasking 中的部分,并且“在唤醒时处理排队通知”讨论了在唤醒时处理排队事件。但是,这不是我想要的。

我想知道是否可以:

    从手机睡眠状态(我找不到手机状态的文档,所以我说的是用户按下电源按钮关闭屏幕的情况),我希望我的应用程序准备好响应用户按下电源或主页按钮(解锁手机)的事件 我希望我的应用程序响应用户解锁手机时发生的事件。我找到了answer here that's close。 我不想在来电、被忽略等情况下出现任何怪癖:)

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

看起来我可以use the accelerometer to detect when the phone is locked,但我也假设我将无法在所有未来版本的 iOS 中指望这种行为。

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

【问题讨论】:

【参考方案1】:

您的应用被暂停/后台处理的所有行为都在您引用的文档中。 AppDelegate 将接收这些消息并将它们传递给您想要收听它们的任何视图。

-applicationWillTerminate
-applicationWillEnterBackground
-applicationDidBecomeActive
-applicationWillResignActive

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

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

【讨论】:

但这与锁定/解锁有什么关系?我想锁定有点清楚——如果应用程序进入后台,那么它可能来自锁定(但也可能是由于另一个应用程序进入前台)。他们的文档似乎根本没有解决解锁问题。如果您知道我应该查看的任何其他文件,请告诉我,我会查看它们!

以上是关于当 iPhone 被锁定并且用户按下电源按钮时编程后台行为的主要内容,如果未能解决你的问题,请参考以下文章

如何使用损坏的电源按钮锁定iPhone 或 iPad?

CallKit + WebRTC:在 iOS 中按下锁定/电源按钮时 CallKit 通话断开

如何播放可以通过 iPhone 上的屏幕锁定按钮关闭的音频

当iPhone锁定在iOS5上时,如何防止应用程序被发送终止信号?

双击电源按钮时闪光灯应打开

以编程方式在iPhone 6中使用指导访问