2017-11-23 2 views
3

In unserer App muss sich der Benutzer für die Gerätebiometrie registrieren, um ihn für die Authentifizierung zu verwenden. Der Registrierungstext und die rechtlichen Hinweise entsprechen der relevanten Biometrie (Register to touch ID oder register to face ID) Soweit ich gefunden habe, ist der Biometrietyp über den LAContext erhältlich, aber wenn der Benutzer die Verwendung der Biometrie verweigert, dann der Kontext gibt zurück biometryType = .noneBiometrietyp, wenn der Benutzer die Biometrie verweigert

Irgendwelche Ideen andere, die nach der Bildschirmgröße und dem Vergleichen mit iphone X (schlechter schlechter Code) fragen?

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 
     } 
    } 

Dank

Antwort

3

ich die gleiche gleiche Problem haben, und ich habe das gerade herausgefunden, wenn Sie die Bewertung gegen die Schlüssel LAPolicyDeviceOwnerAuthentication statt LAPolicyDeviceOwnerAuthenticationWithBiometrics, auch nachdem der Benutzer abgelehnt, die Erlaubnis, die Auswertung ist erfolgreich und Sie erhalten den richtigen BiometrieTyp. Ihr Code würde wie

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 
    } 
} 

HINWEIS: auf Geräte ohne Touch-ID und Gesicht ID, es Rückkehr noch ja, so würden Sie nicht wissen, ob das Gerät wirklich ein biometrisches hw hat oder nicht mit iOS weniger als 11 (die Bestrahlung die Eigenschaft biometriyType)

aktualisieren

Für Geräte mit iOS Version 10 oder niedriger, können Sie die LAPolicyDeviceOwnerAuthenticationWithBiometrics wie gewohnt verwenden, wird es korrekt verhalten (Rückkehr wahr, ob das Gerät des Touch-Id unterstützt), so ist es nur eine Frage der Differenzierung der mit O Version :)

Lassen Sie mich wissen, ob es funktioniert :)

Beste

+0

funktioniert wie ein Zauber. Vielen Dank –

+0

@Juan iOS 10 kann nur die Unterstützung (oder nicht) der Touch-ID, ich spreche über das Ergebnis von der Methode canEvaluatePolicy, die zurückgeben, ob das Gerät physisch den Fingerabdruck-Sensor auf ihm hat. Um sicher zu sein, können Sie unter iOS 10 die Richtlinie LAPolicyDeviceOwnerAuthenticationWithBiometrics verwenden. Das Szenario, in dem Sie iOS 10 auf dem iPhone X ausführen, kann nicht berücksichtigt werden, da es bereits mit iOS 11 geliefert wird. Es gibt keinen Sinn, biometryType auf iOS10 zu haben, da es nur dann wahr ist, wenn Sie einen Fingerabdrucksensor haben :) Ich habe meine Antworten für den iOS 10 Fall bearbeitet –

Verwandte Themen