我的应用程序支持我的用户的pin代码,每次应用程序从多任务处理返回或设备从睡眠状态返回时,我都被要求显示pin代码。为了确保用户首先看到的是PIN码屏幕,而不是在看到PIN码之前的一秒钟内的真实数据,我正在观察applicationDidEnterBackground和applicationWillResignActive方法。问题是,applicationWillResignActive在很多场合都会被调用,比如用户双击主页按钮,收到短信或推送通知,然后尝试购买应用程序中的购买请求。有没有办法区分所有这些情况,并简单地识别设备的自动睡眠或当用户点击睡眠按钮时的情况?
谢谢
投资回报
发布于 2011-01-30 18:43:36
没有一种直接的方法来区分你的应用程序进入后台模式的所有原因。但是,您可以在applicationWillResignActive:中调用CFAbsoluteTimeGetCurrent(),保存时间戳,并检查applicationDidBecomeActive:中是否经过了足够的时间来保证显示PIN码输入。例如,如果经过的时间不到10秒,则可以跳过显示PIN码条目。这确实会降低你的应用程序的安全性,但也会减少用户的烦扰。
虽然这个解决方案看起来并不理想,但实际上,你的应用程序退出活动状态的原因并不重要。不管是什么原因,它可能会在很长一段时间后变得活跃,如果iOS决定终止它,它也可能永远不会再活跃起来。
https://stackoverflow.com/questions/4842220
复制相似问题