> ## 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.

# モバイルKYC向けネイティブSDK：iOS・Android・RN・Flutter

> DiditのネイティブKYC SDKはiOS、Android、React Native、Flutterに対応し、NFC ICパスポート、ライブネス、端末内撮影を提供。KYC1件$0.33から、毎月$10分無料。

> [!NOTE]
>
> ここに記載のバージョンは、本人確認SDKのものです。ネイティブの認証モジュールとラッパーは別のリリースです。[認証のクイックスタート](https://docs.didit.me/authentication/overview.md)を参照してください。

Diditの公式SDKを使って、Diditの検証をモバイルアプリにネイティブで組み込めます。ネイティブSDKは、WebViewベースの連携と比べて、**シームレスなユーザー体験**、**優れたパフォーマンス**、**端末機能への完全なアクセス**を提供します。

> [!NOTE]
>
> ### **推奨される方法**: 最高のユーザー体験を実現するには、WebView連携ではなくネイティブSDKを使用してください。ネイティブSDKは、カメラ権限、NFC読み取り、ライブネス検知の複雑な処理をすべて標準で処理します。

***

## SDKの提供状況

| プラットフォーム | 配布方法 | 最新 | NFC | 最小バージョン | ドキュメント |
| - | - | - | :-: | - | - |
| iOS | Swift Package Manager, CocoaPods | 4.9.1 | ✅ (iOS 15+) | iOS 13.0+ (core), iOS 15.0+ (NFC) | [iOS SDKガイド](https://docs.didit.me/integration/native-sdks/ios-sdk.md) |
| Android | Maven (custom repo, `me.didit:didit-sdk`) | 4.9.1 | ✅ | API 23+ (Android 6.0) | [Android SDKガイド](https://docs.didit.me/integration/native-sdks/android-sdk.md) |
| React Native | npm / yarn (`@didit-protocol/sdk-react-native`) | 4.9.1 | ✅ | RN 0.76+ (New Architecture), iOS 13.0+ / Android API 24+ | [React Native SDKガイド](https://docs.didit.me/integration/native-sdks/react-native-sdk.md) |
| Flutter | pub.dev (`didit_sdk`) | 4.9.1 | ✅ | Flutter 3.3+, Dart 3.11+, iOS 13.0+ / Android API 23+ | [Flutter SDKガイド](https://docs.didit.me/integration/native-sdks/flutter-sdk.md) |
| Web (JS) | npm (`@didit-protocol/sdk-web`) | 0.4.0 | — | 最新のモダンブラウザ | [Web SDKガイド](https://docs.didit.me/integration/web-sdks/javascript-sdk.md) |

> [!NOTE]
>
> **生体認証の同意には、ネイティブ4.10.0以降が必要です。** イリノイ州、テキサス州、コロラド州の法律の対象となる人に対して、Diditは最初の顔撮影の前に明示的な[生体認証の同意](https://docs.didit.me/ja/getting-started/biometric-consent.md)を求めることができます。ホスト型フロー（Web SDK、WebView、ブラウザ）と、ネイティブのiOSおよびAndroid SDK 4.10.0以降ではこのステップが表示されます。React NativeとFlutterでは、ネイティブ4.10.0以降に固定したリリースで表示されます。4.10.0未満のネイティブSDK、またはバージョンを報告しないSDKでは表示できません。そのセッションは従来どおりに実行され、判定結果は`biometric_consent.status: "pending"`と`reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`を報告します。これらの州の利用者を検証する場合は、アップグレードしてください。

### 4.9.1の新機能

iOSとAndroidで、書類と住所証明の国ピッカーが、画面表示後にIPアドレスの検索が完了した場合でも、ユーザーのIPアドレスから検出した国で開くようになりました。
セッションで設定された国や、ユーザーが選択した国が上書きされることはありません。
Androidでは、アンケートのセクションヘッダーとフィールドがSDKの言語で表示され、フルバリアントでのNFCパスポートスキャンがクラッシュしなくなりました。
ロシア語とキルギス語の検証用テキストが、両プラットフォームで改善されました。

### 4.9.0の新機能

すべてのネイティブSDKとクロスプラットフォームのモバイルSDKに、検証のウェルカム画面でオプトイン方式の言語セレクターが追加されました。
`showLanguageSelector`を`true`に設定すると、Web検証フローと同じ、コンパクトで検索可能なセレクターが表示されます。
セレクターは既定で非表示のため、既存の連携は、有効にするまで現在の動作のままです。

> [!NOTE]
>
> ### **代替手段**: お使いのプラットフォームにまだネイティブSDKがない場合は、フォールバックとして[WebView連携](https://docs.didit.me/integration/web-sdks/webview-in-ios-android.md)を使用できます。

***

## 検証セッションの流れ

すべてのネイティブSDKは、同じDiditの検証セッションを使用します。流れは次のとおりです。

1. **御社のバックエンド**が、`workflow_id`と任意のコンテキスト（`vendor_data`、`contact_details`、`expected_details`、`metadata`、`callback`）を指定して[`POST /v3/session/`](https://docs.didit.me/sessions-api/create-session)を呼び出します。
2. Diditが、`session_id`、有効期間の短い`session_token`、ホスト型の`url`を返します。
3. **御社のモバイルアプリ**が、バックエンドから`session_token`を受け取り、SDKに渡します（`startVerification(token: …)`）。
4. ネイティブSDKが検証UIを開き、ユーザーがステップを完了すると、SDKがセッションの最終`status`（`Approved`、`Declined`、`In Review`など）を含む結果を返します。
5. **御社のバックエンド**が、[Webhook](https://docs.didit.me/integration/webhooks.md)（`webhook_type: "status.updated"`）で完全な判定結果を受け取り、保存します。

> [!NOTE]
>
> SDKの結果から分かるのは、ワークフローの結果（ステータス）です。書類のフィールド、顔照合のスコア、AMLのヒット、NFCデータ、警告を含む完全な判定結果は、Webhookで御社のサーバーに配信され、[セッション判定結果の取得](https://docs.didit.me/sessions-api/retrieve-session.md)エンドポイントからも取得できます。認可の判断を、クライアント側の結果だけに頼って行わないでください。

すべてのネイティブSDKは**UniLink**モード（ワークフローIDのみ、バックエンド不要）にも対応しています。UniLinkは素早いプロトタイプに、セッショントークン方式は本番環境に使用してください。

***

## iOS SDK

**使いどころ**: iOS 13+を対象とする、ネイティブのSwift / SwiftUI / UIKitアプリ。

最小限の設定で使える、軽量でサーバー駆動のiOS用本人確認SDKです。

> **[GitHubリポジトリ](https://github.com/didit-protocol/sdk-ios)**
>
> GitHubでソースコードとサンプルを見る

**主な機能:**

* SwiftUIとUIKitに対応
* NFCによるパスポート/ID読み取り（iOS 15+。NFCなしの`Core`と`AutoDetection`バリアントはNFCとOpenSSLを除外し、iOS 13+にデプロイ可能）
* 53言語に対応
* UIテーマのカスタマイズが可能
* セッショントークンまたはワークフローIDで連携

**クイックスタート:**

```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)")
    }
}
```

→ [**iOS SDKの完全なドキュメント**](https://docs.didit.me/integration/native-sdks/ios-sdk.md)

***

## Android SDK

**使いどころ**: Android 6.0（API 23）以降を対象とする、ネイティブのKotlin / Jetpack Compose / Javaアプリ。

最小限の設定で使える、軽量でサーバー駆動のAndroid用本人確認SDKです。

> **[GitHubリポジトリ](https://github.com/didit-protocol/sdk-android)**
>
> GitHubでソースコードとサンプルを見る

**主な機能:**

* KotlinとJetpack Composeに対応
* NFCによるパスポート/ID読み取り（オプトインの`me.didit:didit-sdk-core`アーティファクトはNFCの依存関係を除外）
* API 24+でMLベースの書類・顔の自動検出（API 23では手動撮影に自然にフォールバック）
* 53言語に対応
* UIテーマのカスタマイズが可能
* セッショントークンまたはワークフローIDで連携

**クイックスタート:**

```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}")
    }
}
```

→ [**Android SDKの完全なドキュメント**](https://docs.didit.me/integration/native-sdks/android-sdk.md)

***

## React Native SDK

**使いどころ**: iOSとAndroidで単一のTypeScript APIを使いたい、クロスプラットフォームのReact NativeまたはExpoアプリ（RN 0.76+、New Architecture）。

ネイティブのiOS SDKとAndroid SDKをラップし、統一されたTypeScript APIを提供する、クロスプラットフォームのReact Native SDKです。

> **[GitHubリポジトリ](https://github.com/didit-protocol/sdk-react-native)**
>
> GitHubでソースコードとサンプルを見る

**主な機能:**

* iOSとAndroidで単一のTypeScript API
* ゼロ設定のconfig pluginでExpoに対応（開発ビルドが必要。Expo Goは不可）
* React Native CLIに対応
* NFCによるパスポート/ID読み取り（`DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`でオフに切り替え）
* 53言語に対応（ネイティブSDKから継承）
* セッショントークンまたはワークフローIDで連携

**クイックスタート:**

```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;
}
```

→ [**React Native SDKの完全なドキュメント**](https://docs.didit.me/integration/native-sdks/react-native-sdk.md)

***

## Flutter SDK

**使いどころ**: iOSとAndroidで単一のDart APIを使いたい、クロスプラットフォームのFlutterアプリ（Flutter 3.3+、Dart 3.11+）。

ネイティブのiOS SDKとAndroid SDKをラップし、統一されたDart APIを提供する、クロスプラットフォームのFlutter SDKです。

> **[pub.devパッケージ](https://pub.dev/packages/didit_sdk)**
>
> pub.devでパッケージを見る

**主な機能:**

* iOSとAndroidで単一のDart API
* ネイティブSDKとのプラットフォームチャネル連携
* NFCによるパスポート/ID読み取り（`DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`でオフに切り替え）
* 53言語に対応（ネイティブSDKから継承）
* セッショントークンまたはワークフローIDで連携

**クイックスタート:**

```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}');
}
```

→ [**Flutter SDKの完全なドキュメント**](https://docs.didit.me/integration/native-sdks/flutter-sdk.md)

***

## Web SDK (JavaScript)

**使いどころ**: ブラウザベースのアプリとWebフレームワーク（React、Vue、Angular、Next.js、Nuxt、Svelte、素のJS）。Web SDKは、モーダルまたはインラインのiframeでホスト型の検証フローを開きます。モバイルアプリには、上記のネイティブSDKをおすすめします。

React、Vue、Angular、Next.js、Nuxt、Svelte、素のJSに対応した、Webアプリケーション向けのJavaScript SDKです。

> **[NPMパッケージ](https://www.npmjs.com/package/@didit-protocol/sdk-web)**
>
> npmでパッケージを見る

**主な機能:**

* プログラムによるセッション管理とイベントコールバック
* React、Vue、Angular、Next.js、Nuxt、Svelte、素のJSに対応
* TypeScriptに完全対応
* モーダルとインライン（埋め込み）のモード
* カスタムUI向けの状態管理

**クイックスタート:**

```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'
});
```

→ [**JavaScript SDKの完全なドキュメント**](https://docs.didit.me/integration/web-sdks/javascript-sdk.md) | [**すべてのWeb SDK**](https://docs.didit.me/ja/integration/web-sdks/overview.md)

***

## 連携方法の選び方

NFC ICパスポートの読み取り、最低レイテンシのカメラ撮影、他のネイティブ画面と見分けがつかないアプリ内体験が必要な場合は、ネイティブSDKが最適です。ネイティブSDKのアップデートを提供できない場合（例えば、再ビルドできない既存アプリや、DiditのネイティブSDKがないプラットフォーム）には、フォールバックとして**WebView連携**を使用してください。

| 機能 | ネイティブSDK | WebView |
| - | :-: | :-: |
| ユーザー体験 | ネイティブ画面、ジェスチャーに完全対応 | システムブラウザ/WebView内のホスト型Webフロー |
| カメラ撮影 | 端末内で実行、IDとセルフィー向けにSDKで最適化 | ブラウザに依存 |
| NFC ICパスポートの読み取り | ✅ 対応（iOS 15+、NFC対応のAndroid） | ❌ 利用不可 |
| ライブネスの性能 | ネイティブのMLパイプライン | ブラウザのMLパイプライン |
| ホワイトラベルのテーマ設定 | ✅ コンソールで設定 | ✅ コンソールで設定 |
| App Store / Play Storeの審査への影響 | NFCのエンタイトルメントとバイナリサイズが増加 | なし（URLを開くだけ） |
| 使いどころ | 本番アプリ、NFCワークフロー、最高のUX | 素早い連携、Webのみの構成、フォールバック |


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