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

ID Verification:Android 統合

最終更新日:Mar 01, 2026

本人確認を必要とするモバイルアプリには、ドキュメントスキャンと顔認識のための安全なオンデバイスフローが必要です。Android 用 ID Verification SDK は、installgetMetaInfo、および verify の 3 つのメソッドを通じてこれを提供します。これらのメソッドは、サーバーサイド API と連携して検証を完了します。

クイックスタート

次の例は、SDK を初期化し、検証セッションを開始するための最小限のコードを示しています。

// ステップ 1: SDK を初期化します (アプリの起動時に 1 回呼び出します)
IdentityPlatform.getInstance().install(context);

// ステップ 2: デバイスメタデータを収集し、サーバーに送信します
String metaInfo = IdentityPlatform.getMetaInfo(context);

// ステップ 3: サーバーが metaInfo を使用して Initialize API を呼び出します
//         transactionId と protocol を返します

// ステップ 4: 検証を開始します
Map<String, String> extParams = new HashMap<>();
extParams.put(IdentityParams.PROTOCOL, protocol);

IdentityPlatform.getInstance().verify(transactionId, extParams,
    new IdentityCallback() {
        @Override
        public boolean response(final IdentityResponse response) {
            if (IdentityResponseCode.IDENTITY_SUCCESS == response.code) {
                // 仮合格 -- CheckResult API で確認します
            } else {
                // エラーまたは失敗を処理します
            }
            return true;
        }
    });

完全な動作例については、Android デモプロジェクト をダウンロードしてください。

前提条件

開始する前に、以下を確認してください。

  • Android 4.3 (API レベル 18) 以降をターゲットとするアプリ

  • ARM ベースのデバイス (x86 はサポートされていません)

  • サーバーサイドの Initialize API を呼び出して取得した transactionId

必要な権限

権限必須説明
android.permission.INTERNETはいSDK 通信のためのネットワークアクセス
android.permission.ACCESS_NETWORK_STATEいいえ (推奨)ネットワークステータスを検出します
android.permission.CAMERAはい顔スキャンのためのカメラアクセス。Android 6.0 以降での実行時権限。

SDK のダウンロードとセットアップ

  1. Android SDK をダウンロードします。パッケージには AAR (Android Archive) ファイルが含まれています。

  2. パッケージを解凍し、すべての AAR ファイルをプロジェクトの libs ディレクトリにコピーします。

  3. 次の依存関係を build.gradle ファイルに追加します。

    xxx を実際の SDK バージョン番号に置き換えてください。リストされているすべてのサードパーティの依存関係は必須です。
       dependencies {
           // [必須] コアモジュール
           implementation files('libs/idv-identityplatform-xxx.aar')
           implementation files('libs/idv-identityface-xxx.aar')
           implementation files('libs/idv-identitycrypto-xxx.aar')
           implementation files('libs/idv-identitybase-sdk-xxx.aar')
           implementation files('libs/idv-identityservice-sdk-xxx.aar')
           implementation files('libs/idv-identityblink-sdk-xxx.intl.aar')
           implementation files('libs/idv-identitymnn-xxx.aar')
           implementation files('libs/tygerservice-xxx.aar')
           implementation files('libs/Android-AliyunFaceGuard-xxx.aar')
    
           // [eKYC に必須] OCR モジュール
           implementation files('libs/idv-identityocr-xxx.aar')
    
           // [オプション] 自動 OCR スキャン
           implementation files('libs/idv-identityocrservice-xxx.aar')
    
           // [オプション] 顔の品質とオクルージョン検出
           implementation files('libs/idv-identityquality-sdk-xxx.aar')
    
           // [オプション] NFC ドキュメント読み取り
           implementation files('libs/IDOCR_PubSDK_Android-1.0.0.aar')
           implementation files('libs/idv-identitynfc-xxx.intl.aar')
    
           // または、すべての 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'
       }

統合ワークフロー

SDK は、IdentityPlatform クラスを通じて 3 つのメソッド (installgetMetaInfo、および verify) を公開しています。

