解决方法
我发现你必须先调用canEvaluatePolicy才能正确获取生物测量类型.如果不这样做,那么原始值总是为0.
所以在Swift 3中就是这样,在Xcode 9.0& beta 9.0.1.
class func canAuthenticateByFaceID () -> Bool { //if iOS 11 doesn't exist then FaceID doesn't either if #available(iOS 11.0,*) { let context = LAContext.init() var error: NSError? if context.canEvaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics,error: &error) { //As of 11.2 typeFaceID is now just faceID if (context.biometryType == LABiometryType.typeFaceID) { return true } } } return false }
你当然可以写这个,只是为了看它是否是生物识别并将类型与bool一起返回,但这对于大多数人来说应该足够了.