2016-03-31 1 views
1

Wenn der Touch ID-Alarm angezeigt wird, gibt es auch eine Schaltfläche "Abbrechen". Ich würde es vorziehen, dem Benutzer KEINEN Abbruch zu erlauben, weil es verboten ist, weiter zu machen. 1. Gibt es eine Möglichkeit, die Schaltfläche "Abbrechen" zu entfernen? 2. Wenn die Schaltfläche "Abbrechen" erforderlich ist, wie kann ich den Benutzer zur erneuten Authentifizierung mit einem Fingerabdruck zwingen? Wenn authenticate() ein zweites Mal aufgerufen wird, lässt die Touch ID-API sie einfach ein. Es gibt keinen alternativen Passcode und ich würde es hassen, einen anderen View-Controller dafür programmieren zu müssen.Benutzer kann die Bereinigung nicht verhindern. Touch ID

func authenticate() { 
    let myContext:LAContext = LAContext() 
    let authError:NSErrorPointer = nil 
    if (myContext.canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, error: authError)) { 
     myContext.evaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, localizedReason: "Press fingerprint", reply: { (success:Bool, error:NSError?) -> Void in 
      if success == true { 
       log.debug("SUCCESSFUL AUTHENTICATION") 
       dispatch_async(dispatch_get_main_queue(), {() -> Void in 
        self.performSegueWithIdentifier("showUI", sender: self) 
       }) 
      } 
      else { 
       log.debug("FAILED AUTHENTICATION") 

       self.authenticate() 
      } 
     }) 
    } 

}

+3

Das ist wirklich ein benutzerfeindliches Design - Sie sollten das vom Design Standpunkt aus überdenken. – sschale

+0

Zumindest in Betracht ziehen, Fallback auf Passcode zuzulassen; und fallen Sie nicht in die Falle, dass Sie denken, dass die touchID sicherer ist als der Zugangscode, denn wenn Sie den Zugangscode kennen, können Sie neue Finger registrieren ... – Paulw11

Antwort

1

Sie benötigen Ausfall Aufruf self.authenticate auf der Haupt Warteschlange zu versenden;

func authenticate() { 
    let myContext:LAContext = LAContext() 
    let authError:NSErrorPointer = nil 
    if (myContext.canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, error: authError)) { 
     myContext.evaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, localizedReason: "Press fingerprint", reply: { (success:Bool, error:NSError?) -> Void in 
      if success == true { 
       log.debug("SUCCESSFUL AUTHENTICATION") 
       dispatch_async(dispatch_get_main_queue(), {() -> Void in 
        self.performSegueWithIdentifier("showUI", sender: self) 
       }) 
      } 
      else { 
       log.debug("FAILED AUTHENTICATION") 
       dispatch_async(dispatch_get_main_queue(), {() -> Void in 
        self.authenticate() 
       }) 
      } 
     }) 
    } 
} 
Verwandte Themen