Как я могу наблюдать, когда пользователь аутентифицирует приложение с помощью биометрии? - PullRequest
0 голосов
/ 05 октября 2018

Просто в коде я использую это так:

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 ]

0 голосов
/ 05 октября 2018

Вам не нужен «обратный вызов» для этого.Если пользователь отказывается от аутентификации в ответ на диалоговое окно, аутентификация может произойти только в настройках, то есть за пределами вашего приложения.Так что просто проверяйте аутентификацию каждый раз, когда ваше приложение выходит на первый план.

0 голосов
/ 05 октября 2018

Попробуйте с кодом 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;
                          }
                      });

                  }];
...