代码之家  ›  专栏  ›  技术社区  ›  Bartłomiej Semańczyk

我如何观察用户何时使用生物特征验证应用程序?

  •  1
  • Bartłomiej Semańczyk  · 技术社区  · 7 年前

    简单地说,在代码中我是这样使用的:

    let context = LAContext()
    if context.canEvaluatePolicy(.deviceOwnerAuthentication, error: nil)
        context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: "jjj") { success, error in
            print(error)
            print(success)
        }
    }
    

    用户可以看到:

    enter image description here

    一切正常,直到用户点击 Cancel . 然后显示标签:

    "Please use biometrics to authenticate" . 现在,我需要得到一个回调后,用户在任何时候进行身份验证后,第一次尝试被取消。我怎么能发现这个?

    2 回复  |  直到 7 年前
        1
  •  1
  •   matt    7 年前

    你不需要回电话。如果用户拒绝对对话框进行身份验证,则只能在设置中进行身份验证,即在应用程序外部。所以每次你的应用程序出现在前台时都要检查身份验证。

        2
  •  -2
  •   Chuong Tran    7 年前

    尝试代码Obj-C,我认为Swift是相同的逻辑

    self.context = [[LAContext alloc] init];
    [self.context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
            localizedReason:strMessage
                      reply:^(BOOL success, NSError *error) {
    
                          dispatch_async(dispatch_get_main_queue(), ^{
    
                              if (error) {
                                  if (error.code == LAErrorUserFallback) {
                                      //Do some thing
                                  }else if (error.code == LAErrorAuthenticationFailed) {
                                      //User authen failed
                                  }else if (error.code == LAErrorUserCancel) {
                                      //User cancel
                                  }else{
                                      //Something wrong...
                                  }
                                  return;
                              }
    
                              if (success) {
                                 //Success
                              } else {
                                //Failed
                                  return;
                              }
                          });
    
                      }];