1. install()       SDK を初期化します
        |
2. getMetaInfo()   デバイスメタデータを収集し、サーバーに送信します
        |
3. サーバーサイド     MetaInfo を使用して Initialize API を呼び出し、transactionId と protocol を取得します
        |
4. verify()        transactionId を使用して検証を開始します
        |
5. コールバック        IdentityResponse の結果を処理します

SDK の初期化

アプリの起動時に install を 1 回呼び出します。これにより、SDK 環境と組み込みの Device Guard セキュリティモジュールがセットアップされます。

// 基本的な初期化
IdentityPlatform.getInstance().install(context);

// オプション付きの初期化
Map<String, String> options = new HashMap<>();
options.put("CustomUrl", "https://cloudauth-device.ap-southeast-1.aliyuncs.com");
options.put("CustomHost", "cloudauth-device.ap-southeast-1.aliyuncs.com");
IdentityPlatform.getInstance().install(context, options);

メソッドシグネチャ:

public void install(Context context);
public void install(Context context, Map<String, String> options);

オプションパラメーター:

キー説明デフォルト
IPv6デバイスデータレポートに IPv6 ドメインを使用します。"0" = IPv4、"1" = IPv6。"0""1"
DataSwitchデバイスデータをレポートするタイミング。"0" = 初期化時、"1" = トークン取得時。"0""1"
CustomUrlデータレポートサーバー URL。シンガポールエンドポイント"https://cloudauth-device.ap-southeast-1.aliyuncs.com"
CustomHostデータレポートサーバーホスト。シンガポールエンドポイント"cloudauth-device.ap-southeast-1.aliyuncs.com"
重要

アプリケーションセッションごとに設定できるレポートサイトは 1 つだけです。サーバークエリリージョンはレポートサイトと一致している必要があります。

利用可能なレポートサイト:

リージョンエンドポイント URL
シンガポール (デフォルト)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

サポートされているすべてのリージョンについては、「サポートされているリージョン」をご参照ください。

デバイスメタデータの収集

デバイス環境データを収集するには、getMetaInfo を呼び出します。返された JSON 文字列をサーバーに送信し、サーバーがそれをサーバーサイドの Initialize API に渡します。

String metaInfo = IdentityPlatform.getMetaInfo(context);
// metaInfo をサーバーに送信します

メソッドシグネチャ:

public static String getMetaInfo(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"
}

起動確認

サーバーが Initialize API を呼び出し、transactionId (およびオプションで protocol 値) を返した後、verify を呼び出して検証フローを開始します。

重要

transactionId は単一使用です。verify を呼び出す前に、新しいものを取得してください。

Map<String, String> extParams = new HashMap<>();
extParams.put(IdentityParams.PROTOCOL, protocol);

IdentityPlatform.getInstance().verify(transactionId, extParams,
    new IdentityCallback() {
        @Override
        public boolean response(final IdentityResponse response) {
            if (IdentityResponseCode.IDENTITY_SUCCESS == response.code) {
                // 仮合格 -- CheckResult API で確認します
            } else {
                // エラーまたは失敗を処理します
            }
            return true;
        }
    });

メソッドシグネチャ:

public void verify(String transactionId, Map<String, String> extParams, IdentityCallback callback);

パラメーター:

名前タイプ説明
transactionIdStringサーバーサイドの Initialize API からの一意の ID。単一使用。
extParamsMap<String, String>UI カスタマイズと SDK の動作のための拡張パラメーター。カスタマイズが不要な場合は null を渡します。
callbackIdentityCallback検証結果を codemessage を含む IdentityResponse として受け取ります。

コールバックインターフェース:

public class IdentityResponse {
    public int code;       // 結果コード (結果コード表を参照)
    public String message; // 結果の説明
}

public interface IdentityCallback {
    boolean response(IdentityResponse response);
}

検証フローのカスタマイズ

SDK の動作をカスタマイズするには、これらのキーを extParams マップに渡します。

UI カスタマイズ

