すべてのプロダクト
Search
ドキュメントセンター

ID Verification:React Native 連携

最終更新日:Mar 13, 2026

ID Verification は、React Native アプリケーションにリモート KYC 本人確認機能を実装するための React Native プラグインを提供します。本トピックでは、サンプルコードを用いて連携手順を順に説明します。

依存関係の構成

React Native プラグインの連携は、公式 React Native ドキュメントに従って行うことができます。あるいは、本トピックの手順に従っても構いません。

SDK のダウンロード

ID Verification React Native SDK をダウンロードします。ダウンロード後、ZIP ファイルを展開します。これにより、react-native-idv-library という名前のローカルフォルダが作成されます。このフォルダには、React Native モジュールおよびネイティブ依存関係が含まれています。

ローカルモジュールの追加

展開した react-native-idv-library フォルダを、React Native プロジェクトのローカルモジュールとして追加します。

アプリケーションプロジェクトと同じ階層に配置してください。たとえば、典型的なプロジェクト構造は以下のようになります:

Development/
├── App/                      # React Native アプリのルートディレクトリ
└── react-native-idv-library/ # 展開済み SDK のローカルモジュール

その後、アプリケーションのルートディレクトリ(App/ ディレクトリ)で、以下のコマンドを実行してローカルモジュールをインストールします:

yarn add ../react-native-idv-library 

ネイティブ依存関係のインストール

SDK には Android および iOS 向けのネイティブコードが含まれています。対象プラットフォームに応じて、必要な構成を完了する必要があります。

  • Android:
    React Native 0.60 以降では自動リンクがサポートされています。追加の手順は不要です。ビルドプロセスがネイティブモジュールを自動的にリンクします。

  • iOS:
    アプリケーションの ios ディレクトリに移動し、CocoaPods のインストールコマンドを実行してネイティブ依存関係を統合します:

    cd ios
    bundle exec pod install

連携の開始

SDK の初期化

install(): Promise<void> または installWithOptions(options: Object): Promise<void> を呼び出します。どちらのメソッドも API を初期化します。パラメーターなしのバージョン、またはオプションを受け取るバージョンのいずれかを使用できます。アプリケーション起動直後にできるだけ早く、いずれかのメソッドを呼び出してください。

options:情報収集のためのオプションパラメーターを指定します。このパラメーターは任意であり、null に設定可能です。パラメーターの内容は以下のとおりです:

重要
  • ID Verification クライアントには、組み込みの Device Guard セキュリティモジュールが含まれています。異なるリージョンにおけるデータ収集のコンプライアンス要件を満たすため、Device Guard は異なるデータ報告サイトを提供しています。ユーザーの属性に基づき、CustomUrl および CustomHost パラメーターを設定することで、報告サイトを指定できます。

  • 単一アプリケーションセッションのライフサイクル内で、データ報告リージョンは 1 つだけ指定できます。サーバー側のクエリリージョンは、報告リージョンと一致している必要があります。 対応するリージョンは製品によって異なります。詳細については、「対応リージョン」をご参照ください。

  • 各リージョンの CustomUrl は以下のとおりです:

    • 中国 (香港): https://cloudauth-device.cn-hongkong.aliyuncs.com

    • シンガポール: https://cloudauth-device.ap-southeast-1.aliyuncs.com

    • インドネシア (ジャカルタ): https://cloudauth-device.ap-southeast-5.aliyuncs.com

    • 米国 (シリコンバレー): https://cloudauth-device.us-west-1.aliyuncs.com

    • ドイツ (フランクフルト): https://cloudauth-device.eu-central-1.aliyuncs.com

パラメーター名

説明

IPv6

デバイス情報の報告にIPv6 ドメイン名を使用するかどうかを指定します:

  • 0(デフォルト):使用しない(IPv4 ドメイン名を使用)

  • 1:使用する(IPv6 ドメイン名を使用)

"1"

DataSwitch

デバイス情報の報告タイミングです。

  • 0(デフォルト):初期化時

  • 1:トークン取得時

説明

デフォルト設定を使用することを推奨します。

"1"

CustomUrl

データ報告サーバーのドメイン名を設定します。

"https://cloudauth-device.ap-southeast-1.aliyuncs.com"

CustomHost

データ報告サーバーのホストを設定します。

"cloudauth-device.ap-southeast-1.aliyuncs.com"

例:

import IdvLibrary from 'react-native-idv-library';

