本文介绍人脸保镖方案的Android端接入流程。
使用须知
为帮助落实针对您产品集成第三方SDK情况所应履行的隐私合规义务,降低隐私违规风险,进而实现您产品合规运营的业务目标,请您务必确保选用阿里云文档中心官网发布的最新版本产品。在使用人脸保镖前,请您务必仔细了解个人信息处理规定及《SDK隐私权政策》。
人脸保镖单独集成方案的应用,依赖业务侧具备成熟的人脸识别算法和风险策略运营体系。建议您可以先和商务经理沟通评估业务场景匹配程度。
Android SDK使用限制如下:
不支持模拟器模式调试。
仅支持Android 4.4及以上系统版本的移动智能设备(手机或Pad)接入。
目前支持 arm、armv7 和 arm64 三个架构。
接入步骤
前期准备
接入前需要进行权限配置和SDK依赖配置,您可以参考下面的步骤操作。
权限说明
依赖配置
接口混淆配置(重要)
调用SDK
前期准备完成后,可按照下面三个步骤完成客户端接入。
初始化(initWithOptions)
SDK 内部初始化,在 App 启动的时候,您需要尽可能早地调用该函数 。
public class CustomApplication extends Application {
private static String ALIYUN_APPKEY = "123e4567e89b12d3a45642661417****";
@Override
public void onCreate() {
super.onCreate();
// 初始化人脸保镖SDK,initWithOptions接口需要在APP启动尽可能早的时候调用。
Map<String, String> options = new HashMap<>();
options.put("IPv6", "0"); // 设置为IPv4
FaceSecDevice.getInstance().initWithOptions(Context ctx,
String appKey,
Map<String, String> options,
FaceSecInitListener securityInitListener);
// 上方代码为了说明参数,实际使用时可使用下方代码。
//FaceSecDevice.getInstance().initWithOptions(this, ALIYUN_APPKEY, null, null);
}
}
参数说明:
ctx:当前 Application Context,或 Activity Context。
appKey:用于标识用户身份,阿里云分配的AppKey,请联系商务经理获取。
重要人脸保镖单独集成方案的应用,依赖业务侧具备成熟的人脸识别算法和风险策略运营体系。建议您可以先和商务经理沟通评估业务场景匹配程度。
options:信息采集可选项,默认可以为null。可选参数如下:
字段名
说明
示例
IPv6
是否使用IPv6域名上报设备信息。
0(默认):使用IPv4域名。
1:使用IPv6域名。
1
securityInitListener:初始化回调监听接口,可在回调中判断初始化是否成功, 默认可以传入null。
获取客户端Token(getDeviceToken)
获取客户端 token,并上报到业务自己的服务器,后续通过服务器端查询阿里云人脸保镖接口(DescribeFaceGuardRisk),从而获取客户端设备的风险识别信息。
getDeviceToken 接口相对比较耗时,请务必在 APP 非主线程上调用,否则可能会引起 ANR 而导致 APP Crash。
因为数据上报可能存在延迟,请确保 SDK 的 initWithOptions 接口和 getDeviceToken 接口调用时间间隔2秒以上。
调用 getDeviceToken 时建议传入 bizID,可以将本次 token 和业务唯一认证 ID 绑定,后在服务端查询结果时将ID一起传入,可进行防止Token被篡改的校验。
new Thread() {
@Override
public void run() {
// 推荐传入bizID,防止deviceToken被篡改。
String bizID = "1234567890abcdef1234567890ab****";
FaceSecToken deviceToken = FaceSecToken.getInstance().getDeviceToken(bizID);
if(null != deviceToken){
if(FaceSecCode.SC_SUCCESS == deviceToken.code){
Log.d("AliyunFace", "token: " + deviceToken.token);
} else {
Log.e("AliyunFace", "getDeviceToken error, code: " + deviceToken.code);
}
} else {
Log.e("AliyunFace", "getDeviceToken is null.");
}
}
}.start();
参数:
bizID:客户的业务ID,可用于关联业务ID和token。默认情况可以不传。
返回值:
FaceSecToken 类型,定义如下:
public class FaceSecToken { // 接口调用状态码 public int code; // 用于服务器端查询结果的token字符串。 public String token; }
code:返回接口调用状态码,可用于判断接口调用是否成功。
token:返回 token 字符串信息,可用于业务后续查询阿里云人脸保镖接口。
重要token 字符串在网络环境良好的场景下,长度为 600 字节左右;在网络环境较差的场景下,返回的长度在 2.5K 左右。
如果业务上出现了大量的长 token,首先请确保客户端的网络是畅通的;其次,请确保 SDK 的 initWithOptions 接口和 getDeviceToken 接口调用间隔在 2 秒以上。
携带Token请求服务端
成功获取deviceToken(FaceSecToken.token)后,可携带此参数请求业务服务器,由服务端查询并校验结果。具体操作,请参见服务端API接口。