iOS接入
法规说明
根据我国《网络安全法》等相关法律法规及国家标准的要求,个人信息的收集和使用,应当遵循合法、正当、必要的原则,公开收集、使用规则,明示收集、使用信息的目的、方式和范围,并经被收集者同意。故我们强烈建议您在拟接入易盾SDK前,检查和完善拟接入软件的《隐私政策》中有关采集个人信息部分的说明,确保已涵盖拟接入SDK项下需要采集的个人信息(详见附表),并明确您有权将上述个人信息提供给第三方用于安全服务。
附表:
采集信息类型 | 备注 |
---|---|
设备型号 | 无 |
设备IP地址 | 无 |
设备软件版本信息 | 无 |
设备唯一标识码(idfa) | 无 |
传感器数据 | 提供开关,默认打开,可根据业务需求随时设置关闭 |
接入流程
自动化模式下,SDK组件的接入流程:
- 嵌入SDK
- init:初始化SDK,初始化一次即可;
- getToken:调用getToken接口获取token,每次调用返回不同的token值。一般由用户操作(提交等)来触发getToken,请注意:一个token只能使用一次,如果在同一页面中,允许用户多次操作,请多次调用getToken接口以获取不同的token。请勿在一次用户操作中,多次调用getToken接口;用户第一次启动的时候,请确认网络权限已经获取的情况下获取token
- 提交token:将token作为请求参数提交到业务方后端。
嵌入SDK
导入SDK
- 咨询易盾技术支持获得压缩包并解压,得到示例工程GuardianDemo和SDK文件 Guardian.framework。
- 拖拽Guardian.framework文件到Xcode工程(请勾选 Copy Items if needed 选项)
- 点击target -> Build Phase -> Link Binary With Libraries,添加AvFoundation.framework、CoreTelephony.framewrok、SystemConfiguration.framework框架。
- 工程配置 Build Settings -> Other Linker Flags ,添加 -ObjC
- 在info.plist文件中添加 Privacy - Location Always and When In Use Usage Description
注意事项:iOS SDK 最低兼容的系统版本是iOS 9.0。2.4.3以后的版本不用IDFA。
历史版iOS SDK会收集IDFA,如使用历史版本,请参考文档末IDFA配置。
导入头文件
在AppDelegate.m
文件中、以及 需要使用SDK
的相关.m文件中,导入如下头文件:
#import <Guardian/NTESCSGuardian.h>
说明:如果是Swift工程,请在对应的 bridging-header.h 中导入此头文件即可。
init接口
接口说明:
+ (void)initWithProductNumber:(NSString *)number completeHandler:(initBlock)block;
- 调用方式:
[NTESCSGuardian initWithProductNumber:@"your_product_number" completeHandler:^(NSInteger code, NSString *message) {
}];
- 接口描述:初始化SDK
- 返回值:void
- 参数说明
参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|
productNumber | NSString | 是 | 产品编号 |
block | initBlock | 是 | 回调Block |
- 回调code说明
code | message | 说明 |
---|---|---|
200 | ok | 成功 |
1001 | product number error | 产品编号不正确 |
初始化可选参数配置
以下属性需要在初始化之前使用。
- 设置传感器数据是否采集
@property (assign, nonatomic) BOOL seniorCollectStatus;
调用方式
[NTESCSGuardian sharedInstance].seniorCollectStatus = NO;
属性说明:传感器数据采集开关,默认为开启。当需要禁用传感器数据采集时,设置为NO。 后面也有类方法的调用方式,功能相同。
- 设置APP渠道名称
@property (copy, nonatomic) NSString *channelName;
调用方式
[NTESCSGuardian sharedInstance].channelName = @"渠道名称";
- 设置私有化域名,正常情况不需要设置
@property (copy, nonatomic) NSString *urlPrefix;
调用方式
[NTESCSGuardian sharedInstance].urlPrefix = @"自定义域名";
参考值为 https://ac.dun.163yun.com
- 设置离线或网络异常状态下返回详细数据(离线token),默认关。
@property (assign, nonatomic) BOOL offlineToken;
调用方式
[NTESCSGuardian sharedInstance].offlineToken = YES;
getToken接口
getToken接口返回唯一凭证token,业务方前端需要将此token提交到业务后端,业务后端再使用此token来check接口获取检测结果。注意:
- 一般由用户的操作来触发getToken调用,比如用户点击“提交”按钮等
- 一个token只能使用一次
- 如果在不刷新页面的情况下,业务功能允许用户多次操作,请多次调用getToken接口以获取不同的token
接口说明:
+ (void)getTokenWithCompleteHandler:(tokenBlock)block;
或
+ (void)getTokenWithTimeout:(NSInteger)timeout completeHandler:(tokenBlock)block;
- 调用方式:
[NTESCSGuardian getTokenWithCompleteHandler:^(NSString *token, NSInteger code, NSString *message) {
}];
或
[NTESCSGuardian getTokenWithTimeout:3000 completeHandler:^(NSString *token, NSInteger code, NSString *message) {
}];
-
接口描述:用于查询的Token,通过参数block完成回调,获取token
-
返回值:void
-
参数说明
参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|
timeout | int | 否 | 最长超时时间,单位毫秒。若没有指定,则默认3000ms;timeout可设置范围为1~10秒 |
block | tokenBlock | 是 | 回调Block |
- 回调code说明
code | message | 说明 |
---|---|---|
200 | ok | 成功 |
1002 | init error | 初始化失败 |
注意事项:
- 该接口是以异步的方式获取Token,在生成Token完成时,会调用用户传入的Block进行回调,并传入Token到该Block中。
- 强烈建议:初始化init到gettoken时间间隔2s以上,并且由用户触发。
设置传感器数据采集状态
- 调用方式:
+ (void)setSeniorStatus:(BOOL)isOpen;
- 接口描述:传感器数据采集开关,默认为开启。当需要禁用传感器数据采集时,设置为NO。 在init之后,可以随时调用。
- 返回值:无。
- 参数说明
参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|
isOpen | BOOL | 是 | YES开启,NO关闭传感器数据采集 |
上传自定义数据
- 调用方式:
+ (void)setExtraData:(NSString *)value forKey:(NSString *)key
- 接口描述:上传自定义数据字段,通过业务字段进行关联分析使用
- 返回值:无。
- 参数说明
参数名 | 类型 | 是否必须 | 说明 |
---|---|---|---|
value | NSString | 是 | 参数内容 |
key | NSString | 是 | 字段名称 |