IdvLibrary.installWithOptions({
  CustomUrl:"https://cloudauth-device.ap-southeast-5.aliyuncs.com",
  CustomHost:"cloudauth-device.ap-southeast-5.aliyuncs.com"});

MetaInfos の取得

getMetaInfo(): Promise<string> は、クライアントから環境コンテキストを取得します。クライアントはこの情報を使用して、ビジネスサーバーにリクエストを送信します。ビジネスサーバーは、受信した MetaInfos を用いて Alibaba Cloud に対して初期化リクエストを送信します。これにより、次の認証ステップで使用される transactionId および Protocol が返されます。

例:

import IdvLibrary from 'react-native-idv-library';

async function handleGetMetaInfo() {
  // メタデータを取得
  const _metaInfo = await IdvLibrary.getMetaInfo();
  console.log('Meta info:', _metaInfo);
}

認証の開始

verify(transactionId: string, extParams?: Object): Promise<VerifyResult> を呼び出して ID Verification を開始します。

verify() メソッドは、以下のパラメーターを受け取ります:

  • transactionId:必須。

  • 拡張パラメーター:

    Android および iOS 向けネイティブ SDK の extParams 構成を参照してください。

    Android

    キー

    説明

    例(文字列型)

    IdentityParams.OcrResultButtonColor

    OCR 結果ページ下部のボタンの色です。

    #FF0000

    IdentityParams.RoundProgressColor

    顔スキャン中の円の色。

    #FF0000

    IdentityParams.ShowBlbumIcon

    書類 OCR 時にアルバムアップロードエントリを表示するかどうか:

    • 1(デフォルト):表示

    • 0:非表示

    1

    IdentityParams.ShowOcrResult

    書類 OCR 時に認識結果ページを表示するかどうか:

    • 1(デフォルト):表示

    • 0:非表示

    1

    IdentityParams.EditOcrResult

    書類 OCR 時に認識結果ページを編集可能にするかどうか:

    • 1(デフォルト):編集可能

    • 0:編集不可

    1

    IdentityParams.MaxErrorTimes

    最大再試行回数です。

    3~10 の範囲で設定してください。デフォルト値は 10 です。

    10

    IdentityParams.CardOcrTimeOutPeriod

    OCR 認識処理のタイムアウト期間です。

    20~60 秒の範囲で設定してください。デフォルト値は 20 秒です。

    20

    IdentityParams.FaceVerifyTimeOutPeriod

    生体検知処理のタイムアウト期間です。

    20~60 秒の範囲で設定してください。デフォルト値は 20 秒です。

    20

    IdentityParams.OcrResultTimeOutPeriod

    OCR 認識結果ページの編集可能期間です。

    カスタマイズ可能です。デフォルトでは制限はありません。

    60

    IdentityParams.SdkLanguage

    このセクションでは、SDK のカスタム言語設定について説明します。デフォルトでは、SDK はモバイル端末のオペレーティングシステムの言語を使用します。

    説明

    SDK でサポートされる言語の一覧については、「Android および iOS SDK のカスタム言語」をご参照ください。

    zh-Hans

    IdentityParams.CloseButtonLayout

    閉じるボタンのレイアウト:

    • left(デフォルト):左側

    • right:右側

    left

    IdentityParams.WaterMark

    OCR 成功後のウォーターマークテキストです。

    テスト用ウォーターマークテキスト

    IdentityParams.Protocol

    SDK プロトコルです。

    説明

    protocol は、サーバー側の Initialize API から取得し、拡張パラメーターとして渡します。これにより、SDK 内部の API 呼び出しを削減し、ネットワーク体験を向上させます。

    なし

    iOS

    キー

    説明

    例(文字列)

    kIdentityParamKeyNextButtonColor

    光学文字認識(OCR)結果ページ下部のボタンの色です。

    #FF0000

    kIdentityParamKeyRoundProgressColor

    生体検知時のプログレス円の色です。

    #FF0000

    kIdentityParamKeyOcrSelectPhoto

    書類 OCR 時にアルバムアップロードエントリを表示するかどうか。有効値:

    • 1(デフォルト):表示

    • 0: いいえ

    1

    kIdentityParamKeyShowOcrResult

    証明書 OCR 認識ステップで認識結果ページを表示するかどうか:

    • 1(デフォルト):表示

    • 0:非表示

    1

    kIdentutyParamKeyEditOcrResult

    証明書 OCR 認識ステップ:認識結果ページを編集可能にするかどうか?

    • 1(デフォルト):編集可能

    • 0:編集不可

    1

    kIdentityParamKeyMaxRetryCount

    最大再試行回数です。有効値:3~10。デフォルト値:10。

    10

    kIdentityParamKeyCardOcrTimeOutPeriod

    書類 OCR のタイムアウト期間です。有効値:20~60。デフォルト値:20。単位:秒。

    20

    kIdentityParamKeyFaceVerifyTimeOutPeriod

    生体検知のタイムアウト期間です。有効値:20~60。デフォルト値:20。単位:秒。

    20

    kIdentityParamKeyCardOcrEditTimeOutPeriod

    OCR 結果ページの編集タイムアウト期間です。有効値:60~180。単位:秒。デフォルトではタイムアウトは適用されません。

    180

    kIdentityParamKeyLanguage

    SDK のカスタム言語設定です。デフォルトでは、SDK はモバイル端末の言語設定を使用します。

    説明

    SDK でサポートされる言語の一覧については、「Android および iOS SDK のカスタム言語」をご参照ください。

    zh-Hans

    kIdentityParamKeyDefaultLanguage

    SDK のデフォルト言語設定です。kIdentityParamKeyLanguage と同じ値を使用します。

    デフォルト値:en

    en

    kIdentityParamKeyCloseButtonPosition

    SDK の閉じるボタンの位置:

    • left(デフォルト):左側

    • right:右側

    left

    kIdentityParamKeyWatermark

    OCR 成功後に表示されるウォーターマークテキストです。

    テスト用ウォーターマークテキスト

    kIdentutyParamKeyProtocol

    SDK プロトコルです。

    説明

    protocol の値をサーバー側の Initialize 操作から取得し、拡張パラメーターとして渡します。これにより、SDK 内部の API 呼び出しを削減し、ネットワークパフォーマンスを向上させます。

    968412EB*******...

    説明

    transactionId は 1 回のみ使用できます。それ以外の場合、システムはエラーを返します。

  • 戻り値:Promise<VerifyResult>。この VerifyResult オブジェクトには、以下のフィールドが含まれます:

    • code:状態コード。

    • subCode:サブコード。

    • message:エラーの説明。

    状態コードおよびサブコードの詳細については、「Android IdentityResponse.code 表」および「iOS エラーコード」をご参照ください。

  • 例:

    import { Platform} from 'react-native';
    import IdvLibrary from 'react-native-idv-library';
    
    async function handleVerify() {
      const extParams = Platform.select({
        ios: {
          kIdentityParamKeyLanguage: 'en',
          kIdentutyParamKeyProtocol:'xxxxxxx'
        },
        android: {
          SdkLanguage: 'en',
          Protocol:'xxxxxxxxx'
        },
      });
      // 認証 API
      const result = await IdvLibrary.verify('transactionId', extParams); // transactionId は、サーバーから取得した実際の検証 ID に置き換えてください。
      console.log('Verify result:', result);
    }

