Código-fonte
import UIKit
import CafFaceLivenessLite
final class MainViewController: UIViewController {
private let sdk = CafFaceLivenessLiteSDK(enableSecurity: true)
override func viewDidLoad() {
super.viewDidLoad()
sdk.delegate = self
let startButton = UIButton(type: .system)
startButton.setTitle("Iniciar Liveness Lite", for: .normal)
startButton.addTarget(self, action: #selector(startLivenessLite), for: .touchUpInside)
view.addSubview(startButton)
// Layout omitido
}
@objc private func startLivenessLite() {
sdk.startSDK(
viewController: self,
mobileToken: "mobileToken",
personId: "personId",
customLocalization: nil,
customLocalizationBundle: nil,
environment: .prod,
loading: true
)
}
}
extension MainViewController: CafFaceLivenessLiteDelegate {
func didFinishWithSuccess(livenessResult: CafFaceLivenessLiteResult) {
// JWT opaco da rota assíncrona — resolva o resultado final no seu backend
print("Sucesso: \(livenessResult.signedResponse ?? "-")")
}
func didFinishWithFailure(type: CafFailureType, description: String?, signedResponse: String?) {
print("Falha: tipo=\(type) desc=\(description ?? "-") assinado=\(signedResponse ?? "-")")
}
func didFinishWithError(type: CafErrorType, description: String) {
print("Erro: tipo=\(type) desc=\(description)")
}
func cancelled() { print("Cancelado") }
func loading() { print("Carregando") }
func loaded() { print("Carregado") }
}Atualizado

