网易易盾设备指纹(iOS)接入文档
接入说明
环境需求
条目 | 说明 |
---|---|
兼容平台 | 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
文件导入到您的工程。
2、将FPSupport.bundle
文件导入到您的工程
将ydun.framework
文件夹下的FPSupport.bundle
引入到工程中, SDK
与Bundle
引入完毕后如下所示:
3、导入依赖库
需要导入依赖库: AvFoundation.framework
, libc++.tbd
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
使用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
接入须知:
初始化接口提供以下两种模式
-
- 默认配置默认(默认超时时间为
3000ms
,默认请求地址为易盾服务地址)
- 默认配置默认(默认超时时间为
-
- 可配超时时长及自定义请求接口模式(私有化必须配置)
函数原型:
默认初始化
- (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);
}
});
}];