UI のカスタマイズ

setCustomUIConfig(param: string): Promise<string> を呼び出して、UI の色をカスタマイズします。

  • params:JSON 形式のデータです。UI カスタマイズのオプションについては、ネイティブ SDK のドキュメントを参照してください:

  • 例:

    async function handleSetCustonUiConfig() {
      const config= "{\"faceConfig\":{ \"faceBGColor\": \"#FF33FF\"}}";
      const result=await IdvLibrary.setCustomUIConfig(config);
      console.log('handleUi:', result);
    }

プラットフォーム固有の構成

ID Verification SDK は、カメラやネットワークアクセスなど、ネイティブデバイスの機能に依存しています。Android および iOS に対して、必要な権限を宣言し、ビルドを構成する必要があります。これらの構成は必須です。対象プラットフォームに対して必ず確認してください。

Android

AAR ファイルの追加

image.png

react-native-idv-library/android ディレクトリ内の libs フォルダを、React Native プロジェクトの android/app ディレクトリにコピーします:

image.png

その後、React Native プロジェクトの android/app/build.gradle ファイルに、以下の構成を追加します。

// 新規追加
repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    // 新規追加
    implementation fileTree(dir: 'libs', include the following: ['*.aar'])

}

難読化ルール

-dontwarn com.idvlibrary.**
-keep class com.idvlibrary.** {
*;
}
-verbose
-keep class com.idv.identity.platform.api.** {*;}
-keep class com.idv.identity.platform.log.** {*;}
-keep class com.idv.identity.util.IdentityUtils {*;}
-keep class com.idv.identity.ocr.IdentityOcrApi {*;}
-keep class com.idv.identity.platform.model.** {*;}
-keep class com.idv.identity.platform.config.** {*;}
-keep class com.idv.identity.face.IdentityFaceApi {*;}


