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

ID Verification:Android 統合

最終更新日:Jul 09, 2026

ID Verification は、ビジネス アプリケーション (App) に電子的な顧客確認 (eKYC) のリモート本人確認を実装するための Android クライアント SDK を提供します。サーバー側の初期化 API を呼び出して、一意のトランザクション ID を取得できます。次に、このトランザクション ID を使用してクライアント SDK を起動します。このトピックでは、サンプルコードを含む Android クライアントの統合プロセスについて説明します。

制限

対応システム: Android 4.3 以降の携帯電話またはタブレット。

非対応: x86 アーキテクチャのデバイス。

権限

セキュリティを強化するため、現在の SDK では以下の権限が必要です:

権限

必須

説明

android.permission.INTERNET

はい

インターネット権限。Android SDK が動作するにはインターネット接続が必要です。

android.permission.ACCESS_NETWORK_STATE

いいえ (推奨)

android.permission.CAMERA

はい

カメラ権限。この権限は Android 6.0 以降では動的です。

android.permission.WRITE_EXTERNAL_STORAGE

いいえ

com.aliyun.dpa:oss-android-sdk:$version コンポーネントは、この権限を自動的に宣言します。アプリケーションでこの権限が不要な場合は、remove タグを使用して AndroidManifest.xml から削除してください:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:remove="true" />

SDK のダウンロードと設定

  1. Android SDK は標準の AAR パッケージとして提供されています。SDK リリースノートからダウンロードしてください。機能を試すには、Android デモもダウンロードできます。

  2. ダウンロード後、パッケージを解凍します。Android SDK フォルダー内のすべての AAR ファイルをプロジェクトの libs ディレクトリにコピーします。次に、プロジェクトの build.gradle ファイルに次の依存関係を追加します。

    dependencies {
        // SDK モジュール
        implementation files('libs/idv-identityplatform-xxx.aar') 
        implementation files('libs/idv-identityface-xxx.aar') 
        implementation files('libs/idv-ientitycrypto-xxx.aar') 
        implementation files('libs/idv-identityocr-xxx.aar') 
        implementation files('libs/Android-AliyunFaceGuard-xxx.aar')
        implementation files('libs/idv-identitybase-sdk-xxx.aar') 
        implementation files('libs/idv-identityservice-sdk-xxx.aar') 
        implementation files('libs/idv-identityquality-sdk-xxx.aar') 
        implementation files('libs/idv-identityblink-sdk-xxx.aar')
        implementation files('libs/idv-identitymouth-sdk-xxx.aar')
    
        implementation files('libs/idv-identitymnn-xxx.aar') 
        implementation files('libs/idv-identityocrservice-xxx.aar') 
        implementation files('libs/idv-identitynfc-xxx.aar') 
        implementation files('libs/IDOCR_PubSDK_Android-1.0.0.aar') 
    
        // または、fileTree を使用して ID Verification SDK の AAR ファイルのディレクトリを指定します。
        //implementation(fileTree(dir: "libs", includes: ["*.aar"]))
    
        implementation "androidx.appcompat:appcompat:1.5.0"
        implementation "androidx.activity:activity:1.7.0"
        implementation "androidx.recyclerview:recyclerview:1.0.0"
        implementation 'com.squareup.okhttp3:okhttp:4.9.3'
        implementation 'com.squareup.okio:okio:2.8.0'
        implementation 'com.aliyun.dpa:oss-android-sdk:2.9.21'
        implementation 'com.alibaba:fastjson:1.2.83_noneautotype'
    }
    説明
    • 上記の依存関係では、xxx は SDK の具体的なバージョン番号を示します。

    • サードパーティー依存ライブラリを省略しないでください。省略すると、SDK が正しく動作しない場合があります。

    • tigerservice-xxx.aar コンポーネントは、バージョン 1.3.4 以降で削除されています。

    • バージョン 1.3.6 以降では、idv-identitymouth-sdk-xxx.aar コンポーネントが新たに追加されました。

API リファレンス

Android SDK には、インストールgetMetaInfoベリファイ の API オペレーションが含まれています。

