本文档介绍了阿里云设备指纹Android和iOS SDK接入流程。

Android版SDK接入

准备事项:

以下是Android版SDK接入的操作步骤。

  1. 在Android Studio,新建一个Android工程,按照向导新建即可。 建好以后工程目录如下图所示。新建Android工程
  2. 将yunceng.jar复制到libs目录(可拖拽到libs目录下)。
    1. 在Android Studio工程中,选择File > Project Structure > app > Dependencies选择目录
    2. 单击+图标,选择jardependency添加yunceng.jar。
    3. 单击OK,完成添加。
  3. 添加so文件。
    src > main目录下,新建jniLibs目录,将so文件复制到jniLibs目录下。
  4. 设置访问权限。设置访问权限
  5. strings.xml里增加appKey配置,请直接使用如下示例中的appkey。
    <string name="appkey">P67IjMMtHkrWYWM2972jZqowIDkoFTI0gFMYrWTfeDHgVtDJaYXoZfj1wpPD4K_s_udF40+spePCA1TtngyLB2J3Fq5Ew6f0CwEMefkvzcBLJULzMNj61la2lFBVCqjsANdHTQRp-i6H2AtjPGACLQVA8ru9afDc5jInGd-nXfRAsv2U3326h-_WFBsgDfXagMOHMBVbRqH6a2SRExRoepmEI8-juyzP42QopmmA9heH96n7btz1jywGZmP5_VH9P5uh8T1Ex7smsg12DN5OwUrAkp7UJ5nXeO-adbuCqEDpaFXB9aVko6W3tb5ml5tEoyL7Ri2LAn8LPkUGIRlGzrcLFztIzp-WmgNWrANazqH2d4auQL_XVx09Z4E2fEjyEPKoVoGyFu_V454dmxM6sR0Y-pCANZZV6B</string>            
  6. 初始化SDK。
    int ret = 0;
    //其中userAccountId是用户账号id,或者账号hash值。该字段非必校验,如无账户id,可设为"default"。
    ret = YunCeng.initEx(getResources().getString(R.string.appkey), userAccountId);
    //返回值为0表示成功
    if (0 != ret) {
        msg_show.setText("sdk initfailed " + Integer.toString(ret));
        return;
    }
    msg_show.setText("sdk initsuccess ");        
  7. 获取deviceToken。
    注意事项:
    • SDK初始化后需要经过一段时间计算才能获取到deviceToken,建议间隔3秒以上;
    • deviceToken短期有效,不能长期缓存使用,不能作为设备唯一标识。
    请参考如下示例代码:
    StringBuffer deviceToken = new StringBuffer();
    int ret = YunCeng.GetSession(deviceToken);
    if (ret != 0){
        //获取deviceToken失败,可重试
    }             
  8. ProGuard。
    如果使用ProGuard进行混淆,需要在ProGuard配置文件中添加-keep class com.aliyun.security.yunceng.** {*;}
  9. 异步化。
    //异步初始化SDK
    public void initCallback() {
    String appKey = getResources().getString(R.string.appkey);
        YunCeng.initExWithCallback(appKey, "default", new YunCengInitExListener(){
            @Override
            public void OnInitExFinished(int ret) {
                Log.d("session_sventest", "initExWithCallback result is: " + ret);
            }
        });
    }
    //异步获取deviceToken
    public void getDeviceTokenCallback() {
        YunCeng.GetSessionWithCallback(new YunCengGetSessionListener() {
            @Override
            public void OnGetSessionFinished(String session) {
                Log.d("session_sventest", "GetSessionWithCallback result is: " + session);
            }
        });
    }