-keep class com.face.verify.intl.** {*;}
-keep class com.alibaba.fastjson.** {*;}
-keep class face.security.device.api.** {*;}
-keep class net.security.device.api.** {*;}
-keep class com.dtf.toyger.** { *; }
-dontwarn net.security.device.api.**
-dontwarn face.security.device.api.**


-keep class com.idv.identity.service.algorithm.** {*;}
-keep class com.idv.identity.base.algorithm.** {*;}
-keep class com.idv.identity.quality.QualityRouter {*;}
-keep class com.idv.identity.blink.BlinkRouter {*;}
-keep class com.idv.identity.service.IdentityFaceService {*;}
-keep class com.idv.identity.service.ocr.IdentityDocService {*;}

-keep class com.alibaba.sdk.android.oss.** { *; }
-dontwarn okio.**
-dontwarn org.apache.commons.codec.binary.**



# NFC
-keep class com.idv.identity.nfc.IdentityNfcApi { *; }
-keep class org.jmrtd.** {*;}
-keep class net.sf.**{*;}
-keep class org.**{*;}
-keep class cn.**{*;}


# 既存の keep ルールに追加して警告を抑制してください。
# これは Android Gradle プラグインによって自動生成されます。
-dontwarn com.fasterxml.**
-dontwarn com.google.**
-dontwarn java.applet.Applet
-dontwarn java.awt.**
-dontwarn javax.**
-dontwarn org.**
-dontwarn retrofit2.**
-dontwarn springfox.documentation.spring.web.json.Json

# ログ難読化(任意)
-assumenosideeffects class android.util.Log {
    public static *** d(...);
}

# 1.3.2 より前のバージョンを使用する場合は、これらのルールを追加してください
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.alibaba.fastjson.** { *; }
-keep class * extends com.alibaba.fastjson.TypeReference { *; }

iOS

必要な権限の追加

Info.plist に以下の権限を追加します(説明は参考用です):

image.png

完全なサンプルコード

import React from 'react';
import { Platform,Text, View, StyleSheet, Button } from 'react-native';

import IdvLibrary from 'react-native-idv-library';

IdvLibrary.installWithOptions({
  CustomHost:"cloudauth-device.cn-hongkong.aliyuncs.com",
  CustomUrl:"https://cloudauth-device.cn-hongkong.aliyuncs.com"
})
export default function App() {
  const [resultInfo, setValue] = React.useState<string | null>(null);

  async function handleVerify() {

    const extParams = Platform.select({
      ios: {
        kIdentityParamKeyLanguage: 'en',
        kIdentutyParamKeyProtocol:'xxxxxxx'
      },
      android: {
        SdkLanguage: 'en',
        Protocol:'xxxxxxxxx'
      },
    });
    // 身分証明を検証
    const result = await IdvLibrary.verify('transactionId', extParams);// transactionId は、サーバーから取得した実際の ID に置き換えてください。
    console.log('Verify result:', result);
    
    setValue(JSON.stringify(result));
  }

  async function handleGetMetaInfo() {
    // メタデータを取得
    const _metaInfo = await IdvLibrary.getMetaInfo();
    console.log('Meta info:', _metaInfo);
    setValue(_metaInfo);
  }

  async function handleSetCustonUiConfig() {
    const config= "{\"faceConfig\":{ \"faceBGColor\": \"#FF33FF\"}}";

    const result=await IdvLibrary.setCustomUIConfig(config);

    console.log('handleUi:', result);
  }

  return (
    <View style={styles.container}>
      <Text>結果 : {resultInfo}</Text>
      <Button title="検証情報の取得" onPress={handleGetMetaInfo} />
      <Button title="UI の設定" onPress={handleSetCustonUiConfig} />
      <Button title="検証" onPress={handleVerify} />
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
  },
});

また、React Native デモ をダウンロードして、完全なコードをお試しください。

重要

このデモコードは連携の参考用です。最新の SDK バージョンに必ず置き換えてください。