キー説明デフォルト
IdentityParams.OcrResultButtonColorOCR 結果ページのボタンの色。--"#FF0000"
IdentityParams.RoundProgressColor顔スキャン中の円の色。--"#FF0000"
IdentityParams.CloseButtonLayout閉じるボタンの位置: "left" または "right""left""right"
IdentityParams.WaterMarkOCR スキャン成功後に表示される透かしテキスト。--"SAMPLE"

動作設定

キー説明デフォルト範囲
IdentityParams.ShowAlbumIconOCR ステップでアルバムアップロードオプションを表示します。"1" = 表示、"0" = 非表示。"1""0" / "1"
IdentityParams.ShowOcrResultOCR 結果ページを表示します。"1" = 表示、"0" = 非表示。"1""0" / "1"
IdentityParams.EditOcrResultOCR 結果ページでの編集を許可します。"1" = 編集可能、"0" = 読み取り専用。"1""0" / "1"
IdentityParams.MaxErrorTimes最大リトライ回数。"10"3--10
IdentityParams.CardOcrTimeOutPeriodOCR ステップのタイムアウト (秒)。"20"20--60
IdentityParams.FaceVerifyTimeOutPeriod生体検知のタイムアウト (秒)。"20"20--60
IdentityParams.OcrResultTimeOutPeriodOCR 結果ページが編集可能な期間 (秒)。制限なしカスタム
IdentityParams.SdkLanguageSDK 表示言語をオーバーライドします。デフォルトでは、SDK はデバイスのシステム言語を使用します。「Android および iOS SDK のカスタム言語」をご参照ください。デバイス言語"zh-Hans"

プロトコル

キー説明デフォルト
IdentityParams.Protocolサーバーサイドの Initialize API からの SDK プロトコルデータ。これを渡すことで、内部 API 呼び出しが減少し、ネットワークパフォーマンスが向上します。--

結果コード

IdentityResponse.code の値は、検証結果を示します。コード 1000 および 1001 のみが課金対象となります。

重要

コード 1000 および 1001 は予備的な結果です。最終的な検証結果を取得するには、常にサーバーサイドの CheckResult API を呼び出してください。

課金対象の結果コード

コード説明操作
1000検証成功 (仮合格)。最終結果については CheckResult API を呼び出してください。
1001検証に失敗した (予備)。失敗理由については CheckResult API を呼び出してください。

非課金対象のエラーコード

コード説明トラブルシューティング
1002システムエラー。検証をリトライしてください。
1003SDK の初期化に失敗しました。install()verify() の前に呼び出されていることを確認してください。
1004カメラ権限エラー。カメラ権限を付与し、エラーが続く場合はアプリのキャッシュをクリアしてください。
1005ネットワークエラー。デバイスのネットワーク接続を確認してください。
1006ユーザーが検証フローを終了しました。操作は不要です。
1007無効な transactionId[Initialize] API から新しい transactionId を取得します。
1009クライアントタイムスタンプエラー。デバイスの時刻を同期してください。
1011誤ったドキュメントタイプが送信されました。ドキュメントタイプがフロー構成と一致していることを確認してください。
1012スキャンされたドキュメントに主要な情報が不足しているか、フォーマット検証に失敗しました。より良い照明で再スキャンするようユーザーに依頼してください。
1013画像品質が低い。明るい環境で写真を撮り直すようユーザーに依頼してください。
1014リトライ制限を超過しました。新しい検証セッションを開始してください。
1015Android バージョンが低すぎます。デバイスは Android 4.3 以降を実行している必要があります。
1016カメラ権限が付与されていません。システム設定でカメラ権限を付与するようユーザーに促してください。

