我的应用程序支持用户的 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/