ID Verification Android SDK を統合して、アプリに eKYC のリモート本人確認を追加します。サーバーサイドの Initialize API からトランザクション ID を取得し、SDK に渡して本人確認を開始します。
制限事項
Android 4.3 以降のスマートフォンとタブレットに対応しています。
x86 デバイスには対応していません。
必要な権限
SDK は、ランタイムに次の権限を必要とします。
権限 | 必須 | 説明 |
android.permission.INTERNET | はい | ネットワークにアクセスするために必要です。 |
android.permission.ACCESS_NETWORK_STATE | いいえ (推奨します) | |
android.permission.CAMERA | はい | 顔スキャンに必要です。Android 6.0 以降では動的な権限が必要です。 |
android.permission.WRITE_EXTERNAL_STORAGE | いいえ |
|
SDK のダウンロードと設定
クライアント SDK リリースノートから AAR パッケージをダウンロードします。また、Android Demo をダウンロードして機能を試すこともできます。
AAR ファイルをプロジェクトの libs ディレクトリに展開し、これらの依存関係を build.gradle に追加します。
dependencies { // SDK モジュール 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-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 が正常に機能しないことがあります。
tygerservice-xxx.aar はバージョン 1.3.4 で削除されました。
idv-identitymouth-sdk-xxx.aar はバージョン 1.3.6 で追加されました。
API リファレンス
SDK は、install、getMetaInfo、verify の 3 つの API を提供します。各 API の詳細は、以下で説明します。
SDK の初期化 (インストール)
関数プロトタイプ
public void install(Context context); public void install(Context context,Map<String, String> options);パラメーター
context :アプリケーションのコンテキスト。
options パラメーターは、デフォルトでは
nullで、オプションのデータ収集設定を指定します。重要ID Verification クライアントには、デバイスヘルパーとして知られるセキュリティモジュールが組み込まれています。デバイスヘルパーは、現地のデータ収集コンプライアンス要件を満たすために、さまざまなデータ報告リージョンを提供します。ユーザーの属性に基づいて、
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マレーシア (クアラルンプール):
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」をご参照ください。
戻り値:なし。
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)
verify を呼び出す前に、MetaInfo をサーバーに渡し、Initialize API からトランザクション ID を取得します。
新しいバージョンでは protocol フィールドが返されます。これを extParams で渡してください。
関数のプロトタイプ
public void verify(String transactionId, Map<String, String> extParams, IdentityCallback callback);パラメーター
名前
型
説明
transactionId
String
サーバーサイドの Initialize API から取得した transactionId。
重要各トランザクション ID は 1 回限りです。verify を呼び出すたびに新しい ID を取得してください。
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 の設定説明
キー
説明
例 (String 型)
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 はモバイルデバイスのシステム言語を使用します。
説明サポートされている言語の一覧については、「Android および iOS SDK の言語のカスタマイズ」をご参照ください。
zh-Hans
IdentityParams.CloseButtonLayout
閉じるボタンのレイアウト:
left (デフォルト):左側
right:右側
left
IdentityParams.WaterMark
OCR 成功後に表示されるウォーターマークテキスト。
Test watermark text
IdentityParams.Protocol
サーバーサイドの Initialize API レスポンスからのプロトコル文字列。
説明サーバーサイドの Initialize API レスポンスから protocol 値を渡すと、内部 API 呼び出しが削減され、パフォーマンスが向上します。
None
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
Initialize API のレスポンスが空。
A1003_2
Initialize API のレスポンス形式が無効。
A1003_3
Initialize API の接続に失敗。
A1003_4
Initialize API のレスポンスの復号に失敗。
A1003_5
Initialize API の呼び出しに失敗 (コードが 200 でないか、BizCode が CODE_INIT_SUCCESS ではありません)。
A1003_6
Initialize API の OSS 設定が空。
A1003_7
Context パラメーターが null。
A1003_8
Protocol パラメーターが null。
1004
いいえ
A1004_1
フロントカメラのエラー。
A1004_2
カメラのオープンに失敗。
A1004_3
リアカメラのエラー。
1005
いいえ
A1005_1
初期化中のネットワークエラー。
A1005_2
検証中のネットワークエラー。
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);
/**
* メタ情報をアプリサーバーに送信します。 クラウド側の Initialize API を呼び出してトランザクション ID を取得します。
* 新しいバージョンではプロトコルデータが返されます。
*/
// 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,
"Verification passed", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MainActivity.this,
"Verification failed([" + 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 | 顔のライブネス検出、顔の品質、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 | ||