SDK の初期化 (インストール)

  • 関数プロトタイプ

    public void install(Context context);
    public void install(Context context,Map<String, String> options);
  • パラメーター

    • context:現在のアプリケーションのコンテキスト。

    • options パラメーターは、デフォルトでは null で、オプションのデータ収集設定を指定します。

      重要
      • ID Verification クライアントには、デバイスヘルパーとして知られるセキュリティモジュールが組み込まれています。デバイスヘルパーは、現地のデータ収集コンプライアンス要件を満たすために、さまざまなデータ報告リージョンを提供します。ユーザーの属性に基づいて、CustomUrlCustomHost を設定して、異なる報告サイトを指定できます。

      • アプリケーションセッションのライフサイクルごとに指定できるデータ報告リージョンは 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

        • マレーシア (クアラルンプール)https://cloudauth-device.ap-southeast-3.aliyuncs.com

      パラメーター

      説明

      IPv6

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

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

      • 1:はい (IPv6 ドメイン名を使用)

      "1"

      DataSwitch

      デバイス情報をいつ報告するかを制御します:

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

      • 1:トークン取得時

      説明

      デフォルト設定を推奨します。

      "1"

      CustomUrl

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

      各リージョンの CustomUrl」をご参照ください。

      CustomHost

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

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

      説明

      この例はシンガポールリージョン用です。他のリージョンのサーバーホストについては、「各リージョンの CustomUrl」をご参照ください。

  • 戻り値:なし。

メタ情報の取得 (getMetaInfo)

  • 関数プロトタイプ

    public static String getMetaInfo(Context context);
  • パラメーター

    名前

    説明

    context

    Context

    現在のアプリケーションのコンテキスト。

  • 戻り値:現在のモバイルデバイスの環境コンテキストを JSON 文字列形式で含む文字列

    {
      "apdidToken": "",
      "appName": "com.aliyun.identity.platform",
      "appVersion": "1.0.1",
      "bioMetaInfo": "5.1.0:11501568,4",
      "deviceBrand": "xxx",
      "deviceManufacturer": "xxx",
      "deviceModel": "xxx",
      "deviceType": "android",
      "identityVer": "1.0.0",
      "osVersion": "10",
      "sdkVersion": "1.0.9"
    }

検証の開始 (verify)

