Repositori GitHub
Lihat kode sumber dan contoh di GitHub
SDK Native: Ini adalah pendekatan yang direkomendasikan untuk aplikasi Android. SDK native memberikan pengalaman pengguna terbaik, penanganan kamera yang dioptimalkan, dan dukungan NFC penuh.
Persyaratan
Ketersediaan fitur menurut level API: Deteksi otomatis dokumen dan wajah memerlukan API 24+ (detektor ringan milik Didit sendiri, yang disertakan dalam
didit-sdk-core). Pada perangkat API 23, SDK beralih ke pengambilan manual dengan tombol rana berwaktu. Semua fitur lain berfungsi di seluruh rentang API 23+.Persetujuan biometrik memerlukan SDK native versi 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 Android 4.10.0 dan yang lebih baru menampilkan langkah tersebut. Versi sebelumnya tidak dapat menampilkan langkah ini: sesi mereka tetap berjalan seperti biasa, dan keputusan melaporkan bahwa persetujuan tidak dikumpulkan (
biometric_consent.reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"). Lakukan pembaruan jika Anda memverifikasi orang di negara bagian tersebut.Installation
Langkah 1: Tambahkan Repositori
Tambahkan repositori Maven Didit ke blokrepositories di settings.gradle.kts Anda:
settings.gradle (Groovy):
Langkah 2: Tambahkan Dependensi
Tambahkan dependensi SDK kebuild.gradle.kts aplikasi Anda:
(!) Untuk versinya, pastikan Anda memeriksa repositori GitHub untuk versi terbaru.
build.gradle (Groovy):
Varian SDK
SDK Android dirilis sebagai artefak terpisah, sehingga aplikasi Anda hanya menanggung ukuran biner dari fitur yang digunakannya.me.didit:didit-sdk di atas adalah bundel lengkap. Pilih yang sesuai dengan aplikasi Anda:
Sejak
4.6.0, penandatanganan dompet secara native melalui WalletConnect dirilis sebagai add-on opsional tersendiri, me.didit:didit-sdk-wallet.
Bundel lengkap me.didit:didit-sdk sudah menyertakannya, jadi tidak ada yang berubah jika Anda memasang bundel tersebut.
Jika Anda menggunakan salah satu artefak yang lebih ringan dan ingin konfirmasi kepemilikan dompet berjalan secara native di dalam aplikasi Anda, tambahkan me.didit:didit-sdk-wallet di sampingnya; tanpa add-on tersebut, SDK menyelesaikan kepemilikan dompet melalui alur browser yang aman, sehingga fitur tetap berfungsi dalam kedua kondisi. Memindahkan WalletConnect keluar dari didit-sdk-core juga menghapus beberapa megabyte dependensi dompet dari setiap build yang tidak membutuhkannya.
Semua artefak dipublikasikan dengan versi yang sama, jadi pastikan semuanya tetap menggunakan 4.13.2.
Menjaga ukuran unduhan tetap kecil
Model deteksi yang digunakan untuk pengambilan gambar otomatis diunduh saat runtime dan disimpan dalam cache, sehingga tidak pernah dihitung dalam ukuran aplikasi Anda. Yang ditambahkan pengambilan gambar otomatis ke aplikasi Anda adalah pustaka native runtime ML, dan biayanya bergantung pada arsitektur CPU: sekitar 10 MB untukarm64-v8a, 7 MB untuk armeabi-v7a, dan 13 MB untuk masing-masing dari dua arsitektur emulator x86.
Agar biaya ini hanya dikeluarkan sekali:
- Publikasikan Android App Bundle (AAB). Google Play hanya mengirimkan arsitektur dan bahasa milik perangkat, sehingga ponsel arm64 memasang sekitar 10 MB kode native (sekitar 4 MB unduhan terkompresi). APK universal justru menyertakan keempat arsitektur, lebih dari 40 MB, dan ini adalah penyebab paling umum dari hasil pengukuran ukuran yang lebih besar dari perkiraan.
-
Jika Anda mendistribusikan satu APK dan target Anda adalah ponsel dan tablet ARM, batasi arsitektur yang disertakan:
Pertahankan setiap ABI yang benar-benar digunakan pengguna Anda. Tambahkan
x86_64jika Anda menargetkan Chromebook atau perangkat x86 lainnya, atau publikasikan pemisahan APK per ABI agar tidak ada perangkat yang kehilangan dukungan. -
Aktifkan R8. Atur
isMinifyEnabled = truedanisShrinkResources = truedi build type rilis Anda (minifyEnabled true/shrinkResources truejika Anda menggunakanbuild.gradleGroovy). SDK menyertakan aturan konsumen sendiri, sehingga kode SDK yang tidak digunakan dihapus tanpa konfigurasi tambahan. -
Batasi bahasa yang disertakan dengan
resConfigs(...)jika Anda tidak memerlukan semua 48 locale SDK dalam build APK; pemisahan bahasa AAB menanganinya secara otomatis di Google Play.
Langkah 3: Tambahkan Pengecualian Pengemasan
Tambahkan ini ke blokandroid aplikasi Anda untuk menghindari konflik build:
Izin
SDK memerlukan izin berikut. Izin ini dideklarasikan diAndroidManifest.xml milik SDK dan akan digabungkan secara otomatis ke manifest aplikasi Anda:
Fitur Kamera dan NFC
SDK mendeklarasikanandroid.hardware.camera dan android.hardware.nfc sebagai fitur opsional (android:required="false"). Hal ini memastikan aplikasi Anda dapat dipasang di perangkat tanpa kamera atau perangkat keras NFC. SDK akan menangani perangkat keras yang tidak tersedia dengan baik saat runtime.
Mulai Cepat
Langkah 1: Inisialisasi SDK
Inisialisasi SDK diApplication.onCreate():
Langkah 2: Mulai Verifikasi dan Tangani Hasil
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 Konsol Didit. Hanya terbatas padavendorData.
Metode 2: Sesi Backend (Direkomendasikan untuk Produksi)
Backend Anda membuat sesi melalui API Pembuatan Sesi Verifikasi (POST /v3/session/) dengan dukungan parameter lengkap (contact_details, expected_details, metadata, callback, dll.), lalu meneruskan session_token ke SDK.
- Mengaitkan sesi dengan pengguna Anda (
vendor_data) - Mengatur metadata kustom
- Mengonfigurasi callback per sesi
- Menyediakan detail kontak dan detail yang diharapkan untuk validasi silang
Konfigurasi
Sesuaikan perilaku SDK:Opsi Konfigurasi
Opsi kamera
Opsi kamera sesuai dengan opsi kamera Web SDK. Setiap lensa adalahCameraLens.FRONT atau CameraLens.BACK.
Jika perangkat tidak memiliki lensa yang diminta, SDK menggunakan kamera pertama yang tersedia.
Pengalih kamera juga disembunyikan pada perangkat yang hanya memiliki satu kamera.
Atur opsi pengalih ke false untuk membatasi pengguna pada lensa default langkah tersebut.
Opsi
showLanguageSelector, showCloseButton, showExitConfirmation, dan closeOnComplete sesuai dengan DiditSdkConfiguration milik Web SDK. Opsi khusus mobile languageLocale dan fontFamily ada karena SDK mobile merender UI verifikasi lengkap secara native (tidak seperti Web SDK, yang meneruskan ke frontend yang di-hosting di dalam iframe).Tema & Warna: Warna, latar belakang, dan pengaturan layar pengantar dikonfigurasi melalui pengaturan White Label Anda di Konsol Didit, bukan di konfigurasi SDK. Hal ini memastikan branding yang konsisten di semua platform.
Dukungan Bahasa
SDK mendukung 54 bahasa. Jika tidak ada bahasa yang ditentukan, SDK menggunakan locale perangkat dengan bahasa Inggris sebagai cadangan.Opsi Lanjutan
Untuk parameter sesi lanjutan (contact_details, expected_details, metadata, callback), gunakan metode Sesi Backend. Backend Anda memanggil API Pembuatan Sesi Verifikasi dengan parameter lengkap, lalu meneruskan session_token ke SDK.
Menangani Hasil
Kelas sealedVerificationResult memberikan hasil dari verifikasi:
Kasus Hasil
Properti SessionData
Tipe Error
Semua error merupakan subclass sealed darime.didit.sdk.VerificationError:
Koneksi terputus
Jika perangkat kehilangan koneksi selama verifikasi, SDK menampilkan layar “Tidak ada koneksi internet” selama alur berlangsung, alih-alih membiarkan langkah terus memuat. SDK terus memeriksa di latar belakang dan menutup layar dengan sendirinya begitu Didit dapat dijangkau kembali, lalu pengguna melanjutkan dari langkah yang sedang mereka jalankan. Layar ini menampilkan Try Again dan, jikashowCloseButton bernilai true (secara default), Exit Verification.
Keluar akan mengakhiri verifikasi dengan VerificationResult.Failed(error = VerificationError.NetworkError, session = ...), sehingga aplikasi Anda tahu bahwa pengguna keluar karena masalah koneksi.
Contoh Penanganan Hasil Lengkap
Memantau Status SDK
Anda dapat memantau status SDK untuk UI pemuatan kustom:ProGuard / R8
SDK menyertakan aturan ProGuard consumer-nya sendiri. Tidak diperlukan konfigurasi tambahan. Jika Anda menggunakan mode penuh R8, Anda mungkin perlu menambahkan ini kegradle.properties Anda:
Contoh End-to-End (Sesi Backend → Android SDK → Hasil)
Pola ini adalah integrasi yang siap produksi. Backend Anda membuat sesi, aplikasi Android Anda menerimasession_token, dan SDK menjalankan alurnya.