> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# SDK KYC Mobile untuk iOS, Android, RN, Flutter

> SDK KYC native Didit untuk iOS, Android, React Native, Flutter dengan Verifikasi NFC e-paspor. Mulai $0.33 per KYC lengkap, gratis $10/bulan.

> [!NOTE]
>
> Versi-versi ini mengacu pada SDK verifikasi identitas. Modul dan wrapper Autentikasi native memiliki rilis terpisah: lihat [Panduan Cepat Autentikasi](https://docs.didit.me/id/authentication/overview.md).

Integrasikan verifikasi Didit secara native ke dalam aplikasi seluler Anda dengan SDK resmi kami. SDK native memberikan **pengalaman pengguna yang mulus**, **performa yang lebih baik**, dan **akses penuh ke kemampuan perangkat** dibandingkan integrasi berbasis WebView.

> [!NOTE]
>
> ### **Pendekatan yang Direkomendasikan**: Untuk pengalaman pengguna terbaik, gunakan SDK native kami alih-alih integrasi WebView. SDK native menangani seluruh kompleksitas izin kamera, pembacaan NFC, dan Deteksi Liveness tanpa konfigurasi tambahan.

***

## Ketersediaan SDK

| Platform | Distribusi | Terbaru | NFC | Versi Minimum | Dokumentasi |
| - | - | - | :-: | - | - |
| iOS | Swift Package Manager, CocoaPods | 4.13.2 | ✅ (iOS 15+) | iOS 13.0+ (inti), iOS 15.0+ (NFC) | [Panduan SDK iOS](https://docs.didit.me/id/integration/native-sdks/ios-sdk.md) |
| Android | Maven (repo kustom, `me.didit:didit-sdk`) | 4.13.2 | ✅ | API 23+ (Android 6.0) | [Panduan SDK Android](https://docs.didit.me/id/integration/native-sdks/android-sdk.md) |
| React Native | npm / yarn (`@didit-protocol/sdk-react-native`) | 4.13.2 | ✅ | RN 0.76+ (New Architecture), iOS 13.0+ / Android API 24+ | [Panduan SDK React Native](https://docs.didit.me/id/integration/native-sdks/react-native-sdk.md) |
| Flutter | pub.dev (`didit_sdk`) | 4.13.2 | ✅ | Flutter 3.3+, Dart 3.11+, iOS 13.0+ / Android API 23+ | [Panduan SDK Flutter](https://docs.didit.me/id/integration/native-sdks/flutter-sdk.md) |
| Web (JS) | npm (`@didit-protocol/sdk-web`) | 0.4.0 | — | Browser modern apa pun | [Panduan SDK Web](https://docs.didit.me/id/integration/web-sdks/javascript-sdk.md) |

> [!NOTE]
>
> **Persetujuan biometrik memerlukan SDK native 4.10.0 atau yang lebih baru.** Untuk orang yang tunduk pada undang-undang Illinois, Texas, atau Colorado, Didit dapat meminta [persetujuan biometrik](https://docs.didit.me/id/getting-started/biometric-consent.md) yang eksplisit sebelum pengambilan wajah pertama. Alur yang di-hosting (Web SDK, WebView, browser) serta SDK native iOS dan Android 4.10.0 atau yang lebih baru menampilkan langkah tersebut. React Native dan Flutter menampilkannya pada rilis yang menggunakan native 4.10.0 atau yang lebih baru. SDK native di bawah 4.10.0, atau yang tidak melaporkan versinya, tidak dapat melakukannya: sesinya berjalan seperti biasa, dan laporan keputusan menunjukkan `biometric_consent.status: "pending"` dengan `reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`. Tingkatkan versi jika Anda memverifikasi orang di negara bagian tersebut.

### Yang baru di 4.13.2

Di iOS, permintaan foto dari kamera yang terbuka tetapi tidak mengirimkan frame tidak lagi membuat aplikasi Anda crash: setiap permintaan foto terlebih dahulu memeriksa sesi kamera yang sedang berjalan dengan koneksi video aktif, dan layar menampilkan error kamera atau opsi lewati sebagai gantinya.
Di Android, pada selfie di pencarian ID, permintaan foto dari kamera yang tidak mengirimkan frame berakhir dengan error kamera di layar setelah 5 detik, alih-alih menunggu tanpa batas.
Di layar selamat datang, selagi daftar langkah masih berlanjut di bawah efek pudar bagian bawahnya, tombol Gulir ke bawah berbentuk bulat berada di tengah daftar secara horizontal (juga pada bahasa yang ditulis dari kanan ke kiri), seperti pada alur web; ketukan akan menggulir daftar ke bawah, dan tombol menghilang di akhir daftar serta saat lembar sedang terbuka.
Android 4.13.1 adalah rilis sementara yang hanya memiliki tombol Gulir ke bawah; 4.13.2 membawanya ke iOS, React Native, dan Flutter.
React Native 4.13.2 juga memperbaiki crash saat peluncuran di build rilis Android yang diperkecil dengan R8 dan `proguard-android-optimize.txt`: paket kini menyertakan aturan R8 sendiri.
Flutter 4.13.2 juga dibangun dengan Android Gradle Plugin 9 dan Kotlin bawaannya.

### Yang baru di 4.13.0

Di langkah telepon, setiap nomor +1 (AS dan Kanada) menampilkan pengungkapan singkat dari operator di bawah Kirim kode ("Tarif pesan dan data standar mungkin berlaku") dengan tautan ke Ketentuan SMS dan Kebijakan Privasi, dalam bahasa orang tersebut.
Lingkaran selfie kini pas di atas kontrolnya pada layar pendek, dan pil Selesai berwarna hijau, tombol Mengerti setelah foto dokumen, serta layar Selfie diambil dihapus: foto yang diambil langsung menuju Pemrosesan.
Ketika pengambilan dokumen hanya menjadi cadangan dan dompet ID digital berada di depan, layar peluncuran dompet hanya menawarkan dompet itu saja, dan percobaan ulang dompet menjaga verifikasi tetap terbuka tanpa tautan dokumen.
Bendera digambar untuk setiap kode negara yang dapat dikirim Didit, dan tidak pernah yang salah.
Skenario sandbox yang diaktifkan pada sesi yang sudah dimulai kini menampilkan alasannya, bukan error generik.
Di Android, dompet Credential Manager bertuliskan "Verifikasi dengan ID digital", karena Google Wallet atau dompet Android lain yang memegang ID yang kompatibel dapat menjawabnya. iOS tidak menawarkan metode ini.

### Yang baru di 4.12.2

Layar selamat datang memusatkan logo di atas judul rata kiri, dan iOS menampilkan logo pelanggan setinggi 72 pt, seperti Android dan web.
Pada langkah orang kunci KYB, Tambah perwakilan terbuka dengan peran perwakilan terpilih, dan menyimpan orang tersebut di bawah perwakilan meskipun alur kerja menonaktifkan sebagian peran.
Pada kuesioner, "Diamankan oleh" tetap menempel di bawah tombol pada layar pendek dan pada ukuran teks besar, pemilih negara pada pertanyaan alamat diberi judul untuk alamat, dan dropdown yang terbuka mengikuti sudut kolom.

### Yang baru di 4.12.1

Pada iPhone yang penyimpanannya penuh, pengambilan dokumen dan selfie kini tetap menyimpan videonya: SDK iOS merekamnya di memori, dan tidak pernah mengunggah rekaman tanpa frame video.
Jawaban server yang tertinggal dari jawaban awal tidak lagi membuka kembali langkah yang baru saja dijawab (langkah NFC, selfie, atau dokumen), di iOS dan Android.

### Yang baru di 4.12.0

Logo dompet untuk setiap dompet ID digital yang ditampilkan alur web (Mobile-ID, ConnectID, Finnish Trust Network, OneID, Bank iD, MojeID, FranceConnect, Auðkenni, ID kartu Estonia, dan GOV.UK Wallet), pada pelat putih atau hitam yang sama dengan web.
Petunjuk pengambilan menjelaskan apa yang harus dilakukan saat pengambilan otomatis tidak berjalan, layar selamat datang mempertahankan kalimat hukumnya tetap tersemat pada ukuran teks besar, dan permintaan mulai sesi yang ditolak tidak lagi menawarkan percobaan ulang yang tidak dapat berhasil.
Kamera dokumen dan selfie memiliki tombol Ganti kamera di samping rana, dengan Unggah dipindahkan ke Petunjuk, dan tidak ada yang diambil otomatis saat lembar terbuka di atas kamera.
Di Android, lembar Pilih kamera memberi nama kamera "Kamera depan" dan "Kamera belakang" dalam setiap bahasa.

### Yang baru di 4.11.0

Versi 4.11.0 juga memuat semua yang direncanakan untuk 4.10.0, yang tidak pernah dirilis, jadi langsung tingkatkan dari 4.9.1.
Alur memiliki kerangka baru dengan bilah atas yang baru, progres dalam bentuk kata, dan layar selamat datang yang dibangun ulang.
Pengambilan dokumen dan selfie otomatis kini tersedia di setiap varian, dengan detektor ringan milik Didit sendiri, sehingga varian `Core` dan `AutoDetection` mengambil gambar dengan cara yang sama.
Varian `AutoDetection` dan artefak Android `didit-sdk-autodetection` sudah tidak digunakan lagi dan identik dengan `Core`, sedangkan artefak Android `didit-sdk-autodetection-play` tidak lagi dipublikasikan.
Langkah baru: Verifikasi bank, Lokasi (opsional melalui varian iOS `Core-Location`, `NFC-Location`, dan `All-Location`), tanda tangan elektronik, dan persetujuan biometrik.

### Yang baru di 4.9.1

Pemilih negara untuk dokumen dan bukti alamat kini terbuka dengan negara yang terdeteksi dari alamat IP pengguna di iOS dan Android, meskipun pencarian tersebut selesai setelah layar muncul.
Negara yang sudah diatur dalam sesi atau yang dipilih pengguna tidak pernah ditimpa.
Di Android, judul bagian dan kolom kuesioner ditampilkan dalam bahasa SDK, dan pemindaian paspor NFC tidak lagi mengalami crash pada varian penuh.
Teks verifikasi dalam bahasa Rusia dan Kyrgyz ditingkatkan di kedua platform.

### Yang baru di 4.9.0

Semua SDK mobile native dan lintas platform kini menawarkan pemilih bahasa opsional di layar selamat datang verifikasi.
Atur `showLanguageSelector` ke `true` untuk menampilkan pemilih ringkas dan dapat dicari yang sama dengan yang digunakan di alur verifikasi web.
Pemilih ini disembunyikan secara default, sehingga integrasi yang ada tetap mempertahankan perilaku saat ini sampai Anda mengaktifkannya.

> [!NOTE]
>
> ### **Alternatif**: Jika SDK native belum tersedia untuk platform Anda, Anda dapat menggunakan [Integrasi WebView](https://docs.didit.me/id/integration/web-sdks/webview-in-ios-android.md) sebagai alternatif.

***

## Alur sesi verifikasi

Setiap SDK native menggunakan sesi verifikasi Didit yang sama. Alurnya sebagai berikut:

1. **Backend Anda** memanggil [`POST /v3/session/`](https://docs.didit.me/id/sessions-api/create-session) dengan `workflow_id` beserta konteks opsional apa pun (`vendor_data`, `contact_details`, `expected_details`, `metadata`, `callback`).
2. Didit mengembalikan `session_id`, `session_token` berumur pendek, dan `url` yang di-hosting.
3. **Aplikasi seluler Anda** menerima `session_token` dari backend Anda dan meneruskannya ke SDK (`startVerification(token: …)`).
4. SDK native membuka antarmuka verifikasi, pengguna menyelesaikan langkah-langkahnya, lalu SDK mengembalikan hasil beserta `status` akhir sesi (`Approved`, `Declined`, `In Review`, dan lainnya).
5. **Backend Anda** menerima keputusan lengkap melalui [webhook](https://docs.didit.me/id/integration/webhooks.md) (`webhook_type: "status.updated"`) dan menyimpannya.

> [!NOTE]
>
> Hasil SDK memberi tahu Anda hasil alur kerja (status). Keputusan lengkap, yaitu kolom dokumen, skor pencocokan wajah, temuan AML, data NFC, dan peringatan, dikirim ke server Anda melalui webhook dan juga dapat diambil dari endpoint [Ambil Keputusan Sesi](https://docs.didit.me/id/sessions-api/retrieve-session.md). Jangan pernah hanya mengandalkan hasil di sisi klien untuk keputusan otorisasi.

Semua SDK native juga mendukung mode **UniLink** (hanya ID alur kerja, tanpa backend). Gunakan UniLink untuk prototipe cepat dan metode token sesi untuk produksi.

***

## SDK iOS

**Kapan digunakan**: aplikasi native Swift / SwiftUI / UIKit yang menargetkan iOS 13+.

SDK iOS ringan berbasis server untuk verifikasi identitas dengan konfigurasi minimal.

> [card] [Repositori GitHub](https://github.com/didit-protocol/sdk-ios)
>
> Lihat kode sumber dan contoh di GitHub

**Fitur Utama:**

* Dukungan SwiftUI dan UIKit
* Pembacaan paspor/ID NFC (iOS 15+; varian `Core` dan `AutoDetection` tanpa NFC menghapus NFC dan OpenSSL, dan dapat di-deploy ke iOS 13+)
* Mendukung 54 bahasa
* Tema UI yang dapat disesuaikan
* Integrasi dengan token sesi atau ID alur kerja

**Mulai Cepat:**

```swift theme={null}
import DiditSDK

// Start verification
DiditSdk.shared.startVerification(token: "your-session-token")

// Handle result
.diditVerification { result in
    switch result {
    case .completed(let session):
        print("Status: \(session.status)")
    case .cancelled:
        print("Cancelled")
    case .failed(let error, _):
        print("Error: \(error)")
    }
}
```

→ [**Dokumentasi Lengkap SDK iOS**](https://docs.didit.me/id/integration/native-sdks/ios-sdk.md)

***

## SDK Android

**Kapan digunakan**: aplikasi native Kotlin / Jetpack Compose / Java yang menargetkan Android 6.0 (API 23) atau yang lebih tinggi.

SDK Android ringan berbasis server untuk verifikasi identitas dengan konfigurasi minimal.

> [card] [Repositori GitHub](https://github.com/didit-protocol/sdk-android)
>
> Lihat kode sumber dan contoh di GitHub

**Fitur Utama:**

* Dukungan Kotlin dan Jetpack Compose
* Pembacaan paspor/ID NFC (artefak `me.didit:didit-sdk-core` yang bersifat opt-in menghapus dependensi NFC)
* Deteksi otomatis dokumen dan wajah berbasis ML pada API 24+ (fallback ke pengambilan manual yang lancar pada API 23)
* Mendukung 54 bahasa
* Tema UI yang dapat disesuaikan
* Integrasi dengan token sesi atau ID alur kerja

**Mulai Cepat:**

```kotlin theme={null}
import me.didit.sdk.DiditSdk
import me.didit.sdk.VerificationResult

// Initialize in Application.onCreate()
DiditSdk.initialize(this)

// Start verification
DiditSdk.startVerification(token = "your-session-token") { result ->
    when (result) {
        is VerificationResult.Completed -> Log.d("Didit", "Status: ${result.session.status}")
        is VerificationResult.Cancelled -> Log.d("Didit", "Cancelled")
        is VerificationResult.Failed -> Log.e("Didit", "Error: ${result.error.message}")
    }
}
```

→ [**Dokumentasi Lengkap SDK Android**](https://docs.didit.me/id/integration/native-sdks/android-sdk.md)

***

## SDK React Native

**Kapan digunakan**: aplikasi React Native atau Expo lintas platform yang membutuhkan satu API TypeScript untuk iOS dan Android (RN 0.76+, New Architecture).

SDK React Native lintas platform yang membungkus SDK native iOS dan Android dengan API TypeScript yang terpadu.

> [card] [Repositori GitHub](https://github.com/didit-protocol/sdk-react-native)
>
> Lihat kode sumber dan contoh di GitHub

**Fitur Utama:**

* Satu API TypeScript untuk iOS dan Android
* Dukungan Expo dengan config plugin tanpa konfigurasi tambahan (wajib development build, tidak mendukung Expo Go)
* Dukungan React Native CLI
* Pembacaan paspor/ID NFC (dapat dinonaktifkan dengan `DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`)
* Mendukung 54 bahasa (diwarisi dari SDK native)
* Integrasi dengan token sesi atau ID alur kerja

**Mulai Cepat:**

```tsx theme={null}
import { startVerification, VerificationStatus } from '@didit-protocol/sdk-react-native';

const result = await startVerification('your-session-token');

switch (result.type) {
  case 'completed':
    console.log('Status:', result.session.status);
    break;
  case 'cancelled':
    console.log('Cancelled');
    break;
  case 'failed':
    console.log('Error:', result.error.message);
    break;
}
```

→ [**Dokumentasi Lengkap SDK React Native**](https://docs.didit.me/id/integration/native-sdks/react-native-sdk.md)

***

## SDK Flutter

**Kapan digunakan**: aplikasi Flutter lintas platform yang membutuhkan satu API Dart untuk iOS dan Android (Flutter 3.3+, Dart 3.11+).

SDK Flutter lintas platform yang membungkus SDK native iOS dan Android dengan API Dart yang terpadu.

> [card] [Paket pub.dev](https://pub.dev/packages/didit_sdk)
>
> Lihat paket di pub.dev

**Fitur Utama:**

* Satu API Dart untuk iOS dan Android
* Integrasi platform channel dengan SDK native
* Pembacaan paspor/ID NFC (dapat dinonaktifkan dengan `DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`)
* Mendukung 54 bahasa (diwarisi dari SDK native)
* Integrasi dengan token sesi atau ID alur kerja

**Mulai Cepat:**

```dart theme={null}
import 'package:didit_sdk/sdk_flutter.dart';

final result = await DiditSdk.startVerification('your-session-token');

switch (result) {
  case VerificationCompleted(:final session):
    print('Status: ${session.status}');
  case VerificationCancelled():
    print('Cancelled');
  case VerificationFailed(:final error):
    print('Error: ${error.message}');
}
```

→ [**Dokumentasi Lengkap SDK Flutter**](https://docs.didit.me/id/integration/native-sdks/flutter-sdk.md)

***

## SDK Web (JavaScript)

**Kapan digunakan**: aplikasi berbasis browser dan framework web (React, Vue, Angular, Next.js, Nuxt, Svelte, JavaScript murni). SDK Web membuka alur verifikasi yang di-hosting dalam modal atau iframe inline. Untuk aplikasi seluler, gunakan SDK native di atas.

SDK JavaScript untuk aplikasi web dengan dukungan React, Vue, Angular, Next.js, Nuxt, Svelte, dan JavaScript murni.

> [card] [Paket NPM](https://www.npmjs.com/package/@didit-protocol/sdk-web)
>
> Lihat paket di npm

**Fitur Utama:**

* Manajemen sesi dan callback untuk event secara terprogram
* Dukungan React, Vue, Angular, Next.js, Nuxt, Svelte, dan JavaScript murni
* Dukungan TypeScript penuh
* Mode modal dan inline (tertanam)
* Manajemen state untuk UI kustom

**Mulai Cepat:**

```typescript theme={null}
import { DiditSdk } from '@didit-protocol/sdk-web';

DiditSdk.shared.onComplete = (result) => {
  switch (result.type) {
    case 'completed':
      console.log('Status:', result.session?.status);
      break;
    case 'cancelled':
      console.log('Cancelled');
      break;
    case 'failed':
      console.error('Error:', result.error?.message);
      break;
  }
};

DiditSdk.shared.startVerification({
  url: 'https://verify.didit.me/session/session-token'
});
```

→ [**Dokumentasi Lengkap SDK JavaScript**](https://docs.didit.me/id/integration/web-sdks/javascript-sdk.md) | [**Semua SDK Web**](https://docs.didit.me/id/integration/web-sdks/overview.md)

***

## Memilih integrasi

SDK native paling cocok jika Anda membutuhkan pembacaan e-paspor NFC, pengambilan gambar dengan kamera berlatensi terendah, dan pengalaman dalam aplikasi yang tidak dapat dibedakan dari layar native Anda yang lain. Gunakan **WebView Integration** sebagai alternatif jika Anda tidak dapat merilis pembaruan SDK native (misalnya, aplikasi brownfield yang tidak dapat dibangun ulang, atau platform tanpa SDK native Didit).

| Fitur | SDK Native | WebView |
| - | :-: | :-: |
| Pengalaman pengguna | Layar native, dukungan gestur penuh | Alur web yang di-hosting di browser sistem/WebView |
| Pengambilan gambar kamera | Di perangkat, dioptimalkan oleh SDK untuk dokumen identitas dan swafoto | Bergantung pada browser |
| Pembacaan e-paspor NFC | ✅ Didukung (iOS 15+, Android yang mendukung NFC) | ❌ Tidak tersedia |
| Performa liveness | Pipeline ML native | Pipeline ML browser |
| Tema White Label | ✅ Dikelola melalui konsol | ✅ Dikelola melalui konsol |
| Dampak peninjauan App Store / Play Store | Menambahkan hak NFC serta menambah ukuran biner | Tidak ada, hanya membuka URL |
| Kapan digunakan | Aplikasi produksi, alur kerja NFC, UX terbaik | Integrasi cepat, stack khusus web, alternatif |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.