日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Android意愿認證接入

金融級實人認證服務提供Android客戶端SDK,幫助您在業(yè)務應用(App)中實現(xiàn)刷臉認證功能。本文結(jié)合示例代碼介紹Android客戶端的接入流程。

使用限制

Android SDK使用限制如下:

  • 不支持模擬器模式調(diào)試。
  • 僅支持Android 5.0及以上系統(tǒng)版本的移動智能設備(手機或Pad)接入。

權(quán)限說明

Android SDK權(quán)限說明如下:
權(quán)限是否必須說明
android.permission.INTERNET聯(lián)網(wǎng)權(quán)限。Android SDK需要聯(lián)網(wǎng)才能使用。
android.permission.ACCESS_NETWORK_STATE
android.permission.CAMERA攝像頭權(quán)限。該權(quán)限在Android 6.0及以上版本需動態(tài)獲取。
android.permission.RECORD_AUDIO錄音權(quán)限。該權(quán)限在Android 6.0及以上版本需動態(tài)獲取。
android.permission.FOREGROUND_SERVICE前臺服務權(quán)限,用于錄屏功能。

依賴配置

下載Android SDK,該SDK為Android標準AAR包。

下載完畢之后解壓,將Android SDK文件夾中的所有aar文件拷貝到主工程模塊下的libs目錄中(具體以工程實際配置為準),并在模塊對應的build.gradle文件中添加如下依賴:

// 阿里云實人認證服務SDK AAR,fileTree 方式依賴指定目錄
implementation(fileTree(dir: "libs", includes: ["*.aar"]))

// 阿里云實人認證服務三方依賴庫,不能省略
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'com.squareup.okio:okio:1.14.0'
implementation 'com.alibaba:fastjson:1.2.83_noneautotype'

接口說明

Android SDK包含初始化SDK(install)、獲取MetaInfos(getMetaInfos)和開始認證(verify)3個接口。

初始化SDK

  • 描述:調(diào)用該函數(shù)完成SDK內(nèi)部初始化。請務必做延遲初始化配置,確保在用戶同意《隱私權(quán)政策》后,在人臉識別業(yè)務場景中初始化SDK。

  • 函數(shù)原型:

    public static void install(Context context);

    IPv6網(wǎng)絡初始化,示例代碼如下:

    public static int installIPv6(Context context) 
  • 參數(shù)說明:

    名稱

    類型

    說明

    context

    Context

    當前Application的context。

  • 返回值:無。

獲取MetaInfos

  • 描述:移動端環(huán)境信息發(fā)送至業(yè)務服務器端,業(yè)務服務器端將這些信息作為參數(shù)之一(MetaInfos)調(diào)用服務端初始化認證接口(InitFaceVerify),從而獲取CertifyId,用于后續(xù)認證環(huán)節(jié)。

  • 函數(shù)原型:

    public static String getMetaInfos(Context context);
  • 參數(shù)說明:

    名稱

    類型

    說明

    context

    Context

    當前Application的context。

  • 返回值:String類型,以JSON格式返回當前移動設備端的環(huán)境信息。返回值示例如下:

    {
        "apdidToken": "xxxx",
        "appName": "com.aliyun.facedemo",
        "appVersion": "1.2.8",
        "bioMetaInfo": "6.7.0:21478612992,0",
        "deviceModel": "Mi 10",
        "deviceType": "android",
        "osVersion": "12",
        "sdkVersion": "2.1.0",
        "securityVersion": "2",
        "voiceSdkVersion": "1.0.0",
        "zimVer": "1.0.0"
    }

開始認證

  • 描述:調(diào)用該函數(shù)發(fā)起實人認證。

  • 函數(shù)原型:

    public void verify(final String certifyId, boolean useMsgBox,
                       HashMap<String, String> extParams,
                       ZIMCallback callback);
  • 參數(shù)說明:
    參數(shù)類型說明
    certifyIdString從服務端初始化認證接口(InitFaceVerify)獲取的CertifyId。
    說明 每個CertifyId只能調(diào)用一次verify函數(shù),每次調(diào)用verify函數(shù)之前務必重新獲取CertifyId。
    useMsgBoxboolean當刷臉認證過程中出現(xiàn)異常情況,是否使用SDK內(nèi)部的彈框提示。取值:
    • true:SDK先彈框提示,確定之后,返回錯誤code。
    • false:不彈提示框,直接返回錯誤code,客戶業(yè)務應用App自行決定如何提示。
    extParamsHashMap<String, String>暫不支持擴展參數(shù),傳NULL即可。
    callbackZIMCallback認證結(jié)果的回調(diào)接口,定義如下:
    public interface ZIMCallback {
     boolean response(ZIMResponse response);
    }
    ZIMResponse類的定義,詳情請參見認證結(jié)果及錯誤碼
  • 返回值:無。

認證結(jié)果及錯誤碼

認證結(jié)果通過ZIMResponse類返回,定義如下:

public class ZIMResponse {
    /**
     * 返回結(jié)果編碼
     */
    public int code;

    /**
     * 返回結(jié)果原因信息
     */
    public String reason;

    // ......
}

錯誤碼

是否計費

錯誤碼文案

錯誤碼描述

1000

刷臉成功

用戶完成了刷臉過程,認證建議結(jié)果為通過。該結(jié)果僅供參考,可通過調(diào)用服務端DescribeFaceVerify接口獲取最終認證結(jié)果。

1001

系統(tǒng)錯誤

表示系統(tǒng)錯誤。

1003