iOS版SDK接入

  1. 打开xcode,新建工程yxd_sdk_test,选择Single View Application 新建完成后,请确定工程可以正常运行。
  2. 下载设备安全SDK,复制YunCeng.frameworkyxd_sdk_test工程目录下。复制YunCeng.framework到yxd_sdk_test工程目录下
  3. 选择工程配置,修改Build Phases > Link Binary With Libraries,添加YunCeng.framework及其他依赖framework。添加YunCeng.framework及其他依赖framework
  4. 修改ViewController.m,初始化SDK。
    // 初始化
    const char appkey[]="P67IjMMtHkrWYWM2972jZqowIDkoFTI0gFMYrWTfeDHgVtDJaYXoZfj1wpPD4K_s_udF40+spePCA1TtngyLB2J3Fq5Ew6f0CwEMefkvzcBLJULzMNj61la2lFBVCqjsANdHTQRp-i6H2AtjPGACLQVA8ru9afDc5jInGd-nXfRAsv2U3326h-_WFBsgDfXagMOHMBVbRqH6a2SRExRoepmEI8-juyzP42QopmmA9heH96n7btz1jywGZmP5_VH9P5uh8T1Ex7smsg12DN5OwUrAkp7UJ5nXeO-adbuCqEDpaFXB9aVko6W3tb5ml5tEoyL7Ri2LAn8LPkUGIRlGzrcLFztIzp-WmgNWrANazqH2d4auQL_XVx09Z4E2fEjyEPKoVoGyFu_V454dmxM6sR0Y-pCANZZV6B";
    //其中userAccountId是用户账号id,或者账号hash值。该字段非必校验,如无账户id,可设置为"default"。其中appkey 请直接使用以上示例代码中的appkey。
    int ret = [YunCeng initEx:appkey:userAccountId];
    if (0 != ret) {
        printf("init failed. \n");
        return;
    }            
  5. 获取deviceToken。
    注意事项:
    • SDK初始化后需要经过一段时间计算才能获取到deviceToken,建议间隔3秒以上。
    • deviceToken短期有效,不能长期缓存使用,不能作为设备唯一标识。
    //缓冲区长度应不小于384
    char deviceToken[384] = {0};
    int re =[YunCeng GetSession:deviceToken :384];
    NSLog(@"session_result:%i",re);
    NSString * astring = [NSString stringWithUTF8String:deviceToken];
    NSLog(@"astring:%@",astring);            
  6. 异步化。
    - (void) init_callback {
        const char * appkey = "P67IjMMtHkrWYWM2972jZqowIDkoFTI0gFMYrWTfeDHgVtDJaYXoZfj1wpPD4K_s_udF40+spePCA1TtngyLB2J3Fq5Ew6f0CwEMefkvzcBLJULzMNj61la2lFBVCqjsANdHTQRp-i6H2AtjPGACLQVA8ru9afDc5jInGd-nXfRAsv2U3326h-_WFBsgDfXagMOHMBVbRqH6a2SRExRoepmEI8-juyzP42QopmmA9heH96n7btz1jywGZmP5_VH9P5uh8T1Ex7smsg12DN5OwUrAkp7UJ5nXeO-adbuCqEDpaFXB9aVko6W3tb5ml5tEoyL7Ri2LAn8LPkUGIRlGzrcLFztIzp-WmgNWrANazqH2d4auQL_XVx09Z4E2fEjyEPKoVoGyFu_V454dmxM6sR0Y-pCANZZV6B";
        const char * initToken = "default";
        [YunCeng initExWithCallback:appkey :initToken :^(int ret) {
            NSLog(@"YunCeng InitExWithCallback return %d", ret);
        }];
        return;
    }
    
    - (void) get_token_callback {
        __block NSString * deviceToken = @"";
        [YunCeng GetSessionWithCallback:^ (NSString * result){
            deviceToken = result;
            NSLog(@"YunCeng GetSessionWithCallback return token %@", deviceToken);
        }];
        return;
    }            
  7. swift。
    let appkey = "P67IjMMtHkrWYWM2972jZqowIDkoFTI0gFMYrWTfeDHgVtDJaYXoZfj1wpPD4K_s_udF40+spePCA1TtngyLB2J3Fq5Ew6f0CwEMefkvzcBLJULzMNj61la2lFBVCqjsANdHTQRp-i6H2AtjPGACLQVA8ru9afDc5jInGd-nXfRAsv2U3326h-_WFBsgDfXagMOHMBVbRqH6a2SRExRoepmEI8-juyzP42QopmmA9heH96n7btz1jywGZmP5_VH9P5uh8T1Ex7smsg12DN5OwUrAkp7UJ5nXeO-adbuCqEDpaFXB9aVko6W3tb5ml5tEoyL7Ri2LAn8LPkUGIRlGzrcLFztIzp-WmgNWrANazqH2d4auQL_XVx09Z4E2fEjyEPKoVoGyFu_V454dmxM6sR0Y-pCANZZV6B"
    let token = "default"
    let appkey_nsstring = (appkey as NSString)
    let token_nsstring = (token as NSString)
    [YunCeng .initEx(withCallback: appkey_nsstring.utf8String, token_nsstring.utf8String, {(ret) in
           print("init return ", ret)
    })]            

调用风险识别API接口

将deviceToken与其他参数,根据如下相应的风险识别服务事件参数文档说明,请求风险识别API接口进行识别:

注册风险识别-增强版事件参数

营销风险识别-增强版事件参数

登录风险识别-增强版事件参数

设备风险识别事件参数

接入和使用时序图如下,其中第1和2步骤仅首次加载需要调用,第3、4、5、6、7、8、9步骤可以根据业务情况循环发起。