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

ID Verification:Android クライアント SDK

最終更新日:Jan 15, 2025

身元確認は、ビジネス アプリケーションに電子的な顧客確認 (eKYC) 機能を実装するのに役立つ Android 用クライアント SDK を提供します。 Initialize オペレーションを呼び出して一意の transactionId を取得し、transactionId を使用してクライアント SDK を起動できます。 このトピックでは、Android 用身元確認クライアント SDK をアプリケーションと統合する方法について説明し、サンプル コードを提供します。

制限事項

SDK は、Android 4.3 以降を実行する携帯電話またはタブレットのみをサポートしています。 x86 アーキテクチャはサポートされていません。

権限

SDK は、セキュリティを向上させるために、次の表に示す権限を必要とします。

権限

必須

説明

android.permission.INTERNET

はい

インターネットにアクセスするために必要な権限です。 Android 用 SDK が機能するには、インターネットに接続する必要があります。

android.permission.ACCESS_NETWORK_STATE

いいえ、ただし推奨されます

android.permission.CAMERA

はい

カメラにアクセスするために必要な権限です。この権限は、Android 6.0 以降で動的に付与されます。

android.permission.READ_PHONE_STATE

いいえ、ただし推奨されます

android.permission.READ_EXTERNAL_STORAGE

いいえ、ただし推奨されます

SDK のダウンロードと設定

  1. Android 用 SDK をダウンロードします。 SDK は標準の Android アーカイブ (AAR) パッケージで構成されています。

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

    // SDK モジュール
    implementation files('libs/aliyun-identityplatform-xxx.aar') 
    implementation files('libs/aliyun-identityface-xxx.aar') 
    implementation files('libs/aliyun-identitycrypto-xxx.aar') 
    implementation files('libs/aliyun-identityocr-xxx.aar') 
    implementation files('libs/tygerservice-xxx.aar') 
    implementation files('libs/Android-AliyunFaceGuard-xxx.aar')
    // SDK サードパーティ依存モジュール
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'com.squareup.okhttp3:okhttp:3.11.0'
    implementation 'com.squareup.okio:okio:2.2.2'
    implementation 'com.aliyun.dpa:oss-android-sdk:2.9.4'
    implementation 'com.alibaba:fastjson:1.1.72.android'
    説明
    • 上記のコードでは、xxx は SDK のバージョン番号を示します。

    • SDK が適切に機能するには、サードパーティの依存関係が必要です。

使用上の注意

Android 用 SDK は、install、getMetaInfos、および verify API オペレーションを提供します。

install

  • 関数プロトタイプ

    public void install(Context context);
  • パラメータ

    パラメータ

    タイプ

    説明

    context

    Context

    現在のアプリのコンテキスト。

  • 戻り値: なし。

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

  • 関数プロトタイプ

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

    パラメータ

    タイプ

    説明

    transactionId

    String

    によって返されるトランザクション ID 初期化 操作。

    説明

    トランザクション ID を使用して verify 関数を呼び出すことができるのは 1 回だけです。 verify 関数をもう一度呼び出す前に、別のトランザクション ID を取得する必要があります。

    extParams

    Map<String, String>

    拡張パラメータ。 ほとんどの場合、このパラメータを NULL に設定します。 extParams で指定できるパラメータの詳細については、このトピックの extParams セクションを参照してください。

    callback

    IdentityCallback

    検証結果を返すために使用されるコールバック関数。 コールバック形式:

    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 中に 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 結果ページを表示するためのタイムアウト期間。

    カスタム タイムアウト期間を指定できます。 デフォルトでは、OCR 結果ページはタイムアウトしません。

    60

    IdentityParams.SdkLanguage

    デフォルトでは、SDK は次の言語をサポートしています:

    • zh-Hans: 簡体字中国語。

    • zh-Hant: 繁体字中国語。

    • en: 英語。

    • ja: 日本語。

    • ko: 韓国語。

    • id: インドネシア語。

    • ms: マレー語。

    • th: タイ語。

    • vi: ベトナム語。

    説明

    上記のデフォルト言語に加えて、SDK はカスタム言語をサポートしています。 詳細については、「言語の追加」を参照してください。

    zh-Hans

    CloseButtonLayout

    SDK を停止するためにクリックできるボタンの位置。 有効な値:

    • left (デフォルト)

    • right

    left

  • 戻り値: なし。

