网易易盾设备指纹(iOS)接入文档

2024.03.12 15:54:59

    接入说明

    环境需求

    条目 说明
    兼容平台 iOS9.0+
    CPU架构 armv7, arm64, i386, x86_64
    SDK依赖 AvFoundation.framework, libc++.tbd

    法规需求

    根据《工业和信息化部 337号令》的规定,重点对以下四个方面开展规范整治工作。

    • (一)违规收集用户个人信息方面
    • (二)违规使用用户个人信息方面
    • (三)不合理索取用户权限方面
    • (四)为用户账号注销设置障碍方面

    其中SDK涉及到第一条:收集个人信息(包括设备型号、操作系统类型、版本等信息)。
法规规定,所采集的数据项目需在隐私政策中明确声明,在客户不同意隐私政策的情况下,不允许进行采集。且申请授权需与场景相关,请根据实际情况做出合理调整。

    1、解决方式

    需要客户在集成了SDK的App中增加《隐私政策声明》,来规避风险。并在客户同意隐私政策后,进行SDK的调用。

    2、隐私政策

    为了识别设备/账号异常状态,我们将会接受并记录您所使用的设备相关信息(包括设备机型、操作系统及版本、设备分辨率、包名、设备设置、 IDFV)、设备所在位置相关信息(有权限才会采集)

    详情请参照网易易盾隐私政策,请放到应用“隐私协议”中。

    附表:

    采集信息类型 是否采集 是否需要授权
    IDFV
    设备IP地址
    无线网络SSID 是(无权限不采集)
    无线网络BSSID 是(无权限不采集)
    位置信息 是(无权限不采集)

    3、三方SDK采集说明

    为保证符合国家隐私合规政策,需要在隐私政策中的三方SDK列表中补充易盾设备安全SDK相关说明

    SDK名称 公司 SDK隐私政策链接 联系方式
    易盾设备安全SDK 杭州网易智企科技有限公司 https://dun.163.com/clause/privacy antispam@188.com
    SDK用途 收集个人信息字段 个人信息对外传输/共享 申请权限
    识别用户风险、设备环境风险
    系统类型、iOS系统版本、设备型号、设备名称、IDFV、SIM卡、网络制式、无线IP地址、无线网络名称、无线BSSID、代理配置、网络类型、当前时间、待机时间、运行时间、是否越狱、应用包名、应用签名、屏幕亮度、充电状态、电量、屏幕分辨率、内存大小、可用内存、存储空间大小、可用存储空间、应用版本号、模拟器类型
    是否传输/共享:是
    传输/共享对象:杭州网易智企科技有限公司
    涉及传输信息:
    系统类型、iOS系统版本、设备型号、设备名称、IDFV、SIM卡、网络制式、无线IP地址、无线网络名称、无线BSSID、代理配置、网络类型、当前时间、待机时间、运行时间、是否越狱、应用包名、应用签名、屏幕亮度、充电状态、电量、屏幕分辨率、内存大小、可用内存、存储空间大小、可用存储空间、应用版本号、模拟器类型
    传输方式:https
    网络权限(非必须)

    接入步骤

    导入组件

    1、将ydun.framework文件导入到您的工程。

    importsdk

    2、将FPSupport.bundle文件导入到您的工程

    ydun.framework文件夹下的FPSupport.bundle引入到工程中, SDKBundle引入完毕后如下所示: importsdk

    3、导入依赖库

    需要导入依赖库: AvFoundation.framework , libc++.tbd importsdk

    4、引入头文件

    在项目需要使用SDK的文件中引入“NTESCSYDun.h” SDK头文件,如下:

    #import <ydun/NTESCSYDun.h>
    

    修改项目配置

    1、动态库配置

    Xcode 中找到 TARGETS-> Build Settings -> Other Linker Flags, 添加-ObjC, -fprofile-instr-generate (如已添加则无需添加)

    2、关闭bitcode

    SDK不支持 bitcode 。请在 TARGETS -> Build Settings -> Enable Bitcode 修改为 NO bitcode

    使用SDK

    1、SDK初始化

    确保在用户同意隐私政策后添加以下初始化代码

    NTESCSYDun * dun = [NTESCSYDun sharedInstance];
    [dun init:@"your appID"];
    

    私有化需额外配置请求地址(服务端提供) ,参考如下:

    NTESCSYDun * dun = [NTESCSYDun sharedInstance];
    NTESCSYDunConfig * config = [NTESCSYDunConfig new];
    config.urlPrefix = @"http://***/upload/v1/ios/d";
    [dun init:@"your appID" config:config];
    

    2、获取token

    初始化完成后,即可调用获取token接口

    [dun getToken:^(NSString *token, NTESFingerprintStatus status) {
        dispatch_async(dispatch_get_main_queue(), ^{
            if (token) {
                NSLog(@"token = %@",token);
                NSLog(@"status = %lu",(unsigned long)status);
            }else{
                //未取到token , 请查阅接入文档对比错误码
                NSLog(@"%lu",(unsigned long)status);
            }
        });
    }];
    
    说明:

    该接口向服务端请求一个token, 该token 用于查询设备指纹。

    3、查询指纹

    查询指纹需调用rest api接口查询指纹,具体参考 后端接入文档

    SDK接入调用说明

    SDK初始化

    接口用途:

    用于初始化设备指纹SDK

    接入须知:

    初始化接口提供以下两种模式

      1. 默认配置默认(默认超时时间为3000ms,默认请求地址为易盾服务地址)
      1. 可配超时时长及自定义请求接口模式(私有化必须配置)
    函数原型:

    默认初始化

    - (void)init:(NSString *)appID;
    

    自定义配置初始化

    - (void)init:(NSString *)appID config:(NTESCSYDunConfig *)config;
    
    参数说明:
    参数 说明
    appID 对应易盾后台分配的businessId(32位)
    config 自定义配置对象,包含超时时间(timeout)、请求地址(urlPrefix)
    返回值说明:

    无返回值

    示例代码:

    默认初始化模式:

    NTESCSYDun * dun = [NTESCSYDun sharedInstance];
    [dun init:@"your appID"];
    

    自定义配置初始化模式(私有化必须配置 urlPrefix)

    NTESCSYDun * dun = [NTESCSYDun sharedInstance];
    
    NTESCSYDunConfig * config = [NTESCSYDunConfig new];
    config.timeout = 5000; //单位ms
    config.urlPrefix = @"http://****/upload/v1/ios/d";
    
    [dun init:@"your appID" config:config];
    

    获取token

    接口用途:

    该接口用于上报设备数据,并获取到一个 token ,该 token 用于查询指纹接口使用

    接入须知:

    APPID 错误或SDK异常, 其他情况均会返回 token , 如超时或其他网络问题会返回客户端生成的 token , 使用该 token 同样可以用来查询指纹.

    函数原型:
    - (void)getToken:(yDunGetTokenBlock)block;
    
    参数说明:
    参数 说明
    block 传入一个block,用于回传token以及status
    返回值说明:
    返回值 说明
    token 用于查询指纹接口使用
    status 获取token状态

    block返回值status枚举如下:

    /**
    *  @abstract    获取token状态
    *
    *  NTESFingerprintGetDataSuccess      获取成功
    *  NTESFingerprintNetworkError        网络错误或服务不可用
    *  NTESFingerprintGetDataError        获取数据错误或失败
    *  NTESFingerprintDataValidationError    数据签名校验失败
    *  NTESFingerprintUnauthorizedError   APPID错误
    *  NTESFingerprintTimeoutError        获取token超时
    *  NTESFingerprintOtherError          其他错误
    */
    typedef NS_ENUM(NSUInteger, NTESFingerprintStatus) {
    	NTESFingerprintGetDataSuccess = 200,
    	NTESFingerprintNetworkError = 201,
    	NTESFingerprintGetDataError = 1000,
    	NTESFingerprintDataValidationError = 1002,
    	NTESFingerprintUnauthorizedError = 1007, 
    	NTESFingerprintTimeoutError = 1008,
    	NTESFingerprintOtherError = 1009,
    };
    
    
    示例代码:
    [dun getToken:^(NSString *token, NTESFingerprintStatus status) {
        dispatch_async(dispatch_get_main_queue(), ^{
            if (token) {
                NSLog(@"token = %@",token);
                NSLog(@"status = %lu",(unsigned long)status);
            }else{
                //未取到token , 请查阅接入文档对比错误码
                NSLog(@"%lu",(unsigned long)status);
            }
        });
    }];
    
    Online Chat Tel:95163223 Free trial