重要
  • このメソッドを呼び出す前に、サーバーに MetaInfo を渡し、初期化 API を通じて トランザクション ID を取得していることを確認してください。

  • 新しいバージョンでは、戻り値に プロトコル フィールドが追加されます。拡張パラメーター extParams を通じて、新しい プロトコル を渡してください。

  • 関数プロトタイプ

    public void verify(String transactionId, Map<String, String> extParams, IdentityCallback callback);
  • パラメーター

    名前

    説明

    transactionId

    String

    サーバー側の 初期化 API から取得した transactionId です。

    重要

    各 transactionId は、verify 関数を一度しか呼び出せません。 verify 関数を呼び出す前に、毎回新しい transactionId を取得してください。

    extParams

    Map<String, String>

    拡張パラメーターです。 通常は null を渡すことができます。

    現在サポートされているカスタムフィールドは、以下の「extParams の設定説明」テーブルに記載されています。

    callback

    IdentityCallback

    検証結果のコールバックインターフェイスです。コールバック内のリターンコードについては、以下の IdentityResponse.code テーブルをご参照ください。

    コールバックの定義は次のとおりです:

    public class IdentityResponse {
        // 「リターンコード」の説明をご参照ください。
        public int code;
    
        // 結果コードの説明。
        public String message;
    }
    
    public interface IdentityCallback {
        boolean response(IdentityResponse response);
    }
  • extParams の設定説明

    キー

    説明

    例 (文字列型)

    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 はモバイルデバイスのシステム言語を使用します。

    説明

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

    zh-Hans

    IdentityParams.CloseButtonLayout

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

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

    • right:右側

    left

    IdentityParams.WaterMark

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

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

    IdentityParams.Protocol

    SDK プロトコルです。

    説明

    サーバー側の 初期化 API を通じて プロトコル を取得します。拡張パラメーターで渡すことにより、SDK 内部の API インタラクションが減り、ネットワークエクスペリエンスが向上します。

    なし

  • IdentityResponse.code テーブル

    ステータスコード

    課金

    subCode

    説明

    1000

    はい

    A1000_1

    ユーザーは顔スキャンプロセスを完了しました。推奨される検証結果は「成功」です。この結果は参考用です。サーバー側の CheckResult API を呼び出して最終的な検証結果を取得し、処理を続行してください。

    1001

    はい

    A1001_1

    ユーザーは顔スキャンプロセスを完了しました。推奨される検証結果は「失敗」です。この結果は参考用です。サーバー側の CheckResult API を呼び出して最終的な検証結果と詳細な失敗理由を取得し、処理を続行してください。

    1002

    いいえ

    A1002_1

    モデルの読み込みに失敗しました。

    A1002_2

    アプリがバックグラウンドに移動しました (ホームボタンが押されました)。アプリがフォアグラウンドに戻った際、SDK は自動的に終了しました。

    A1002_3

    SO ライブラリの読み込みに失敗しました。

    1003

    いいえ

    A1003_1

    初期化 API のコンテンツが空です。

    A1003_2

    初期化 API のコンテンツ形式が正しくありません。

    A1003_3

    初期化 API プロトコル接続に失敗しました。

    A1003_4

    初期化 API コンテンツの復号に失敗しました。

    A1003_5

    初期化 API に失敗しました (コードが 200 ではありません、または BizCode が CODE_INIT_SUCCESS ではありません)。

    A1003_6

    初期化 API OSS が空です。

    A1003_7

    空のコンテキストが渡されました。

    A1003_8

    空のプロトコル例外が渡されました。

    1004

    いいえ

    A1004_1

    フロントカメラが異常です。

    A1004_2

    カメラの起動に失敗しました。

    A1004_3

    リアカメラが異常です。

    1005

    いいえ

    A1005_1

    初期化 API ネットワークが異常です。

    A1005_2

    検証 API ネットワークが異常です。

    1006

    いいえ

    A1006_1

    ユーザーが終了しました。

    1007

    いいえ

    A1007_1

    無効な transactionId です。

    1008

    いいえ

    A1008_1

    NFC モジュールがありません。

    A1008_2

    OCR モジュールがありません。

    A1008_3

    顔モジュールがありません。

    1009

    いいえ

    クライアントのタイムスタンプエラーです。

    1010

    いいえ

    A1010_1

    verify を呼び出す前に install メソッドが呼び出されていません。

    1011

    いいえ

    不正なドキュメントタイプが送信されました。

    1012

    いいえ

    A1012_1

    キーとなるドキュメント情報が欠落しているか、形式の検証に失敗しました。

    1013

    いいえ

    画質が低いです。

    1014

    いいえ

    A1014_1

    最大リトライ回数を超えました。

    1015

    いいえ

    A1015_1

    Android システムのバージョンが低すぎます。

    1016

    いいえ

    A1016_1

    カメラ権限が取得されていません。

    1017

    いいえ

    A1017_1

    パラメーター例外:productCode が空です。

    2000

    いいえ

    A2000_1

    NFC 設定に失敗しました。

    A2000_2

    NFC 権限が有効になっていません。

    2002

    いいえ

    A2002_1

    デバイスは NFC をサポートしていません。

サンプルコード

public class MainActivity extends AppCompatActivity {
    private String transactionId = "";
    private String protocol = "";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        // SDK を初期化します
        IdentityPlatform.getInstance().install(MainActivity.this);
    
        // メタ情報を取得します
        String metaInfo = IdentityPlatform.getMetaInfo(MainActivity.this);
    
        /**
         * メタ情報をアプリサーバーに送信します。クラウド側の初期化 API を呼び出して transactionId を取得します。
         * 新しいバージョンは、プロトコルデータを返します。
         */
        // transactionId = getTransactionIdFromServer(metaInfo).transactionId;
        // protocol = getTransactionIdFromServer(metaInfo).protocol;
        
        Map<String, String> extParams = new HashMap();
        // プロトコルデータをセットします
        extParams.put(IdentityParams.PROTOCOL, protocol);
        // SDK 言語をセットします
        extParams.put(IdentityParams.SdkLanguage, "en");
        // 認証を開始します
        IdentityPlatform.getInstance().verify(transactionId, extParams,
                new IdentityCallback() {
                    @Override
                    public boolean response(final IdentityResponse response) {
                        if (IdentityResponseCode.IDENTITY_SUCCESS == response.code) {
                            Toast.makeText(MainActivity.this,
                                    "認証成功", Toast.LENGTH_LONG).show();
                        } else {
                            Toast.makeText(MainActivity.this,
                                    "認証失敗([" + response.code + "]" +
                                            response.message + ")",
                                    Toast.LENGTH_LONG).show();
                        }
                        return true;
                    }
                });
    }
    
}