驗證中斷

表示驗證中斷。

2002

網(wǎng)絡錯誤

表示網(wǎng)絡錯誤。

2003

客戶端設備時間錯誤

表示客戶端設備時間錯誤。

2006

刷臉失敗

用戶完成了刷臉過程,認證建議結(jié)果為未通過。該結(jié)果僅供參考,可通過調(diào)用服務端DescribeFaceVerify接口獲取最終認證結(jié)果以及未通過的詳細原因。

說明

更多錯誤碼信息,請參見金融級Android客戶端錯誤碼詳情

接口混淆配置

為避免接口被混淆而造成功能異常,您需要在App工程的proguard-rules.pro文件中添加如下配置信息:

# 必須要依賴到應用混淆中
-keepclassmembers,allowobfuscation class * {
     @com.alibaba.fastjson.annotation.JSONField <fields>;
}
-keep class net.security.device.api.** {*;}
-keep class face.security.device.api.** {*;}
-keep class com.alipay.deviceid.** { *; }
-keep class org.json.** { *;}
-keep class com.alibaba.fastjson.** {*;}

# SDK混淆配置
-keep class com.alipay.face.api.** {*;}
-keep class com.alipay.zoloz.toyger.**{*;}
-keep class com.dtf.face.api.** {*;}
-keep class com.dtf.face.ocr.verify.DTFOcrFacade { *; }
-keep class com.dtf.face.verify.** {*;}
-keep class com.dtf.face.network.model.** {*;}
-keep class com.dtf.face.network.APICallback {*;}
-keep class com.dtf.face.config.**{*;}
-keep class com.dtf.face.log.** {*;}
-keep class com.dtf.face.ui.overlay.** {*;}
-keep class com.dtf.face.ui.widget.ToygerWebView {*;}
-keep class com.dtf.face.utils.ClientConfigUtil{
   boolean needUploadPreviewTrace*();
   boolean needVideoExDegrade*();
   boolean isCfgVideoExDevice*();
}
-keep class com.dtf.toyger.base.** {*;}
-keep class com.dtf.face.network.mpass.biz.model.** { *; }
-keep class com.dtf.face.utils.LogUtils { *; }
-keep class com.dtf.wish.api.** { *; }
-keep class com.dtf.wish.ui.** { *; }
-keep class com.dtf.wish.ui.WishFragment{*;}
-keep class com.dtf.voice.api.** { *; }
-keep class xnn.* { *; }
-keep class facadeverify.** { *; }
-keep class baseverify.** { *; }
-keep class faceverify.** { *; }
-keep class ocrverify.** { *; }
-keep class wishverify.** { *; }

# R8編譯混淆配置
-keep class com.dtf.face.ui.toyger.FaceLoadingFragment{ *; }
-keep class com.dtf.face.ui.toyger.FaceShowFragment{*;}
-keep class com.dtf.face.ui.toyger.FaceShowElderlyFragment{*;}
-keepclassmembers class com.dtf.face.camera.ICameraCallback{
   void onPreviewFrame*(*);
}

# NFC編譯配置
-keep class com.dtf.face.nfc.verify.DTFNfcFacade { *; }
-keep class com.eidlink.**{*;}
-keep class net.sf.**{*;}
-keep class org.**{*;}
-keep class cn.**{*;}
-keep class com.froad.**{*;}
-keep class com.huawei.**{*;}
-keep class com.eidlink.**{*;}
-keep class org.ejbca.cvc.**{*;}
-keep class org.jmrtd.**{*;}
-keep public class com.netease.nis.sdkwrapper.Utils {public <methods>;}
-keep class net.sf.scuba.**{*;}
-keep class org.eid_bc.bouncycastle.jcajce.provider.symmetric.**{*;}

示例代碼


public class MainActivity extends Activity {

    private String certifyId = "xxx";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Context ctx = getApplicationContext();

        // 初始化SDK
        ZIMFacade.install(ctx);

        // 獲取MetaInfos
        String metaInfos = ZIMFacade.getMetaInfos(ctx);

        // 將MetaInfos發(fā)送到App服務器端,調(diào)用云端InitFaceVerify接口獲取CertifyId。
        // certifyId = getCertifyIdFromServer(metaInfo); // 需客戶自己實現(xiàn)

        HashMap<String, String> params = new HashMap<>();
        // extParams取值示例
        params.put("ext_params_key_use_video", "false");

        // 開始驗證
        ZIMFacade zimFacade = ZIMFacadeBuilder.create(ctx);
        zimFacade.verify(certifyId, true, params, new ZIMCallback() {
            @Override
            public boolean response(ZIMResponse response) {
                switch (response.code) {
                    case 1000:
                        Log.d("AliyunFace", "認證成功");
                        break;
                    case 1001:
                        Log.e("AliyunFace", "系統(tǒng)錯誤");
                        break;
                    case 1003:
                        Log.e("AliyunFace", "驗證中斷");
                        break;
                    case 2002:
                        Log.e("AliyunFace", "網(wǎng)絡錯誤");
                        break;
                    case 2003:
                        Log.e("AliyunFace", "客戶端設備時間錯誤");
                        break;
                    case 2006:
                        Log.e("AliyunFace", "刷臉失敗");
                        break;
                    default:
                        Log.e("AliyunFace", "未知錯誤");
                        break;
                }
                return true;
            }
        });
    }
}

Demo代碼包

您可以下載Android Demo代碼包進行體驗。

SDK包大小裁剪說明

更多說明,請參見SDK包裁剪說明