言語の追加

カスタム言語を追加するには、次の手順を実行します。

  1. 身元確認クライアント SDK を統合するアプリ プロジェクトを開きます。

  2. アプリ プロジェクトにカスタム言語のフォルダと string.xml ファイルを作成します。 この例では、ロシア語が追加されています。 メイン モジュールのプロジェクトに values-ru-rRU フォルダを作成し、フォルダに string.xml ファイルを作成します。

image.png

  1. string.xml ファイルの文字列を使用する言語に翻訳します。 詳細については、[付録 1] を参照してください。

  2. コードでカスタム言語を指定します。 形式: 言語 - 国。 次のサンプル コードでは、ロシア語が追加されています。

image.png

エラー コード

エラー コード

課金対象

説明

1000

はい

お客様は顔認証プロセスを完了し、認証結果は成功でした。この結果は参考用です。 CheckResult オペレーションを呼び出して最終的な認証結果を取得し、次の手順に進むことができます。

1001

はい

お客様は顔認証プロセスを完了しましたが、認証結果は失敗でした。この結果は参考用です。 CheckResult オペレーションを呼び出して、最終的な認証結果と失敗の詳しい原因を取得し、次の手順に進んでください。

1002

いいえ

システム エラーが発生しました。

1003

いいえ

SDK を初期化できませんでした。 クライアント時刻が有効かどうかを確認してください。

1004

いいえ

カメラ エラーが発生しました。 エラーを修正するには、次の操作を実行します。

  1. 認証の前に、アプリにカメラの権限があるかどうかを確認します。

  2. アプリにカメラの権限があるにもかかわらず権限なしエラーが続く場合は、アプリのキャッシュをクリアしてもう一度試してください。

1005

いいえ

ネットワーク エラーが発生しました。

1006

いいえ

顧客が予期せず終了しました。

1007

いいえ

トランザクション ID が無効です。

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 オペレーションを呼び出してトランザクション ID を取得します。
         */
        // transactionId = getTransactionIdFromServer(metaInfo);

        // SDK の言語を指定します。
        Map<String, String> extParams = new HashMap<>();
        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.aliyun.identity.platform.api.** {*;}
-keep class com.aliyun.identity.IdentityUtils {*;}
-keep class com.aliyun.identity.ocr.IdentityOcrApi {*;}
-keep class com.aliyun.identity.platform.model.** {*;}
-keep class com.aliyun.identity.platform.config.** {*;}
-keep class com.aliyun.identity.face.IdentityFaceApi {*;}
-keep class com.face.verify.intl.** {*;}
-keep class com.alibaba.fastjson.** {*;}
-keep class net.security.device.api.** {*;}
-keep class face.security.device.api.** {*;}
-keep class com.dtf.toyger.** {*;}

デモ

SDK を体験するには、Android 用デモ をダウンロードできます。

付録 1