難読化設定

-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.idv.identity.mouth.MouthRouter {*;}

-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 { *; }

コンポーネントのトリミング

トリミング可否

モジュール名

モジュールの説明

トリミング後の影響

コンパイル後のサイズ

デュアルアーキテクチャ

ARM64

ARMv7

トリミング不可

idv-identitybase-sdk-[version].aar

基本モジュール。

トリミング不可

0.1 MB

トリミング不可

idv-identityplatform-[version].aar

基本モジュール。

トリミング不可

0.13 MB

トリミング不可

idv-identitycrypto-[version].aar

基本モジュール。

トリミング不可

0.44 MB

0.25 MB

0.19 MB

トリミング可能

idv-identityface-[version].aar

顔認識の基本 UI モジュール。

トリミング後は顔の生体検知が使用できなくなります。

0.05 MB

トリミング可能

tygerservice-[version].aar

顔認識の基本モジュール。

説明

このコンポーネントはバージョン 1.3.4 以降で削除されています。

トリミング後は顔の生体検知が使用できなくなります。

2.6 MB

1.67 MB

1.4 MB

トリミング可能

idv-identitymnn-[version].aar

MNN モジュールは、顔の生体検知、顔の品質、および OCR 自動スキャンの基本コンポーネントです。このモジュールをトリミングすると、これらの機能は使用できなくなります。

このモジュールをトリミングすると、顔の生体検知、顔の品質、および OCR 自動スキャン機能は使用できなくなります。

2.2 MB

1.2 MB

1.04 MB

トリミング可能

idv-identityservice-sdk-[version].aar

顔の生体検知モジュール。

トリミング後は顔の生体検知が使用できなくなります。

0.8 MB

0.59 MB

0.54 MB

トリミング可能

idv-identityblink-sdk-[version].intl.aar

顔の生体検知 (まばたき検出) モジュール。

トリミング後は、まばたきによる顔の生体検知が使用できなくなります。

0.2 MB

トリミング可能

idv-identitymouth-sdk-[version].aar

口の動き検出モジュール。

トリミング後は、口の動き検出機能が使用できなくなります。

1.2 MB

トリミング可能

idv-identityquality-sdk-[version].aar

厳格な顔品質検出モジュール。サーバー側でこの機能を任意で有効化できます。この機能が不要な場合は、トリミングできます。

トリミング後は、顔の品質とオクルージョン判定が無効になります。

0.2 MB

トリミング可能

idv-identityocr-[version].aar

OCR モジュール。eKYC 検証を使用する場合、このモジュールはトリミングしないでください。

トリミング後は OCR および eKYC 検証機能が使用できなくなります。

0.23 MB

トリミング可能

idv-identityocrservice-[version].aar

OCR サービス モジュール。OCR 自動スキャンを有効化します。

トリミング後は OCR 自動スキャンが使用できなくなります。

0.61 MB

0.47 MB

0.42 MB

トリミング可能

Android-AliyunFaceGuard-[version].aar

デバイスアシスタント モジュール。顔スキャン中のクライアント側の検証環境を保護します。

このモジュールは、顔スキャン中のクライアント側の検証環境を保護します。トリミングするとセキュリティが低下します。保持することを推奨します。

3.3 MB

2.8 MB

2 MB

トリミング可能

IDOCR_PubSDK_Android-1.0.0.aar

NFC サービス モジュール。

説明

eKYC 検証で NFC が不要な場合は、このモジュールをトリミングできます。

トリミング後は NFC 機能が使用できなくなります。

5.2 MB

トリミング可能

idv-identitynfc-[version].intl.aar

NFC ビジネス モジュール。

説明

eKYC 検証で NFC が不要な場合は、このモジュールをトリミングできます。

トリミング後は NFC 機能が使用できなくなります。

0.14 MB