我想知道是否这是由苹果打算使用TouchID功能调用这些生命周期方法。TouchID调用applicationWillResignActive和applicationDidBecomeActive
是否有可能来检查touchID过程调用这些方法(我想避免类似的事情在应用程序委托一个BOOL这是如果当前显示或不touchID输入设置。)
BR
我想知道是否这是由苹果打算使用TouchID功能调用这些生命周期方法。TouchID调用applicationWillResignActive和applicationDidBecomeActive
是否有可能来检查touchID过程调用这些方法(我想避免类似的事情在应用程序委托一个BOOL这是如果当前显示或不touchID输入设置。)
BR
我猜你遇到的问题是你的代码在applicationWillResignActive
和applicationDidBecomeActive
,影响请求触摸ID验证的视图控制器,它引发了一个棘手的循环。
您需要做的是将这些调用移动到applicationDidEnterBackground
和applicationWillEnterForeground
,因为在调用Touch ID机制时不会调用它们。
要解释当你的应用程序启动以下顺序执行程序,:
applicationDidBecomeActive
applicationWillResignActive
...您的应用被禁止,直到用户验证指纹(失败或成功 )...
applicationDidBecomeActive
如果在代码applicationDidBecomeActive
- 或 - applicationWillResignActive
影响Touch ID,您将创建一个无限循环或更糟糕的是,您将创建充满标志和特殊情况的代码。
相反,你应该在两种情况下调用触摸ID:
当你的应用程序启动(通常在didFinishLaunchingWithOptions
)
当你的应用的applicationWillEnterForeground
被调用。
你如何建议在applicationWillEnterForeground中实现Touch ID检查?即在返回到您的应用程序时,它会提示用户,并在他们验证其指纹之前不让他们使用任何内容。 – user3246173 2016-03-31 01:40:38
你可以在你的登录脚本中创建一个静态布尔,你可以从你的AppDelegate中检查!
static var isShowingTouchID = false
然后你context.evaluatePolicy
呼叫之前,可以将其设置为true,并在回调函数,它设置为false。我相信你使用reply
参数来设置回调。
然后在您的AppDelegate
中,检查此bool的状态。
最初我在AppDelegate
中使用了一个公共变量并设置了它,但我觉得同样的我不想这样做。坦率地说,我也不喜欢这个解决方案,但它是我唯一能够提出的。
我甚至在我的登录脚本中尝试覆盖viewDidDisappear
,但我很快发现即使在触摸ID提示符下点击“取消”时也没有被调用。
如果有人有更好的解决方案,我很想知道。
您是否找到了答案?我也很好奇。 – pixbroker 2014-10-30 20:33:32