<string name="identity_aliyun_no_face">顔が検出されません。</string>
<string name="identity_aliyun_distance_too_far">近づいてください。</string>
<string name="identity_aliyun_distance_too_close">遠ざかってください。</string>
<string name="identity_aliyun_face_not_in_center">顔を円の中に移動してください。</string>
<string name="identity_aliyun_bad_pitch">携帯電話に顔を向けてください。</string>
<string name="identity_aliyun_bad_yaw">携帯電話に顔を向けてください。</string>
<string name="identity_aliyun_is_moving">顔をはっきりさせてください。</string>
<string name="identity_aliyun_bad_brightness">顔を明るくしてください。</string>
<string name="identity_aliyun_bad_quality">姿勢を調整してください。</string>
<string name="identity_aliyun_bad_eye_openness">携帯電話に顔を向けてください。</string>
<string name="identity_aliyun_blink_openness">まぶたを閉じてください。</string>
<string name="identity_aliyun_stack_time">じっとしてください。</string>
<string name="identity_aliyun_is_blur">顔をはっきりさせてください。</string>
<string name="identity_aliyun_face_init_text">携帯電話に顔を向けてください。</string>
<string name="identity_aliyun_face_comm_tips_text">携帯電話を持ち上げて、まぶたを閉じてください。</string>
<string name="identity_aliyun_zface_processing">処理中</string>
<string name="identity_message_box_title_not_support">現在のシステムは顔認証をサポートしていません。</string>
<string name="identity_message_box_message_not_support">システムの上位バージョンのみが顔認証をサポートしています。</string>
<string name="identity_message_box_title_no_camera_permission">権限が不十分です。</string>
<string name="identity_message_box_message_no_camera_permission">アプリにカメラの権限が付与されていることを確認してください。</string>
<string name="identity_message_box_title_operation_time_out">操作がタイムアウトしました。</string>
<string name="identity_message_box_title_network">ネットワークの状態が要件を満たしていません。</string>
<string name="identity_message_box_message_network">ネットワーク接続を確認してください。</string>
<string name="identity_message_box_title_sys_error">操作に失敗しました。</string>
<string name="identity_message_box_message_sys_error">システム エラーが発生しました。 もう一度お試しください。</string>
<string name="identity_message_box_title_exit_tip">終了してもよろしいですか?</string>
<string name="identity_message_box_message_exit_tip">顔を見せるだけで済みます。</string>
<string name="identity_message_box_btn_ok_tip">OK</string>
<string name="identity_message_box_btn_cancel_tip">キャンセル</string>
<string name="identity_message_box_title_retry_face_scan">操作がタイムアウトしました。</string>
<string name="identity_message_box_message_retry_face_scan">携帯電話に顔を向けて、顔をスキャンしやすくしてください。</string>
<string name="identity_message_box_btn_retry_ok">もう一度お試しください。</string>
<string name="identity_message_box_title_retry_face_scan_time_out">操作に失敗しました。</string>
<string name="identity_message_box_message_retry_face_scan_time_out">顔認証の失敗回数が上限を超えています。 後でもう一度お試しください。</string>
<string name="identity_message_box_message_btn_retry_ok_time_out">OK。</string>
 <string name="identity_ocr_alert_net_message_error">ネットワークの状態が要件を満たしていません。 もう一度お試しください。</string>
 <string name="identity_ocr_alert_retry_text">再試行</string>
 <string name="identity_ocr_alert_exit_text">終了</string>
 <string name="identity_final_handleing">検証中</string>

付録 2

Android 言語コード

次の表に、いくつかの Android 言語コードを参考までに示します。

言語

言語フォルダ名

言語コード

アフリカーンス語 (南アフリカ)
アルバニア語 (アルバニア)
アラビア語 (アルジェリア)
アラビア語 (バーレーン)
アラビア語 (エジプト)
アラビア語 (イラク)
アラビア語 (ヨルダン)
アラビア語 (クウェート)
アラビア語 (レバノン)
アラビア語 (リビア)
アラビア語 (モロッコ)
アラビア語 (オマーン)
アラビア語 (カタール)
バスク語 (スペイン)
ベラルーシ語 (ベラルーシ)
ブルガリア語 (ブルガリア)
カタロニア語 (スペイン)
簡体字中国語 (中国本土)
繁体字中国語 (香港、中国)
繁体字中国語 (台湾、中国)
中国語 (マカオ、中国)
中国語 (シンガポール)
クロアチア語 (クロアチア)
チェコ語 (チェコ共和国)
デンマーク語 (デンマーク)
ディベヒ語 (モルディブ)
オランダ語 (ベルギー)
オランダ語 (オランダ)
英語 (オーストラリア)
英語 (カナダ)
英語 (南アフリカ)
英語 (フィリピン)
英語 (ニュージーランド)
英語 (英国)
英語 (米国)
フィンランド語 (フィンランド)
フランス語 (フランス)
フランス語 (ベルギー)
フランス語 (モナコ)
フランス語 (スイス)
ガリシア語 (スペイン)
グルジア語 (グルジア)
ドイツ語 (ドイツ)
ドイツ語 (ルクセンブルク)
ドイツ語 (スイス)
ギリシャ語 (ギリシャ)
グジャラート語 (インド)
ヘブライ語 (イスラエル)
ヒンディー語 (インド)
ハンガリー語 (ハンガリー)
アイスランド語 (アイスランド)
イタリア語 (イタリア)
日本語 (日本)
カザフ語 (カザフスタン)
カンナダ語 (インド)
韓国語 (大韓民国)
ラトビア語 (ラトビア)
リトアニア語 (リトアニア)
マレー語 (ブルネイ ダルサラーム)
マレー語 (マレーシア)
マラーティー語 (インド)
モンゴル語 (モンゴル)
ノルウェー語 (ノルウェー)
ポーランド語 (ポーランド)
ポルトガル語 (ブラジル)
ポルトガル語 (ポルトガル)
ルーマニア語 (ルーマニア)
サンスクリット語 (インド)
ロシア語 (ロシア)
スロバキア語 (スロバキア)
スペイン語 (アルゼンチン)
スペイン語 (スペイン)
スウェーデン語 (スウェーデン)
タイ語 (タイ)
トルコ語 (トルコ)
ウクライナ語 (ウクライナ)
ウルドゥー語 (パキスタン)
ベトナム語 (ベトナム)

