每次在新的UIViewController中显示Touch ID身份验证警报

时间:2016-05-12 05:38:00

标签: ios objective-c iphone touch-id

我在我的应用程序中使用了LocalAuthentication进行Touch ID身份验证,但是每个UIViewController都会显示Touch ID警报以进行身份​​验证,那么如何在UIViewController中只调用一次?

2 个答案:

答案 0 :(得分:0)

您只需创建BOOL变量并在FALSE中设置值为appDelegate,并在一个viewController中进行身份验证时,将BOOL变量的值更新为{{ 1}}。在每个viewController中,检查TRUE变量是BOOL还是TRUE并相应地编码。

答案 1 :(得分:0)

使用这个简单的API来简化您的使用:

{'orders': [{'createdTime': '2016-02-29T23:26:32Z',
             'currentStatus': {'additionalProperties': {},
                               'customInfo': None,
                               'stateActionDescription': None,
                               'stateCode': 'DESPATCH_END',
                               'stateDescription': 'Despatch completed',
                               'stateType': 'DISPATCH',
                               'timestamp': '2016-03-02T12:47:26Z',
                               'updateId': 378379,
                               'user': 'Dave Ffitch'},

在任何您喜欢的地方使用它:

import UIKit
import LocalAuthentication 

typealias completionHandler = (evaluationComplete: Bool) -> ()


func showTouchID(Reason reason: String, _ shouldShow: Bool, SuperDone : completionHandler){

    guard shouldShow == true else{
        return
    }

    let bike = LAContext()

    guard bike.canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, error: nil) else{

        SuperDone(evaluationComplete: false)
        return


    bike.evaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, localizedReason: reason) {(_, error) in

        dispatch_async(dispatch_get_main_queue(), {

        guard error != nil else{
            SuperDone(evaluationComplete: false)
            return
        }

    SuperDone(evaluationComplete: true)
        })
}
}