Skip to content

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 tinMô tả
Xcode16.0+
Phiên bản iOS mục tiêu13+
Swift5

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ườngKiểuMô 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.
livenessResultCESEkycResponse<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ườngKiểuMô tả
CESError.userCancelled40001Người dùng nhấn back.
CESError.timeoutError40000Timeout.
CESError.permissionNotGranted40002Các quyền chưa được cấp.
CESError.qualityFailed60002 / 60003kErrorCodeFaceSanityFailed hoặc kErrorCodeFaceLivenessFailed.
CESError.unexpectedError50000Runtime 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).

→ Tải ảnh lên

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 ​

Developers