2017-11-23 21 views
3

우리의 앱에서는 사용자가 인증에 사용하기 위해 장치 생체 인식에 등록해야합니다. 등록 텍스트 및 법적 메모는 관련 생체 인식 (등록 ID 또는 등록 ID 등록) 에 따라 다릅니다. 내가 알고있는 한, 생체 인식 유형은 LAContext를 통해 얻을 수 있지만 사용자가 생체 인식 사용을 거부하면 문맥은 biometryType = .none을 반환합니다.사용자가 생체 인식 사용을 거부했을 때의 생체 유형

다른 화면 크기를 묻는 질문과 아이폰 X (나쁜 코드)와 비교하는 아이디어가 있습니까?

static fileprivate var biometryType: DSLocalAuthenticationBiometryType { 
     let context = LAContext() 

     var error: NSError? 
     let _ = context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) 

     if #available(iOS 11.0, *) { 

      return context.biometryType == .typeFaceID ? .typeFaceID : .none 
     } 
     else { 
      return .none 
     } 
    } 

감사

답변

3

내가 같은 동일한 문제가있어, 난 그냥 발견했습니다 당신은 키 LAPolicyDeviceOwnerAuthentication에 대해 대신 의 LAPolicyDeviceOwnerAuthenticationWithBiometrics, 사용자가 거절 후에도를 평가하는 경우 권한이 있으면 평가가 성공하고 올바른 biometryType을 얻습니다. 코드는 것

static fileprivate var biometryType: DSLocalAuthenticationBiometryType { 
    let context = LAContext() 

    var error: NSError? 
    let _ = context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error) 

    if #available(iOS 11.0, *) { 

     return context.biometryType == .typeFaceID ? .typeFaceID : .none 
    } 
    else { 
     return .none 
    } 
} 

주와 같은 : 터치 ID와 얼굴 아이디없이 장치에 여전히 YES 반환, 그래서 당신은 11보다 낮은 아이폰 OS와 디바이스가 정말 생체 인식 얼굴을가 있는지 여부를 알거나하지 않을 것

업데이트 10 이하, 당신은 평소처럼 LAPolicyDeviceOwnerAuthenticationWithBiometrics를 사용할 수있는 iOS 버전과 장치의 경우

(이이 속성 biometriyType 노출되지 않도록), 올바르게 작동합니다 (장치가 터치 이드 지원하는지 여부를 사실 반환), 그래서

가 작동하는지 알려줘 실행중인 OS 버전 : 차별의 문제 : 마법처럼

최저

+0

작품입니다. 고맙습니다. –

+0

@ Juan iOS 10 만 터치 ID 지원 여부를 알 수 있습니다. 기기에 물리적으로 지문 센서가 있는지 여부를 true로 반환하는 메서드 canEvaluatePolicy에서 오는 결과에 대해 이야기하고 있습니다. 이것에 관해서는 iOS 10에서 LAPolicyDeviceOwnerAuthenticationWithBiometrics 정책을 사용할 수 있습니다. iPhone X에서 iOS 10을 실행하는 시나리오는 iOS 11에 이미 포함되어 있으므로 고려할 수 없습니다. 따라서 iOS 11에 biometryType을 지정하지 않아도됩니다. 지문 센서가있는 경우에만 true를 반환합니다. iOS 10 경우에이를 지정하는 답변을 수정했습니다. –