iphone - 将 iPhone sleep 与所有其他 applicationWillResignActive 场景分开

标签 iphone sleep

我的应用程序支持用户的 PIN 码,每次应用程序从多任务处理返回或设备从 sleep 状态返回时,我都被要求显示 PIN 码。 为了确保用户首先看到的是 PIN 码屏幕,而不是看到 PIN 码之前一秒的真实数据,我正在观察 applicationDidEnterBackground 和 applicationWillResignActive 方法。 问题是 applicationWillResignActive 在很多情况下都会被调用,例如当用户双击主页按钮、收到短信或推送通知、尝试购买应用内购买请求时。 有没有办法让我区分所有这些情况,并简单地识别设备的自动 sleep 或用户点击 sleep 按钮时的情况?

谢谢

投资返回率

最佳答案

没有直接的方法来区分应用进入后台模式的所有原因。不过,您可以在 applicationWillResignActive: 中调用 CFAbsoluteTimeGetCurrent(),保存时间戳,并检查 applicationDidBecomeActive: 中是否已经过去了足够的时间显示 PIN 码输入的授权书。例如,如果过去的时间少于 10 秒,您可以跳过显示 PIN 码输入。这确实会降低您的应用程序的安全性,但也会减少用户的烦恼。

虽然这个解决方案可能看起来远非理想,但事实上,您的应用程序放弃其事件状态的原因并不重要。无论什么原因,它可能会在很长一段时间后变得活跃,并且如果 iOS 决定终止它,它也可能永远不会再次活跃。

关于iphone - 将 iPhone sleep 与所有其他 applicationWillResignActive 场景分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4842220/

相关文章:

iphone - 尝试从图像 I/O 创建 AspectRatioThumbnail 时出错

c# - 在 C# 中重叠

c++ - 有什么方法可以同时运行 2 个循环?

c# - 为什么 Thread.Sleep() 会卡住表单?

java - 在队列中等待的线程,Java

iOS 应用程序 - iPad 上的 UI 仅适用于 iPhone 应用程序

iphone - 无法将旧的 iOS "iOS 4.0 - 4.1 Device Debugging Support"安装到 Xcode 4.2

iphone - 日期选择器滚动到过去的日期,即使最小日期设置为当前日期

iphone - sleep 功能的替代方案

iphone - Android 离线 Webapp 资源