2016-10-24 10 views
3

Im Verwenden von Touch-ID, um iPhone-Benutzer in meiner App zu identifizieren, wenn canEvaluatePolicy: LAPolicyDeviceOwnerAuthenticationWithBiometrics verwendet wird, um auszuwerten, ob der Benutzer die Touch-ID verwenden kann, aber nach vielen fehlgeschlagenen Versuchen, selbst wenn der Benutzer die Touch-ID verwenden darf. es gibt FALSE zurück.Touch ID: Biometrie ist gesperrt. Code = -8

Und das wird die App dazu führen, diesen Schritt zu überspringen und denkt, dass die Touch-ID in diesem Gerät nicht unterstützt wird. Hier

ist der Fehler, den ich erhalten: "Biometry gesperrt ist"

Fehler Domain = com.apple.LocalAuthentication-Code = -8 UserInfo = {NSLocalizedDescription = Biometrie ist gesperrt.}

+1

Haben Sie eine Frage? Nach zu vielen fehlgeschlagenen Touch-ID-Versuchen müssen Sie Ihren Code eingeben http://stackoverflow.com/questions/29728762/getting-touch-id-notification-if-passcode-is-used – Paulw11

+0

Mutawe: Haben Sie die gefunden? Antwort auf dein Problem? Es scheint, dass das Problem mit iOS 10 zusammenhängt (für mich funktioniert es ordnungsgemäß auf iOS 9) – tgebarowski

+0

tgebarowski: Für mich sobald die Biometrie gesperrt ist, bitte ich den Benutzer, sein Profil-Passwort einzugeben, da die Anmeldung von Web-Service-Benutzer abhängt Authentifizierung – Mutawe

Antwort

6

Ok, ich denke, dass ich die Antwort gefunden habe. Hoffentlich wird es dir helfen. Wenn Sie

Error Domain=com.apple.LocalAuthentication Code=-8 "Biometry is locked out." UserInfo={NSLocalizedDescription=Biometry is locked out.}

iOS 10 blockiert den Zugriff auf TouchID bekommen, kann es entweder entriegelt werden durch Passcode bietet auf iOS Bildschirm zu entsperren, TouchID iOS-Einstellungen den Zugriff auf und das Passwort dort Bereitstellung oder manuell Auslösen der Passcode-Bildschirm aus der App Sie können den Passcode mit folgendem Snippet öffnen.

let context = LAContext() 
context.evaluatePolicy(LAPolicy.DeviceOwnerAuthentication, 
          localizedReason: reason, 
          reply: { (success, error) in 
}) 

Natürlich können Sie zuerst überprüfen, ob diese Richtlinie ausgewertet werden kann.

Am Ende, wenn der Benutzer den Passcode erfolgreich eingegeben hat, wird die Biometrie freigeschaltet. Vor iOS 10 wurde dies vom Betriebssystem automatisch durchgeführt.

+0

wie Sie sagen, auf iOS 10 TouchID kann auch entsperrt werden durch "manuell Auslösen des Passcode-Bildschirm aus der App." Aber wie? Ich weiß, bevor iOS 10, können Sie einfach wieder evaluatePolicy, das System Passcode-Eingabe-Schnittstelle erscheint und dann aktiviere die TouchID, aber wenn du dies unter iOS 10 machst, bekommst du für immer einen Fehlercode -8. Jede Hilfe wird dir gut gefallen. :) –

+1

Neal.Martin, entschuldige dich für eine so späte Antwort Du musst die Richtlinien neu bewerten mit LAPolicy.DeviceOwnerAuthentication, wenn Sie diesen Fehler erhalten. Wenn Sie dies tun, werden Sie Passcode-Bildschirm anzeigen.Wenn der Benutzer seine PIN eingibt, wird Biometrie entsperrt werden. Vor iOS 10 wurde dieser Schritt nicht benötigt. – tgebarowski

+0

Ja, ich mache es durch meine Selbst. Nach Auswertung der Richtlinie mit DeviceOwnerAuthentication, habe ich Erfolg Code. Dann ging ich zurück zum vorherigen Trick, um einen Prüfzyklus zu bilden. Das ist es! Vielen Dank für U sind so netter Kerl. :) –