2016-03-31 24 views
1

'u iptal etmesini engelleyemez Touch ID uyarısı görüntülendiğinde, bir "Cancel" (İptal) düğmesi de vardır. Kullanıcının daha fazla devam etmesinin yasak olduğu için iptal etmesine izin vermemeyi tercih ederim. 1. "İptal" tuşunu kaldırmanın bir yolu var mı? 2. "İptal" düğmesine ihtiyacınız varsa, kullanıcıyı bir parmak izi ile yeniden kimlik doğrulaması için nasıl zorlayabilirim? Authenticate() ikinci kez çağrılırsa, Touch ID API'si onları etkinleştirir. Alternatif bir şifre yoktur ve bunun için başka bir görüntü denetleyicisini de kodlamaktan nefret ediyorum.Kullanıcının, 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() 
      } 
     }) 
    } 

} Ana sırasına self.authenticate verememeniz çağrı gönderme gerek

+3

Bu gerçekten bir kullanıcı düşmanca tasarımdır - bunu tasarım açısından yeniden değerlendirmek isteyebilirsiniz. – sschale

+0

En azından şifrenin geri alınmasına izin vermeyi düşünün; ve şifrenin şifreden daha güvenli olduğunu düşünmenin tuzağına düşmeyin, çünkü şifreyi biliyorsanız yeni parmakları kaydedebilirsiniz ... – Paulw11

cevap

1

;

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