完全なコード例

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);

        // ステップ 1: SDK を初期化します
        IdentityPlatform.getInstance().install(MainActivity.this);

        // ステップ 2: デバイスメタデータを収集します
        String metaInfo = IdentityPlatform.getMetaInfo(MainActivity.this);

        // ステップ 3: metaInfo をサーバーに送信します。
        //         サーバーが Initialize API を呼び出し、transactionId と protocol を返します。
        // transactionId = getTransactionIdFromServer(metaInfo).transactionId;
        // protocol = getTransactionIdFromServer(metaInfo).protocol;

        // ステップ 4: 拡張パラメーターを設定します
        Map<String, String> extParams = new HashMap<>();
        extParams.put(IdentityParams.PROTOCOL, protocol);
        extParams.put(IdentityParams.SdkLanguage, "en");

        // ステップ 5: 検証を開始します
        IdentityPlatform.getInstance().verify(transactionId, extParams,
                new IdentityCallback() {
                    @Override
                    public boolean response(final IdentityResponse response) {
                        if (IdentityResponseCode.IDENTITY_SUCCESS == response.code) {
                            Toast.makeText(MainActivity.this,
                                    "Verification passed", Toast.LENGTH_LONG).show();
                        } else {
                            Toast.makeText(MainActivity.this,
                                    "Verification failed ([" + response.code + "] " +
                                            response.message + ")",
                                    Toast.LENGTH_LONG).show();
                        }
                        return true;
                    }
                });
    }
}
transactionIdprotocol の値はサーバーから取得する必要があります。コメントアウトされている getTransactionIdFromServer() 呼び出しを、実際のサーバー通信ロジックに置き換えてください。

ProGuard および R8 難読化ルール

プロジェクトでコードの縮小に ProGuard または R8 を使用している場合は、次のルールを ProGuard 設定ファイルに追加してください。

# ID Verification SDK コア
-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 {*;}

# 顔検証と Device Guard
-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 {*;}

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

# NFC (NFC モジュールがトリミングされている場合は削除)
-keep class com.idv.identity.nfc.IdentityNfcApi { *; }
-keep class org.jmrtd.** {*;}
-keep class net.sf.**{*;}
-keep class org.**{*;}
-keep class cn.**{*;}

# バンドルされた依存関係の警告を抑制
-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(...);
}

モジュールのトリミング

アプリサイズを削減するために、オプションモジュールを削除します。

必須モジュール

モジュール説明合計サイズARM64ARMv7
idv-identitybase-sdk-[version].aarベースモジュール16.3 KB----
idv-identityplatform-[version].aarベースモジュール140.9 KB----
idv-identitycrypto-[version].aarベースモジュール508.1 KB295.3 KB212.8 KB
idv-identityface-[version].aar顔認識 UI173.58 KB----
tygerservice-[version].aar顔認識エンジン2.6 MB1.67 MB1.4 MB
idv-identitymnn-[version].aar生体検知、顔の品質、および自動 OCR スキャンのためのベースコンポーネント1405.1 KB853 KB552.1 KB
idv-identityservice-sdk-[version].aar顔生体検知969 KB729.8 KB514.8 KB
idv-identityblink-sdk-[version].intl.aarまばたき検出352 KB----
Android-AliyunFaceGuard-[version].aarDevice Guard セキュリティモジュール2.315 MB1.330 MB1.015 MB

トリミング可能なモジュール

モジュール説明トリミングの影響合計サイズARM64ARMv7
idv-identityquality-sdk-[version].aar顔の品質とオクルージョン検出顔品質チェックが利用できなくなります。271 KB----
idv-identityocr-[version].aarOCR モジュールeKYC 検証のためにトリミングしないでください。336.3 KB----
idv-identityocrservice-[version].aar自動 OCR スキャン自動ドキュメントスキャンが利用できなくなります。700.8 KB509.4 KB487 KB
IDOCR_PubSDK_Android-1.0.0.aarNFC サービスNFC ドキュメント読み取りが利用できなくなります。5.2 MB----
idv-identitynfc-[version].intl.aarNFC ビジネスロジックNFC ドキュメント読み取りが利用できなくなります。172 KB----
NFC モジュール (IDOCR_PubSDK_Android-1.0.0.aar および idv-identitynfc-[version].intl.aar) は合計で 5 MB を超えます。検証フローで NFC ドキュメント読み取りが不要な場合は、これらを削除してください。

参考資料