Repositori GitHub
Lihat kode sumber, rilis, dan log perubahan lengkap di GitHub
SDK Native: Ini adalah pendekatan yang direkomendasikan untuk aplikasi iOS. SDK native memberikan pengalaman pengguna terbaik, penanganan kamera yang dioptimalkan, dan dukungan NFC penuh.
Persyaratan
Kompatibilitas Versi iOS
Persetujuan biometrik memerlukan SDK native 4.10.0 atau yang lebih baru. Untuk orang yang tercakup oleh hukum Illinois, Texas, atau Colorado, Didit dapat meminta persetujuan biometrik secara eksplisit sebelum pengambilan wajah pertama. SDK iOS 4.10.0 dan yang lebih baru menampilkan langkah tersebut. Versi sebelumnya tidak dapat menampilkan langkah ini: sesi mereka berjalan seperti biasa, dan laporan keputusan menyatakan bahwa persetujuan tidak dikumpulkan (
biometric_consent.reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"). Tingkatkan versi jika Anda memverifikasi orang di negara bagian tersebut.Instalasi
Sejak4.0.0, SDK tersedia dalam beberapa varian yang dapat diinstal, sehingga aplikasi Anda hanya menanggung ukuran biner dari fitur yang benar-benar digunakan. Pilih tepat satu varian: satu subspec CocoaPods dan satu produk library SwiftPM.
- Core: footprint terkecil, dengan pengambilan dokumen dan swafoto otomatis menggunakan detektor ringan milik Didit sendiri. Tidak ada
OpenSSL.xcframeworkdan tidak ada runtime CoreNFC. - AutoDetection: tidak digunakan lagi sejak 4.11.0 dan identik dengan Core. Gunakan Core sebagai gantinya.
- NFC: Core ditambah pembacaan chip paspor/eID NFC.
- All: semua fitur. Ini adalah default saat Anda menginstal
DiditSDKtanpa menyebutkan subspec/produk.
4.9.0): Core ~11.1 MB, NFC ~11.7 MB ditambah ~4 MB OpenSSL, AutoDetection ~16.0 MB, All ~16.6 MB ditambah OpenSSL.
Model deteksi itu sendiri diunduh saat runtime dan di-cache, sehingga tidak pernah dihitung terhadap ukuran unduhan aplikasi Anda.
Sejak 4.11.0, pengambilan otomatis berjalan di detektor ringan milik Didit sendiri di setiap varian. TensorFlow Lite tidak lagi menjadi bagian dari SDK, dan framework menjadi lebih kecil karena terjemahannya dimuat dari luar biner.
Sejak 4.6.0, framework yang dikirimkan tidak lagi memuat Swift ABI descriptors (metadata build yang disalin Xcode ke setiap aplikasi tetapi tidak pernah dibaca) atau video tutorial yang tidak dapat diputar oleh varian tersebut. Saat memperbarui dari 4.5.4 atau sebelumnya, aplikasi Anda menyusut sekitar 7-8 MB dengan sendirinya, tanpa perubahan kode.
App Store mengompres biner untuk pengiriman, sehingga biaya over-the-air lebih rendah. Periksa laporan ukuran aplikasi di App Store Connect untuk selisih per perangkat yang tepat.
Varian NFC dan All menyertakan
OpenSSL.xcframework (OpenSSL 3.3.3, dikirim sebagai OpenSSL-Universal 3.3.3001 melalui NFCPassportReader), yang diperlukan untuk autentikasi chip NFC dan membutuhkan iOS 15.0+. Rilis hingga dan termasuk 4.0.6 menyertakan OpenSSL 1.1.1s; 4.0.7 dan yang lebih baru mengirimkan OpenSSL 3.3.3 dengan privacy manifest dan tanda tangan kodenya sendiri. Selalu instal 4.0.7 atau yang lebih baru. Perlu dicatat bahwa pembaruan menyelaraskan versi OpenSSL, tetapi tidak menghapus benturan embed: jika dependensi lain di aplikasi Anda juga meng-embed OpenSSL.framework (nama file sama, bundle id com.github.krzyzanowskim.OpenSSL yang sama), kedua salinan akan bertabrakan pada tahap embed, terlepas dari versinya. Simpan tepat satu salinan. Misalnya, timpa paket lain berdasarkan identitas SPM agar menggunakan OpenSSL.xcframework yang dipublikasikan Didit, sehingga biner di bundle adalah yang dibangun bersama SDK ini. Varian Core dan AutoDetection tidak menautkan OpenSSL sama sekali.import DiditSDK sama di kode aplikasi Anda, apa pun varian yang Anda instal.
Swift Package Manager (Direkomendasikan)
Tambahkan package ke proyek Anda menggunakan Xcode:- Buka File > Add Package Dependencies
- Masukkan URL repositori:
- Pilih versi (atau Up to Next Major dari
4.13.2) lalu klik Add Package - Saat diminta memilih produk, pilih tepat satu produk library untuk varian Anda (lihat tabel di atas)
Package.swift Anda:
CocoaPods
DiditSDK didistribusikan sebagai podspec biner yang di-host di repositori (tidak tersedia di CocoaPods Trunk publik), sehingga Anda harus mereferensikan URL podspec. Pilih tepat satu subspec:
Core dan AutoDetection mendukung mulai iOS 13; NFC dan All membutuhkan iOS 15 karena NFCPassportReader.
Lalu jalankan:
Setelah
pod install, buka .xcworkspace yang dihasilkan (bukan .xcodeproj).Error rsync Xcode 15+: Jika Anda melihat error rsync
Operation not permitted saat build, atur Build Settings → User Script Sandboxing (ENABLE_USER_SCRIPT_SANDBOXING) ke No pada proyek untuk Debug dan Release.Manual (XCFramework)
Setiap rilis mempublikasikan satu XCFramework per varian. Unduh zip untuk varian Anda dari GitHub Releases, lalu seret folder.xcframework ke Xcode dan atur Embed & Sign.
Permissions
SDK memerlukan izin berikut. Tambahkan izin ini keInfo.plist aplikasi Anda:
Contoh Entri Info.plist
Konfigurasi NFC
Hanya diperlukan saat memasang varian NFC atau All. Lewati bagian ini jika Anda memasang varian Core atau AutoDetection. Untuk mengaktifkan pembacaan NFC pada paspor dan kartu identitas yang memiliki chip:-
Tambahkan Kapabilitas NFC di Xcode:
- Pilih target Anda → Signing & Capabilities → + Capability → Near Field Communication Tag Reading
-
Tambahkan identifier ISO7816 ke
Info.plist:
D392F000260100000001 memungkinkan SDK membaca Japan My Number Card melalui JPKI. Tanpa identifier ini, iOS tidak melaporkan kartu tersebut ke SDK. Pembacaan My Number Card belum diaktifkan di produksi, dan identifier ini tidak berpengaruh pada dokumen lain, jadi Anda dapat menambahkannya sekarang.
- Tambahkan Entitlements (di file
.entitlementsAnda):
Peninjauan App Store (varian NFC dan All): Jika Anda memasang varian NFC atau All, Apple mungkin meminta video demo selama peninjauan karena kode terkait NFC merupakan bagian dari binary SDK, meskipun alur kerja Anda tidak menggunakan NFC. Hubungi support@didit.me untuk meminta video demo NFC kami yang akan diserahkan kepada Apple. Ini tidak berlaku untuk varian Core atau AutoDetection.
Mulai Cepat
Integrasi SwiftUI
Integrasi UIKit
Metode Integrasi
SDK mendukung dua metode integrasi:Metode 1: UniLink (Paling Sederhana)
Tidak memerlukan backend. SDK membuat sesi secara langsung menggunakan ID alur kerja Anda dari Didit Console. Metode UniLink (startVerification(workflowId:)) hanya mendukung vendorData. Untuk parameter sesi lainnya, gunakan Metode 2.
Agar
vendorData dilampirkan ke sesi melalui UniLink, aktifkan opsi Data Vendor di Didit Console.Metode 2: Sesi Backend (Direkomendasikan untuk Produksi)
Backend Anda membuat sesi melalui API Pembuatan Sesi Verifikasi (POST /v3/session/) dengan dukungan parameter penuh (contact_details, expected_details, metadata, callback, dll.), lalu meneruskan session_token ke SDK.
- Mengaitkan sesi dengan pengguna Anda (
vendor_data) - Menetapkan detail kontak dan detail yang diharapkan untuk validasi silang
- Menetapkan metadata kustom
- Mengonfigurasi callback per sesi Data ini (detail kontak, detail yang diharapkan, metadata, callback) dikirim ke API Pembuatan Sesi Verifikasi.
Konfigurasi
Sesuaikan perilaku SDK denganDiditSdk.Configuration:
Opsi Konfigurasi
Opsi kamera
Opsi kamera sesuai dengan opsi kamera Web SDK. Setiap lensa adalah.front atau .back.
Jika perangkat tidak memiliki lensa yang diminta, SDK menggunakan kamera pertama yang dimilikinya.
Pengalih kamera juga disembunyikan pada perangkat yang hanya memiliki satu kamera.
Atur opsi pengalih ke false untuk mengunci pengguna pada lensa default langkah tersebut.
Tema & Warna: Warna, latar belakang, dan pengaturan layar pengantar dikonfigurasi melalui pengaturan White Label Anda di Didit Console, bukan di konfigurasi SDK. Ini memastikan branding yang konsisten di semua platform.
Opsi
showLanguageSelector, showCloseButton, showExitConfirmation, dan closeOnComplete sesuai dengan DiditSdkConfiguration Web SDK. Opsi khusus mobile languageLocale dan fontFamily ada karena SDK mobile merender UI verifikasi lengkap secara native (berbeda dengan Web SDK yang menyerahkannya ke frontend yang di-hosting di dalam iframe).Dukungan Bahasa
SDK mendukung 54 bahasa. Jika tidak ada bahasa yang ditentukan, SDK menggunakan locale perangkat dengan bahasa Inggris sebagai cadangan.Parameter Sesi Lanjutan
Untuk parameter sesi lanjutan (contact_details, expected_details, metadata, callback), gunakan metode Backend Session. Backend Anda memanggil API Create Verification Session dengan parameter lengkap, lalu meneruskan session_token ke SDK.
Menangani Hasil
EnumVerificationResult memberikan hasil dari verifikasi:
Kasus Hasil
Properti SessionData
Tipe Error
Koneksi terputus
Jika perangkat kehilangan koneksi selama verifikasi, SDK menampilkan layar “Tidak ada koneksi internet” di atas alur alih-alih membiarkan langkah terus memuat. SDK terus memeriksa di latar belakang dan menutup layar dengan sendirinya begitu Didit dapat dihubungi kembali, lalu pengguna melanjutkan dari langkah yang sedang mereka jalankan. Layar ini menampilkan Coba Lagi dan, jikashowCloseButton bernilai true (default), Keluar dari Verifikasi.
Keluar akan mengakhiri verifikasi dengan .failed(error: .networkError, session:), sehingga aplikasi Anda tahu bahwa pengguna keluar karena masalah koneksi.
Contoh Lengkap Penanganan Hasil
Menutup Verifikasi secara Programatik
Tersedia di DiditSDK 3.6.0+.
DiditSdk.shared.dismiss(). Ini adalah cara yang direkomendasikan untuk menutup verifikasi saat host perlu mengambil alih layar, misalnya ketika aplikasi berpindah ke latar belakang.
dismiss() melewati alur penyelesaian normal SDK: ia menutup UI yang ditampilkan, mengatur ulang status internal, dan memanggil handler .diditVerification dengan .cancelled(session:) yang membawa sessionId saat ini jika sesi sudah dibuat. Pemanggilan ini tidak melakukan apa pun jika tidak ada verifikasi yang aktif.
Contoh: menutup saat aplikasi masuk ke latar belakang
Memantau Status SDK
Anda dapat memantau status SDK untuk membuat UI pemuatan kustom:Contoh End-to-End (Sesi Backend → SDK iOS → Hasil)
Pola ini adalah integrasi yang siap produksi. Backend Anda membuat sesi, aplikasi iOS Anda menerimasession_token, dan SDK menjalankan alurnya.