2017-10-03 16 views
9

enter image description hereLABiometryType trong iOS11 luôn luôn trở về None

Không có vấn đề gì các thiết lập được cấu hình trong mật mã thiết bị và các thiết lập touchId, LAContext luôn trả về không. Nó chỉ là ném cho tôi một cảnh báo không phải là ngoại lệ.

của nó chỉ làm việc trong XCode 9.1 Beta tại iOS11.1 beta như đề xuất :(

+0

yeas cả trong iPhone 7 Plus chạy iOS 11 và iPad Pro 12.9 inch nhưng với giao diện điều khiển đăng nhập là "[LAClient] initWithExistingContext -> (null), Tên miền lỗi = NSCocoaErrorDomain Code = 4099" Kết nối với servi ce có tên com.apple.CoreAuthentication.daemon đã bị vô hiệu từ quá trình này. " UserInfo = {NSDebugDescription = Kết nối với dịch vụ có tên com.apple.CoreAuthentication.daemon đã bị vô hiệu hóa khỏi quá trình này.} " – guhan0

+0

Có thể trùng lặp của [TouchID crash trên một số thiết bị iPhone 5S] (https://stackoverflow.com/questions/27522482/touchid-crash-on-some-iphone-5s-devices) – the4kman

+0

canEvaluatePolicy return Đúng trong iOS11 đúng như mong đợi và evaluationPolicy đang hoạt động tốt, nhắc nhở touchId từ người dùng. Tôi nhận được cảnh báo ngoại trừ NSCocoaErrorDomain – guhan0

Trả lời

9

tôi chỉ tìm ra các vấn đề Bạn phải gọi canEvaluatePolicy cho biometryType được thiết lập đúng

Ví dụ:!.

func isFaceIdSupported() -> Bool { 
    if #available(iOS 11.0, *){ 
     if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil) { 
      return context.biometryType == LABiometryType.typeFaceID 
     } 
    } 

    return false 
} 

Theo Apple docs cho biometryType:

"Khách sạn này chỉ được đặt khi canEvaluatePolicy (_: lỗi :) thành công cho một chính sách sinh trắc học. Giá trị mặc định là không. "

3

Got cùng một vấn đề ở đây, cố định nó bằng đoạn mã sau. Nhưng nó chỉ hoạt động với Xcode 9.1 Beta (và iOS 11.1 . beta trong mô phỏng)

if (laContext.canEvaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, error: nil)) { 

      if #available(iOS 11.0, *) { 
       if (laContext.biometryType == LABiometryType.typeFaceID) { 
        print("FaceId support") 
       } else if (laContext.biometryType == LABiometryType.typeTouchID) { 
        print("TouchId support") 
       } else { 
        print("No Biometric support") 
       } 
      } else { 
       // Fallback on earlier versions 
      } 
+0

Không công bằng. Apple phát hành XCode9.1 trước khi iPhone X ra mắt. – guhan0

2

Nếu bạn sử dụng mã từ @Ermish, isFaceIdSupported() sẽ trả về false nếu không có khuôn mặt được đăng ký trên thiết bị Theo thử nghiệm mới nhất của tôi hiển thị trên iOS SDK 11.1, chỉ cần gọi chức năng laContext.canEvaluatePolicy và không quan tâm đến kết quả, sau đó kiểm tra các nội dung của laContext.biometryType.

Nếu không có khuôn mặt ghi danh, các canEvaluatePolicy sẽ thất bại, nhưng các thiết bị hỗ trợ Face ID.

Các vấn đề liên quan