、はいあなたはタッチIDでのお支払いのためのセキュリティを高めることができ、ここで私はSendPaymentIntentHandler.swiftに以下の機能を追加し、私はAppleのサンプルコードhereでそれを実装方法は次のとおりです。
func authenticate(successAuth: @escaping() -> Void, failure: @escaping (NSError?) -> Void) {
// 1. Create a authentication context
let authenticationContext = LAContext()
var error:NSError?
guard authenticationContext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) else {
failure(error)
return
}
// 3. Check the fingerprint
authenticationContext.evaluatePolicy(
.deviceOwnerAuthenticationWithBiometrics,
localizedReason: "Unlock to send the money",
reply: { [unowned self] (success, error) -> Void in
if(success) {
successAuth()
}else {
let message = self.errorMessageForLAErrorCode(errorCode: (error! as NSError).code)
print(message)
failure(error! as NSError)
}
})
}
func errorMessageForLAErrorCode(errorCode:Int) -> String{
var message = ""
switch errorCode {
case LAError.appCancel.rawValue:
message = "Authentication was cancelled by application"
case LAError.authenticationFailed.rawValue:
message = "The user failed to provide valid credentials"
case LAError.invalidContext.rawValue:
message = "The context is invalid"
case LAError.passcodeNotSet.rawValue:
message = "Passcode is not set on the device"
case LAError.systemCancel.rawValue:
message = "Authentication was cancelled by the system"
case LAError.touchIDLockout.rawValue:
message = "Too many failed attempts."
case LAError.touchIDNotAvailable.rawValue:
message = "TouchID is not available on the device"
case LAError.userCancel.rawValue:
message = "The user did cancel"
case LAError.userFallback.rawValue:
message = "The user chose to use the fallback"
default:
message = "Did not find error code on LAError object"
}
return message
}
そして、 handleメソッドでfunction authenticateと呼ばれる結果、私のアプリは支払いを確認した後にTouch ID認証を要求し、ユーザーが認証した後、支払いを正常に送信します。
偉大な質問ですが、私は同様のユースケースに取り組んでいます.. – satheeshwaran
@inforeqd私の答えを見て、それが助けられたらそれを受け入れてください。 :) ありがとうございました。 – Reem