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

ID Verification:Android 統合

最終更新日:Nov 19, 2025

ID Verification は、eKYC リモート本人確認機能をアプリに追加するために使用できる Android クライアントソフトウェア開発キット (SDK) を提供します。サーバー側の初期化 API を呼び出して、一意の `transactionId` を取得します。次に、`transactionId` を使用してクライアント SDK を起動します。この Topic では、Android クライアントを統合する方法を説明し、コード例を示します。

制限事項

この SDK は、Android 4.3 以降を実行する電話やタブレットなどのモバイルデバイスをサポートします。x86 アーキテクチャはサポートされていません。

権限の説明

セキュリティを強化するため、SDK には次の権限が必要です。

権限

必須

説明

android.permission.INTERNET

はい

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

android.permission.ACCESS_NETWORK_STATE

いいえ (推奨)

android.permission.CAMERA

はい

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

SDK のダウンロードと構成

  1. Android SDK をダウンロードします。SDK は標準の Android Archive (AAR) パッケージです。

  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/tygerservice-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-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 を使用して、指定した IDV 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.1.72.android'
    }
    説明
    • 上記のコードでは、`xxx` は SDK のバージョン番号を表します。

    • SDK が正しく機能するには、すべてのサードパーティの依存ライブラリが必要です。

API リファレンス

Android SDK には、`install`、`getMetaInfo`、および `verify` API が含まれています。

SDK の初期化 (install)

  • 関数プロトタイプ

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

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

    • options: 情報収集のオプションパラメーターを指定します。このパラメーターはオプションです。オプションパラメーターは次のとおりです。

      説明
      • ID Verification クライアントには、Device Guard セキュリティモジュールが組み込まれています。さまざまなリージョンのデータ収集コンプライアンス要件を満たすために、さまざまなデータレポートサイトを提供します。CustomUrl と CustomHost を設定して、ユーザー属性に基づいてレポートサイトを指定できます。

        注: 1 つのアプリケーションセッションライフサイクル内で指定できるレポートサイトは 1 つだけです。サーバークエリリージョンはレポートサイトと一致する必要があります。

      • レポートサイトの指定:

        • シンガポールサイト (デフォルト): 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.cn-hongkong.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

  • 戻り値: なし。

MetaInfo の取得 (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 をサーバーに送信し、Initialize API を呼び出して transactionId を取得していることを確認してください。

  • 最新バージョンでは protocol フィールドが追加されています。extParams パラメーターを使用して protocol の値を渡してください。

  • 関数プロトタイプ

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

    名前

    タイプ

    説明

    transactionId

    String

    サーバー側の Initialize API から取得した `transactionId`。

    重要

    各 `transactionId` は `verify` 関数を 1 回だけ呼び出すために使用できます。各呼び出しの前に新しい `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.ShowAlbumIcon

    証明書 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 プロトコル。

    説明

    サーバー側の Initialize API から `protocol` を取得し、拡張パラメーターで渡します。これにより、SDK 内の内部 API のやり取りを減らし、ネットワークエクスペリエンスを向上させることができます。

    なし

  • IdentityResponse.code テーブル

    エラーコード

    課金対象

    結果コードの説明

    1000

    はい

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

    1001

    はい

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

    1002

    いいえ

    システムエラー。

    1003

    いいえ

    SDK の初期化に失敗しました。クライアントの時刻が正しいか確認してください。

    1004

    いいえ

    カメラ権限エラー。問題を解決するには、次のステップを試してください。

    1. 検証の前に、アプリにカメラ権限があることを確認してください。

    2. 権限が付与されてもエラーが続く場合は、アプリのキャッシュをクリアして再試行してください。

    1005

    いいえ

    ネットワークエラー。

    1006

    いいえ

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

    1007

    いいえ

    無効な TransactionId。

    1009

    いいえ

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

    1011

    いいえ

    不正な証明書タイプが送信されました。

    1012

    いいえ

    スキャンされた証明書のキー情報が欠落しているか、フォーマット検証に失敗しました。

    1013

    いいえ

    イメージの品質が低いです。

    1014

    いいえ

    エラーの数が上限を超えました。

    1015

    いいえ

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

    1016

    いいえ

    カメラ権限が付与されていません。

コード例

public class MainActivity extends AppCompatActivity {
    private String transactionId = "";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        // SDK を初期化する
        IdentityPlatform.getInstance().install(MainActivity.this);
    
        // MetaInfo を取得する
        String metaInfo = IdentityPlatform.getMetaInfo(MainActivity.this);
    
        /**
         * MetaInfo をアプリサーバーに送信します。クラウドの Initialize 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.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(...);
}

デモコードパッケージ

Android デモをダウンロードして試すことができます。

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

モジュール名

トリミング可能

コンパイル後のサイズ

デュアルアーキテクチャ

ARM64

ARMv7

idv-identitybase-[version].aar

トリミング不可

ベースモジュール。

16.3 KB

idv-identityplatform-[version].aar

トリミング不可

ベースモジュール。

140.9 KB

idv-identitycrypto-[version].aar

トリミング不可

ベースモジュール。

508.1 KB

295.3 KB

212.8 KB

idv-identityface-[version].aar

トリミング不可

顔認識 UI のベースモジュール。

173.58 KB

tygerservice-[version].aar

トリミング不可

顔認識のベースモジュール。

2.6 MB

1.67 MB

1.4 MB

idv-identitymnn-[version].aar.

トリミング不可

mnn モジュールは、近距離/遠距離の生体検知、顔の品質、および自動 OCR スキャンのためのベースコンポーネントです。このモジュールをトリミングすると、これらの機能は利用できなくなります。

1405.1 KB

853 KB

552.1 KB

idv-identityservice-sdk-[version].aar

トリミング不可

顔の生体検知。

969 KB

729.8 KB

514.8 KB

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

トリミング不可

まばたきモジュール。

352 KB

idv-identityquality-sdk-[version].aar

トリミング可能

顔の品質とオクルージョン検出モジュール。この機能が不要な場合はトリミングできます。

271 KB

idv-identityocr-[version].aar

トリミング可能

OCR モジュール。eKYC 検証を使用する場合、このモジュールはトリミングできません。

336.3 KB

idv-identityocrservice-[version].aar

トリミング可能

OCR サービスモジュール。自動 OCR スキャンを実装します。

700.8 KB

509.4 KB

487 KB

Android-AliyunFaceGuard-[version].aar

トリミング不可

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

2.315 MB

1.330 MB

1.015 MB

IDOCR_PubSDK_Android-1.0.0.aar

トリミング可能

NFC サービスモジュール。

説明

eKYC 検証に NFC 機能が不要な場合は、これをトリミングできます。

5.2 MB

idv-identitynfc-[version].intl.aar

トリミング可能

NFC ビジネスモジュール。

説明

eKYC 検証に NFC 機能が不要な場合は、これをトリミングできます。

172 KB