Langsung ke konten utama
SDK React Native lintas platform yang membungkus SDK native iOS dan Android, menyediakan API TypeScript terpadu untuk verifikasi identitas.

Repositori GitHub

Lihat kode sumber dan contoh di GitHub

Paket npm

@didit-protocol/sdk-react-native

SDK Native: Ini adalah pendekatan yang direkomendasikan untuk aplikasi React Native dan Expo. SDK ini membungkus SDK native iOS dan Android untuk pengalaman pengguna terbaik, penanganan kamera yang dioptimalkan, dan dukungan NFC penuh.


Persyaratan

Persyaratan Platform

Persetujuan biometrik memerlukan native 4.10.0 atau yang lebih baru. Untuk orang yang tunduk pada hukum Illinois, Texas, atau Colorado, Didit dapat meminta persetujuan biometrik secara eksplisit sebelum pengambilan wajah pertama. Rilis React Native SDK yang mematok native iOS dan Android 4.10.0 atau yang lebih baru menampilkan langkah tersebut. Versi sebelumnya tidak dapat menampilkan langkah ini: sesinya tetap berjalan seperti sebelumnya, dan keputusan melaporkan persetujuan sebagai belum dikumpulkan (biometric_consent.reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"). Perbarui jika Anda memverifikasi orang di negara bagian tersebut.

Instalasi

Expo (Direkomendasikan)

Lalu tambahkan config plugin ke app.json (atau app.config.js) Anda. NFC diaktifkan secara default:
Plugin ini secara otomatis mengonfigurasi kedua platform:
  • Android: Menambahkan repositori Maven Didit ke Gradle, mengatur properti Gradle diditSdkAndroidNfcEnabled, dan menerapkan aturan dependensi dan pengemasan BouncyCastle
  • iOS: Menambahkan podspec DiditSDK ke Podfile (dipatok ke iOS 15 saat NFC diaktifkan)
Plugin tidak mengedit Info.plist. Tambahkan kunci izin iOS dan, untuk NFC, identifier pemilihan ISO7816 di bawah ios.infoPlist dalam file yang sama. D392F000260100000001 memungkinkan SDK membaca Kartu My Number Jepang melalui JPKI:

Menonaktifkan dependensi NFC

Untuk membangun tanpa dukungan NFC (biner lebih kecil, tidak memerlukan kapabilitas NFC), berikan opsi plugin:
Saat NFC dinonaktifkan, Anda tidak memerlukan kapabilitas NFC iOS, entitlement NFC, atau konfigurasi provisioning yang terkait NFC.
SDK ini menggunakan modul native (kamera, NFC) yang tidak tersedia di Expo Go. Anda harus menggunakan build pengembangan atau menjalankan npx expo prebuild untuk menghasilkan proyek native.

React Native CLI

Pengaturan iOS

Tambahkan pod DiditSDK ke Podfile Anda (pod ini tidak ada di CocoaPods trunk). Blok di bawah ini menghormati variabel lingkungan DIDIT_SDK_IOS_NFC_ENABLED sehingga Anda dapat beralih ke subspec tanpa NFC (DiditSDK/Core) saat instalasi:
Tag di URL podspec harus cocok dengan diditNativeSdkVersions.ios pada versi paket yang terpasang. React Native 4.13.2 mematok native iOS 4.13.2 dan native Android 4.13.2. Jangan arahkan podspec ke main: paket ini bergantung pada versi iOS native yang tepat itu, sehingga begitu main maju, CocoaPods melihat dua persyaratan yang tidak kompatibel untuk DiditSDK dan setiap pod install gagal. Plugin konfigurasi Expo menghasilkan URL ini untuk Anda; hanya jalur React Native CLI murni yang perlu menuliskannya secara manual.
Lalu instal dependensi:
Untuk membangun ulang tanpa dependensi NFC, bersihkan CocoaPods dan jalankan ulang dengan variabel lingkungan yang sudah diatur:

Pengaturan Android

Tambahkan repositori Maven Didit ke settings.gradle tingkat proyek Anda:
Tambahkan kode berikut ke android/app/build.gradle Anda (di dalam blok android { ... }) untuk mengatasi konflik class duplikat BouncyCastle dan duplikat MANIFEST.MF OSGI yang dapat dipicu oleh dependensi transitif DiditSDK:
Untuk membangun tanpa dependensi NFC Android (menggunakan artefak me.didit:didit-sdk-core alih-alih me.didit:didit-sdk), tambahkan ini ke android/gradle.properties:
Hapus properti tersebut, atau atur menjadi true, untuk menggunakan SDK Android lengkap dengan NFC.

Izin

iOS

Tambahkan kunci berikut ke Info.plist aplikasi Anda. Kunci privasi iOS yang wajib tetapi tidak ada akan menyebabkan iOS menghentikan aplikasi begitu SDK mengakses sumber daya yang dilindungi tersebut.

Konfigurasi NFC

Untuk mengaktifkan pembacaan NFC pada paspor dan kartu identitas yang memiliki chip:
  1. Tambahkan kapabilitas NFC di Xcode:
    • Pilih target Anda > Signing & Capabilities > + Capability > Near Field Communication Tag Reading
  2. Tambahkan pengidentifikasi ISO7816 ke Info.plist:
D392F000260100000001 memungkinkan SDK membaca My Number Card Jepang melalui JPKI: tanpa pengidentifikasi ini, iOS tidak melaporkan kartu tersebut ke SDK. Pembacaan My Number Card belum diaktifkan di produksi, dan pengidentifikasi ini tidak berpengaruh pada dokumen lain, sehingga Anda dapat menambahkannya sekarang.
  1. Tambahkan file entitlements dengan pembacaan NFC tag diaktifkan:
Pastikan profil provisioning aplikasi menyertakan kapabilitas NFC Tag Reading. Konfigurasi NFC ini tidak diperlukan jika NFC dinonaktifkan.

Android

Izin berikut dideklarasikan di AndroidManifest.xml SDK dan digabungkan secara otomatis: Fitur perangkat keras kamera dan NFC dideklarasikan sebagai opsional (android:required="false"), sehingga aplikasi Anda dapat diinstal di perangkat yang tidak memiliki fitur tersebut.

Mulai Cepat


Metode Integrasi

SDK mendukung dua metode integrasi:

Metode 1: Token Sesi (Direkomendasikan untuk Produksi)

Buat sesi di backend Anda menggunakan Create Verification Session API, lalu teruskan token ke SDK:
Pendekatan ini memberi Anda kendali penuh atas:
  • Mengaitkan sesi dengan pengguna Anda (vendor_data)
  • Mengatur metadata kustom
  • Mengonfigurasi callback per sesi

Metode 2: ID Alur Kerja (Integrasi Lebih Sederhana)

Untuk integrasi yang lebih sederhana, SDK dapat membuat sesi secara langsung menggunakan ID alur kerja Anda:

Konfigurasi

Sesuaikan perilaku SDK dengan meneruskan objek DiditConfig:
Untuk startVerificationWithWorkflow, teruskan konfigurasi di dalam options.config:

Opsi Konfigurasi

Opsi kamera

Opsi kamera sama dengan opsi kamera Web SDK. Setiap lensa adalah CameraLens.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 mengunci pengguna pada lensa default langkah tersebut.
Tema & Warna: Warna, latar belakang, dan pengaturan layar pembuka dikonfigurasi melalui pengaturan White Label Anda di Didit Console, bukan di konfigurasi SDK. Hal ini memastikan pencitraan merek 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.
Lihat Semua Bahasa yang Didukung →

Opsi Lanjutan

Opsi ini hanya tersedia dengan startVerificationWithWorkflow, saat SDK membuat sesi atas nama Anda.

Detail Kontak (Pengisian Otomatis & Notifikasi)

Berikan detail kontak untuk mengisi otomatis formulir verifikasi dan mengaktifkan notifikasi email:

Detail yang Diharapkan (Validasi Silang)

Berikan detail pengguna yang diharapkan untuk validasi silang otomatis dengan data dokumen yang diekstrak:
Semua kolom ExpectedDetails bersifat opsional. Lihat src/types.ts untuk tipe lengkapnya.

Metadata Kustom

Simpan metadata JSON kustom bersama sesi (tidak ditampilkan kepada pengguna):

Penanganan Hasil

Baik startVerification maupun startVerificationWithWorkflow mengembalikan Promise<VerificationResult>. Hasilnya berupa union terdiskriminasi, sehingga Anda menggunakan kolom type untuk menentukan hasilnya.

Kasus Hasil

Properti SessionData

Tipe Error

Koneksi terputus

Jika perangkat kehilangan koneksi selama verifikasi, SDK menutupi alur dengan layar “No internet connection”, alih-alih membiarkan langkah tetap dalam keadaan memuat. SDK terus memeriksa di latar belakang dan menutup layar itu dengan sendirinya begitu Didit dapat dijangkau kembali, dan pengguna melanjutkan dari langkah tempat ia berada. Layar ini menampilkan Try Again dan, jika showCloseButton bernilai true (bawaan), Exit Verification. Jika pengguna keluar, verifikasi berakhir dengan hasil failed dengan error networkError, sehingga aplikasi Anda tahu bahwa pengguna keluar karena masalah koneksi.

Contoh Lengkap Penanganan Hasil


Contoh End-to-End (Sesi Backend → React Native SDK → Webhook)

Ini adalah integrasi siap produksi: backend Anda membuat sesi, aplikasi RN Anda menerima session_token, lalu SDK menjalankan alurnya. Keputusan akhir dikirim ke backend Anda melalui webhook, jadi jangan pernah hanya mengandalkan hasil di sisi klien.

1. Backend: membuat sesi

2. React Native: menukar token dan memulai SDK

3. Backend: menerima keputusan akhir melalui webhook

Lihat Panduan webhook untuk detail verifikasi tanda tangan HMAC.

Contoh Lengkap


Terakhir diubah pada 7 November 2026