Tích hợp iOS SDK
Chụp khuôn mặt cho FaceAuthen bằng CAKE eKYC iOS SDK, phiên bản 1.1.9. Entry point là CakeEkycSdk.
Yêu cầu build
| Thông tin | Mô tả |
|---|---|
| Xcode | 16.0+ |
| Phiên bản iOS mục tiêu | 13+ |
| Swift | 5 |
Thiết lập dependency
Thêm các SDK framework vào target của bạn, sau đó khai báo quyền camera:
xml
<key>NSCameraUsageDescription</key>
<string>Camera access helps us give you a better experience</string>ruby
pod 'TensorFlowLiteSwift', '2.6.0'
pod 'GoogleMLKit/FaceDetection', '6.0.0'
pod 'PromisesSwift', '~> 2.3.1'
pod 'SnapKit', '~> 5.0.1'Khởi tạo
swift
let config = CESConfig.Builder()
.withBaseUrl(url: "<BASE_URL>")
.withToken(tokenProvider: tokenProvider)
.withLanguage(language: .vi)
.withLogger(logger: logger)
.build()
self.cancelable = CakeEkycSdk.getInstance(config: config)
.receive(on: DispatchQueue.main)
.sink { [weak self] ekycSdk in
self?.ekycSdk = ekycSdk
}Chụp khuôn mặt
swift
class YourUIViewController: UIViewController, CESFaceCapturingDelegate {
func onSuccess(result: CESSelfieResult) {}
func onError(error: CESError) {}
func onEvent(event: CESEkycEvent) {}
private func startFace() {
guard let ekycSdk else { return }
let config = CESTakeFaceConfig(captureOnly: false, loadingView: loadingView)
ekycSdk.takeFaces(hostViewController: self, config: config, delegate: self)
}
}CESSelfieResult mang theo các khuôn mặt đã chụp cùng kết quả kiểm tra.
| Trường | Kiểu | Mô tả |
|---|---|---|
faces | [Face]? | Các khuôn mặt đã chụp, mỗi khuôn mặt có image và gesture. |
sanityResult | [CESEkycResponse<CESFaceSanityData>]? | Response sanity cho từng ảnh. |
livenessResult | CESEkycResponse<CESFaceLivenessData>? | Kết quả liveness. |
Lấy face.image.id từ mỗi phần tử và truyền chúng vào mảng faces cho Đăng ký khuôn mặt hoặc Xác minh Face Authen.
Lỗi
| Trường | Kiểu | Mô tả |
|---|---|---|
CESError.userCancelled | 40001 | Người dùng nhấn back. |
CESError.timeoutError | 40000 | Timeout. |
CESError.permissionNotGranted | 40002 | Các quyền chưa được cấp. |
CESError.qualityFailed | 60002 / 60003 | kErrorCodeFaceSanityFailed hoặc kErrorCodeFaceLivenessFailed. |
CESError.unexpectedError | 50000 | Runtime exception. |
INFO
iOS không có mã lỗi riêng cho camera. 40003 chỉ tồn tại trên Android và Flutter — lỗi camera trên iOS xuất hiện dưới dạng unexpectedError.
Tải ảnh lên
swift
let uploadResult = ekycSdk.upload(image: image, label: "portrait", metaData: metaData)
switch uploadResult {
case .success(data: let uploadResponse):
debugPrint("success: \(uploadResponse.data?.imageId)")
case .fail(error: let error):
debugPrint("fail: \(error)")
default: fatalError()
}Data cũng được chấp nhận: ekycSdk.upload(data: data, label: "portrait", metaData: metaData).
Các kiểm tra riêng lẻ
swift
let faceSanity = ekycSdk.checkFaceSanity(params: CESFaceSanityParams(image: "<IMAGE_ID>"))
let faceLiveness = ekycSdk.checkFaceLiveness(params: CESFaceLivenessParams(images: ["<IMAGE_ID>"]))
let compared = ekycSdk.compareFaces(params: CESFaceCompareParams(image1: "<IMAGE_ID_1>", image2: "<IMAGE_ID_2>"))INFO
CESFaceLivenessParams nhận images: [String] — truyền một mảng, không phải một image đơn lẻ.
Bước tiếp theo
- Tổng quan Mobile SDK — các khái niệm dùng chung giữa các nền tảng
- Đăng ký khuôn mặt — đăng ký các image ID đã chụp
- Xác minh Face Authen — xác thực bằng một lần chụp mới