H5静默活体
Android SDK 集成
集成步骤
在工程目录的build.gradle中增加
allprojects { repositories { maven { url 'https://maven.accuauth.com/repository/maven-releases/' // If your gradle version is greater than 7.0, you need to add the following configuration to allow pulling aar via http allowInsecureProtocol = true } google() jcenter() } }
在app的build.gradle中增加如下依赖
implementation 'com.dfsdk.liveness:web-liveness-silent-sdk:1.0.0@aar' implementation 'com.google.code.gson:gson:2.10.1'
启动检测
在工程中增加如下代码
Intent intent = new Intent(MainActivity.this, LivenessH5Activity.class);
Bundle bundle = new Bundle();
// 设置使用的国家
bundle.putString(LivenessH5Activity.KEY_EXTRA_REGION, RegionEnum.INDIA.getCountry());
// 设置活体显示的语言
bundle.putString(LivenessH5Activity.KEY_EXTRA_LANGUAGE, LanguageEnum.EN.getLan());
intent.putExtras(bundle);
startActivityForResult(intent, 100);
获取结果
通过以下代码可以获取结果。
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (resultCode == RESULT_OK) {
// 采集图片image_id,可以传递给后端防hack接口。
String imageId = data.getStringExtra(KEY_EXTRA_RESULT);
// 采集图片,jpeg格式
byte[] imageJpeg = data.getByteArrayExtra(KEY_EXTRA_IMAGE);
Bitmap bmp = BitmapFactory.decodeByteArray(imageJpeg, 0, imageJpeg.length);
imageView.setImageBitmap(bmp);
doLiveness(imageId);
}
super.onActivityResult(requestCode, resultCode, data);
}
Demo下载地址
https://sdk.india.accuauth.in/SilentLivenessH5Demo.zip
混淆设置
-dontwarn android.webkit.WebView
-dontwarn android.net.http.SslError
-dontwarn android.webkit.WebViewClient
-keep public class android.webkit.WebView
-keep public class android.net.http.SslError
-keep public class android.webkit.WebViewClient
兼容性
当前仅仅支持Android 7.0以上的机型
Web H5 集成
集成步骤
H5 地址
https://sdk.${country}.accuauth.in/silent-liveness-h5/index.html#
country 取值说明
取值 | 支持地区 |
---|---|
india | 印度 |
mexico | 墨西哥、秘鲁、哥伦比亚、智利 |
thailand | 中国、泰国、越南、印度尼西亚、菲利宾、巴基斯坦、埃及、缅甸、孟加拉、尼日利亚、加纳 |
启动检测
// 在H5加载完成后调用
const iframe = document.getElementById('iframe')
if (!iframe.addEventListener) {
iframe.attachEvent('onload', iframeLoad)
}
iframe.addEventListener('load', iframeLoad, true)
function iframeLoad() {
// obj 的结构请参考API接口中 set_param 参数说明
const obj = { language: "en", region: "india" }
iframe.contentWindow.postMessage({ code: 200, info: JSON.stringify(obj) }, '*')
}
// H5结束后会调用,获取结果
addEvent(window, 'message', function (e) {
const data = e.data
if (data.code === 200) {
// data.info 的结构请参考API接口中 callbackObj.onMessage 参数说明
// 请注意,imageId 可以直接传递给后端的'/face/liveness_anti_hack'接口
// '/face/liveness_anti_hack'接口host区域需同set_param中的region相同
}
})
function addEvent(obj, trigger, fun) {
if (obj.addEventListener) obj.addEventListener(trigger, fun, false);
else if (obj.attachEvent) obj.attachEvent('on' + trigger, fun);
else obj['on' + trigger] = fun;
}
API接口
set_param(json_str)
H5参数设置
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
json_str | 是 | string | json 字符串,详见示例 |
language 取值说明
检测界面显示的语言类型
取值 | 描述 |
---|---|
zh | 汉语 |
en | 英语 |
arEG | 阿拉伯语(埃及) |
esCO | 西班牙语(哥伦比亚) |
esMX | 西班牙语(墨西哥) |
th | 泰语 |
urPK | 乌都语 |
vi | 越南语 |
id | 印度尼西亚语 |
bnBD | 孟加拉语 |
region 取值说明
防hack接口对应的地区
取值 | 描述 |
---|---|
cn | 中国 |
india | 印度 |
mexico | 墨西哥 |
peru | 秘鲁 |
colombia | 哥伦比亚 |
chile | 智利 |
thailand | 泰国 |
vietnam | 越南 |
indonesia | 印度尼西亚 |
philippine | 菲利宾 |
pakistan | 巴基斯坦 |
egypt | 埃及 |
myanmar | 缅甸 |
bengal | 孟加拉 |
nigeria | 尼日利亚 |
ghana | 加纳 |
callbackObj.onMessage(imageId, base64, length)
H5设置参数
参数 | 说明 |
---|---|
imageId | 图片的imageId,请注意, 此值可以直接传递给后端的'/face/liveness_anti_hack'接口 |
base64 | 图片的base64字符串,图片为png格式 |
length | 图片的base64字符串的长度 |