概述
DeepKnow iOS SDK提供给集成iOS原生客户端开发的开发者使用, SDK不依赖任何第三方库。
DeepKonw 为极验业务安全服务的基础感知构件,主要用于采集客户端的相关安全信息,为后续服务提供数据,是其他极验服务的基础。
环境需求
条目 |
描述 |
开发目标 |
iOS8+ |
开发环境 |
Xcode 10.0 |
测试环境 |
真机 |
sdk三方依赖 |
无 |
获取 SDK
请联系负责对接的极验工作人员
导入 SDK 到项目工程并配置开发环境
如果您是手动添加 SDK, 将下载获取的DeepKnowSDK.framework
及系统的AdSupport.framework
库添加到工程中。确保Copy items if needed
已被勾选, 且确保在PROJECT -> Build Phases -> linked Frameworks and Libraries
路径下。
针对静态库中的Category
, 需要在对应target的Build Settings
->Other Linker Flags
添加-all_load
编译选项。建议先添加-ObjC
,如果依然有问题,再添加-all_load
。
配置接口
集成用户需要使用 iOS SDK 完成提供的以下接口:
- 初始化管理
- 启动管理器
集成代码参考下方的代码示例
编译并运行你的工程
若使用 Xcode 14.3 运行项目时报链接不到 ARC 库的错, 原因是 Xcode 14.3 移除了 ARC 相关的库,iOS 9.0 及以上系统内置了ARC 库,所以有两种解决方案:
a:可以选择将项目目标最低版本设置为9.0或以上
b:将在 14.3 以下的 Xcode 版本中的 ARC 库拷贝到 Xcode 14.3 版本对应路径上
编译你的工程, 体验畅快体验您的DeepKnow!
代码示例
初始化
在工程中的AppDelegate.m
文件头部引入动态库<DeepKnowSDK/DeepKnowSDK.h>
#import <DeepKnowSDK/DeepKnowSDK.h>
|
在AppDelegate.m
中的UIApplicationDelegate
的代理方法里初始化和启动DeepKnow
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSLog(@"DeepKnow Version: %@", [DeepKnow sdkVersion]); if ([DeepKnow registerWithAppID:@"00505b6********1795"]) { DeepKnow *deepknow = [DeepKnow sharedInstance]; [deepknow start]; NSLog(@"DeepKnow Did Start. %@", deepknow); } return YES; }
|
至此, DeepKnow
已在您的应用中启动。
事件发生
给关键场景的视图控制页设置标签
在相应控制页的文件中#import <DeepKnowSDK/DeepKnowSDK.h>
, 然后在UIViewController
的生命周期中设置DeepKnow
场景事件别名
一般用于标记核心控制页面, 比如活动等。 手动设置后, DeepKnowSDK
会自动添加的控制页面标签到相应的数据里。
#import <DeepKnowSDK/DeepKnowSDK.h>
...
- (void)viewDidLoad { [super viewDidLoad]; self.dpEventAlias = @"this is a KEY Event"; ... }
|
该操作需在viewDidLoad
里进行
在相应场景获取 SessionID
#import <DeepKnowSDK/DeepKnow.h>
...
- (void)viewDidLoad { [super viewDidLoad]; self.dpEventAlias = @"login"; [self createDeepKnowDataButton]; ... }
- (void)createDeepKnowDataButton { UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(20, 96, 72, 44)]; button.backgroundColor = [UIColor blackColor]; button.layer.cornerRadius = 3; button.titleLabel.text = @"登录"; [button addTarget:self action:@selector(fetchSessionID) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; }
- (void)fetchSessionID { ...
[[DeepKnow sharedInstance] fetchSessionWithCompletion:^(DPSessionStatus * _Nullable status, NSError * _Nullable error) { if (!error) { NSLog(@"Fetch sessionID: %@, expired at %@", status.sessionID, status.expiredDate); } else { NSLog(@"Fetch error: %@", error.localizedDescription); } }]; }
|
提交自定义数据
以登录场景, 提交场景标识、用户 ID 、会员状态为例
- (void)login { NSDictionary *userInfo = @{@"scene" : @"login", @"user_id" : @"1234567", @"member" : @"1"}; [[DeepKnow sharedInstance] fetchSessionWithAttribute:userInfo completion:^(DPSessionStatus * _Nullable status, NSError * _Nullable error) { if (!error) { NSLog(@"Fetch sessionID: %@, expired at %@", status.sessionID, status.expiredDate); } else { NSLog(@"Fetch error: %@", error.localizedDescription); } }]; }
|
通过 SessionID 获取设备指纹 ID
根据业务实际需要, 将 SessionID 提交到服务器
更详细的使用方法, 请参考提供的Demo中的示例代码