values-af-rZA
values-sq-rAL
values-ar-rDZ
values-ar-rBH
values-ar-rEG
values-ar-rIQ
values-ar-rJO
values-ar-rKW
values-ar-rLB
values-ar-rLY
values-ar-rMA
values-ar-rOM
values-ar-rQA
values-eu-rES
values-be-rBY
values-bg-rBG
values-ca-rES
values-zh-rCN
values-zh-rHK
values-zh-rTW
values-zh-rMO
values-zh-rSG
values-hr-rHR
values-cs-rCZ
values-da-rDK
values-div-rMV
values-nl-rBE
values-nl-rNL
values-en-rAU
values-en-rCA
values-en-rZA
values-en-rPH
values-en-rNZ
values-en-rGB
values-en-rUS
values-fi-rFI
values-fr-rFR
values-fr-rBE
values-fr-rMC
values-fr-rCH
values-gl-rES
values-ka-rGE
values-de-rDE
values-de-rLU
values-de-rCH
values-el-rGR
values-gu-rIN
values-he-rIL
values-hi-rIN
values-hu-rHU
values-is-rIS
values-it-rIT
values-ja-rJP
values-kk-rKZ
values-kn-rIN
values-ko-rKR
values-lv-rLV
values-lt-rLT
values-ms-rBN
values-ms-rMY
values-mr-rIN
values-mn-rMN
values-nn-rNO
values-pl-rPL
values-pt-rBR
values-pt-rPT
values-ro-rRO
values-sa-rIN
values-ru-rRU
values-sk-rSK
values-es-rAR
values-es-rES
values-sv-rSE
values-th-rTH
values-tr-rTR
values-uk-rUA
values-ur-rPK
values-vi-rVN

af-ZA
sq-AL
ar-DZ
ar-BH
ar-EG
ar-IQ
ar-JO
ar-KW
ar-LB
ar-LY
ar-MA
ar-OM
ar-QA
eu-ES
be-BY
bg-BG
ca-ES
zh-CN
zh-HK
zh-TW
zh-MO
zh-SG
hr-HR
cs-CZ
da-DK
div-MV
nl-BE
nl-NL
en-AU
en-CA
en-ZA
en-PH
en-NZ
en-GB
en-US
fi-FI
fr-FR
fr-BE
fr-MC
fr-CH
gl-ES
ka-GE
de-DE
de-LU
de-CH
el-GR
gu-IN
he-IL
hi-IN
hu-HU
is-IS
it-IT
ja-JP
kk-KZ
kn-IN
ko-KR
lv-LV
lt-LT
ms-BN
ms-MY
mr-IN
mn-MN
nn-NO
pl-PL
pt-BR
pt-PT
ro-RO
sa-IN
ru-RU
sk-SK
es-AR
es-ES
sv-SE
th-TH
tr-TR
uk-UA
ur-PK
vi-VN