メインコンテンツへスキップ
ここに記載のバージョンは、本人確認SDKのものです。ネイティブの認証モジュールとラッパーは別のリリースです。認証のクイックスタートを参照してください。
Diditの公式SDKを使って、Diditの検証をモバイルアプリにネイティブで組み込めます。ネイティブSDKは、WebViewベースの連携と比べて、シームレスなユーザー体験、優れたパフォーマンス、端末機能への完全なアクセスを提供します。

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


SDKの提供状況

生体認証の同意には、ネイティブ4.10.0以降が必要です。 イリノイ州、テキサス州、コロラド州の法律の対象となる人に対して、Diditは最初の顔撮影の前に明示的な生体認証の同意を求めることができます。ホスト型フロー(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検証フローと同じ、コンパクトで検索可能なセレクターが表示されます。 セレクターは既定で非表示のため、既存の連携は、有効にするまで現在の動作のままです。

代替手段: お使いのプラットフォームにまだネイティブSDKがない場合は、フォールバックとしてWebView連携を使用できます。


検証セッションの流れ

すべてのネイティブSDKは、同じDiditの検証セッションを使用します。流れは次のとおりです。
  1. 御社のバックエンドが、workflow_idと任意のコンテキスト(vendor_data、contact_details、expected_details、metadata、callback)を指定してPOST /v3/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(webhook_type: "status.updated")で完全な判定結果を受け取り、保存します。
SDKの結果から分かるのは、ワークフローの結果(ステータス)です。書類のフィールド、顔照合のスコア、AMLのヒット、NFCデータ、警告を含む完全な判定結果は、Webhookで御社のサーバーに配信され、セッション判定結果の取得エンドポイントからも取得できます。認可の判断を、クライアント側の結果だけに頼って行わないでください。
すべてのネイティブSDKはUniLinkモード(ワークフローIDのみ、バックエンド不要)にも対応しています。UniLinkは素早いプロトタイプに、セッショントークン方式は本番環境に使用してください。

iOS SDK

使いどころ: iOS 13+を対象とする、ネイティブのSwift / SwiftUI / UIKitアプリ。 最小限の設定で使える、軽量でサーバー駆動のiOS用本人確認SDKです。

GitHubリポジトリ

GitHubでソースコードとサンプルを見る
主な機能:
  • SwiftUIとUIKitに対応
  • NFCによるパスポート/ID読み取り(iOS 15+。NFCなしのCoreとAutoDetectionバリアントはNFCとOpenSSLを除外し、iOS 13+にデプロイ可能)
  • 53言語に対応
  • UIテーマのカスタマイズが可能
  • セッショントークンまたはワークフローIDで連携
クイックスタート:
→ iOS SDKの完全なドキュメント

Android SDK

使いどころ: Android 6.0(API 23)以降を対象とする、ネイティブのKotlin / Jetpack Compose / Javaアプリ。 最小限の設定で使える、軽量でサーバー駆動のAndroid用本人確認SDKです。

GitHubリポジトリ

GitHubでソースコードとサンプルを見る
主な機能:
  • KotlinとJetpack Composeに対応
  • NFCによるパスポート/ID読み取り(オプトインのme.didit:didit-sdk-coreアーティファクトはNFCの依存関係を除外)
  • API 24+でMLベースの書類・顔の自動検出(API 23では手動撮影に自然にフォールバック)
  • 53言語に対応
  • UIテーマのカスタマイズが可能
  • セッショントークンまたはワークフローIDで連携
クイックスタート:
→ Android SDKの完全なドキュメント

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リポジトリ

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で連携
クイックスタート:
→ React Native SDKの完全なドキュメント

Flutter SDK

使いどころ: iOSとAndroidで単一のDart APIを使いたい、クロスプラットフォームのFlutterアプリ(Flutter 3.3+、Dart 3.11+)。 ネイティブのiOS SDKとAndroid SDKをラップし、統一されたDart APIを提供する、クロスプラットフォームのFlutter SDKです。

pub.devパッケージ

pub.devでパッケージを見る
主な機能:
  • iOSとAndroidで単一のDart API
  • ネイティブSDKとのプラットフォームチャネル連携
  • NFCによるパスポート/ID読み取り(DIDIT_SDK_IOS_NFC_ENABLED=false / diditSdkAndroidNfcEnabled=falseでオフに切り替え)
  • 53言語に対応(ネイティブSDKから継承)
  • セッショントークンまたはワークフローIDで連携
クイックスタート:
→ Flutter SDKの完全なドキュメント

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パッケージ

npmでパッケージを見る
主な機能:
  • プログラムによるセッション管理とイベントコールバック
  • React、Vue、Angular、Next.js、Nuxt、Svelte、素のJSに対応
  • TypeScriptに完全対応
  • モーダルとインライン(埋め込み)のモード
  • カスタムUI向けの状態管理
クイックスタート:
→ JavaScript SDKの完全なドキュメント | すべてのWeb SDK

連携方法の選び方

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