身元確認は、ビジネス アプリケーションに電子的な顧客確認 (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 のダウンロードと設定
Android 用 SDK をダウンロードします。 SDK は標準の Android アーカイブ (AAR) パッケージで構成されています。
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
戻り値: なし。
言語の追加
カスタム言語を追加するには、次の手順を実行します。
身元確認クライアント SDK を統合するアプリ プロジェクトを開きます。
アプリ プロジェクトにカスタム言語のフォルダと string.xml ファイルを作成します。 この例では、ロシア語が追加されています。 メイン モジュールのプロジェクトに values-ru-rRU フォルダを作成し、フォルダに string.xml ファイルを作成します。
string.xml ファイルの文字列を使用する言語に翻訳します。 詳細については、[付録 1] を参照してください。
コードでカスタム言語を指定します。 形式: 言語 - 国。 次のサンプル コードでは、ロシア語が追加されています。
エラー コード
エラー コード | 課金対象 | 説明 |
1000 | はい | お客様は顔認証プロセスを完了し、認証結果は成功でした。この結果は参考用です。 CheckResult オペレーションを呼び出して最終的な認証結果を取得し、次の手順に進むことができます。 |
1001 | はい | お客様は顔認証プロセスを完了しましたが、認証結果は失敗でした。この結果は参考用です。 CheckResult オペレーションを呼び出して、最終的な認証結果と失敗の詳しい原因を取得し、次の手順に進んでください。 |
1002 | いいえ | システム エラーが発生しました。 |
1003 | いいえ | SDK を初期化できませんでした。 クライアント時刻が有効かどうかを確認してください。 |
1004 | いいえ | カメラ エラーが発生しました。 エラーを修正するには、次の操作を実行します。
|
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 言語コードを参考までに示します。
言語 | 言語フォルダ名 | 言語コード |
|
|
|