我想知道是否這是由蘋果打算使用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