集成要求
环境要求
条目 | 说明 |
---|---|
兼容版本 | iOS9.0及以上 |
支持架构 | armv7, arm64, x86_64 |
集成步骤
安装(CocoaPods)
- 在 Podfile 文件中对应 target 中新增 pod 'TrustDecisionPro', '4.3.0'
- 在 Podfile 文件中对应 target 中新增 pod 'TrustDecisionAPISign', '1.0.6'
- 在 Podfile 所在文件夹中执行
pod install --repo-update
命令 (M1系列mac电脑需要执行arch -x86_64 pod install --repo-update
命令)
引入头文件
在调用的位置引入头文件
#import <TDMobRisk/TDMobRisk.h>
import TDMobRisk
接口签名
SDK支持两种类型的接口:query和body。根据需要保护的接口传参来调用SDK的API。
方法定义
// 适用于键值对形式的入参
TDAPISignResult (*signWithQuery)(NSString *path, NSDictionary<NSString*,NSString*> *queryDictionary);
// 适用于body形式字节流或者字符串形式的入参
TDAPISignResult (*signWithBody)(NSString *path, NSString *body);
结构体定义
typedef struct _TDAPISignResult{
// 签名结果
char* sign;
// 状态码
int code;
// 错误信息
char* msg;
}TDAPISignResult;
最佳实践
Query方式
待保护的API形如:https://cn.apitd.net/de/v1?name=jacky&age=12
NSMutableDictionary *query = [NSMutableDictionary dictionary];
[query setValue:@"jacky" forKey:@"name"];
[query setValue:@"12" forKey:@"age"];
NSString *path = @"de/v1";
TDMobRiskManager_t *manager = [TDMobRiskManager sharedManager];
TDAPISignResult result = manager->signWithQuery(path,query);
// 加签成功
if(result.code == 0){
// 获取签名并使用
NSString* signString = [NSString stringWithUTF8String:result.sign];
}else{
// 获取状态码
int code = result.code;
// 获取错误信息
NSString* errMsgString = [NSString stringWithUTF8String:result.msg];
// 继续业务逻辑,此处签名可以用空字符替代
}
var query = Dictionary<String, String>()
query.updateValue("jacky", forKey: "name")
query.updateValue("12", forKey: "age")
let path = "de/v1"
let manager = TDMobRiskManager.sharedManager()
let result = manager?.pointee.signWithQuery(path,query)
// 加签成功
if result?.code == 0 {
// 获取签名并使用
let signString = result?.sign
}else {
// 获取状态码
let code = result?.code
// 获取错误信息
let errMsgString = result?.msg;
// 继续业务逻辑,此处签名可以用空字符替代
}
Body方式
待保护的API形如:https://cn.apitd.net/de/v1 并且在body内传递了大字符串: sdsdsdsds...ihhfywehnas
NSString *body = @"sdsdsdsds...ihhfywehnas";
NSString *path = @"de/v1";
TDMobRiskManager_t *manager = [TDMobRiskManager sharedManager];
TDAPISignResult result = manager->signWithBody(path,body);
// 加签成功
if(result.code == 0){
// 获取签名并使用
NSString* signString = [NSString stringWithUTF8String:result.sign];
}else{
// 获取状态码
int code = result.code;
// 获取错误信息
NSString* errMsgString = [NSString stringWithUTF8String:result.msg];
// 继续业务逻辑,此处签名可以用空字符替代
}
let body = "sdsdsdsds...ihhfywehnas"
let path = "de/v1"
let manager = TDMobRiskManager.sharedManager()
let result = manager?.pointee.signWithBody(path,body)
// 加签成功
if result?.code == 0 {
// 获取签名并使用
let signString = result?.sign
}else {
// 获取状态码
let code = result?.code
// 获取错误信息
let errMsgString = result?.msg;
// 继续业务逻辑,此处签名可以用空字符替代
}
状态检查
通过加签返回的结构体拿到的状态码为0,则加签成功。
TDAPISignResult.code==0
状态码
错误码 | 错误信息 | 处理方式 |
---|---|---|
0 | sign 正常生成返回 | / |
2000 | path为空 | 请设置path参数 |
22xx | 内部错误 | 请联系技术支持 |
3001 | 内部错误 | 请联系技术支持 |
3002 | 内部错误 | 请联系技术支持 |
3003 | 内部错误 | 请联系技术支持 |
3004 | 内部错误 | 请联系技术支持 |