集成要求
合规说明
在接入行为采集模块的App隐私政策中应添加我司隐私协议中的如下部分
4.提供识别机器行为欺诈风险服务 (仅适用于已集成设备指纹SDK行为采集模块的情形)
(1)功能描述:为了识别机器行为欺诈风险,SDK需要获取您或您最终用户的相关行为信息。
(2)必要个人信息:触摸、滚动、滑动、屏幕边缘滑动、缩放的行为信息,输入的行为信息(输入类型次数,输入速度,输入耗时),应用进入前台、进入后台的行为信息,浏览页面名称及停留时间的行为信息,设备方向的行为信息,陀螺仪传感器的行为信息,加速度计传感器的行为信息,鼠标的行为信息(web端),键盘的行为信息(web端)
(3)其他可选个人信息:无
1.集成SDK
集成SDK
- 在 pubspec.yaml 中添加依赖:
dependencies:
tdbehavior_flutter: ^1.4.5
- 运行 flutter pub get 安装依赖
2.在Flutter代码中配置
1. 包裹根部 Widget
在 main() 中使用 TDBehaviorWidget 包裹你的应用
import 'package:flutter/material.dart';
import 'package:trustdevice_pro_plugin/trustdevice_pro_plugin.dart';
import 'package:tdbehavior_flutter/tdbehavior_flutter.dart';
void main() {
runApp(
TDBehaviorWidget(
key: const Key("root_layout"),
child: MaterialApp( // 或CupertinoApp
navigatorObservers: [
// 注册路由观察者
TDBehaviorWidget.getRouteObserver(),
],
title: 'Your App Name',
home: const MyHomePage(title: 'Flutter Demo Home Page'),
),
),
);
}
2.文本输入监控
SDK 会自动监控带有 Key 的输入控件,在需要追踪的 TextField 中添加唯一Key:
TextField(
key: const Key('username_field'),
controller: _usernameController,
decoration: const InputDecoration(
labelText: '用户名',
hintText: '请输入用户名',
),
);
3. 初始化 SDK
⚠️⚠️⚠️在已经接入设备指纹的情况下,你需要将TDBehavior 模块 注册到设备指纹中,否则无法使用行为采集模块
示例代码
class _MyHomePageState extends State<MyHomePage> {
// 设备指纹插件
late TrustdeviceProPlugin _trustdeviceProPlugin;
@override
void initState() {
super.initState();
// ⚠️⚠️⚠️注册行为采集插件
final behaviorCollector = TDBehavior();
_trustdeviceProPlugin = TrustdeviceProPlugin(behaviorCollector);
}
}
4.调用行为采集方法
行为采集方法用于获取用户行为数据,其接口定义如下:
/**
* start,开始行为采集,将采集数据写入SDK内部容器中
*/
void start()
/**
* stop,结束行为采集,停止将采集数据写入SDK内部容器中,同时清空SDK内部容器中的数据;
*/
void stop()
/**
* collect,返回行为采集结果,如果SDK内部容器中存在数据,则会返回成功code == 0,同时清空SDK内部容器中的数据;
* 如果SDK内部容器中不存在数据则返回code == 104 错误码
*/
Futurn<Map<String, dynamic>> collect()
示例代码
⚠️⚠️⚠️ 确保在业务界面调用start之后,存在用户行为,例如:文字输入、点击、
滑动等,否则调用 collect 会返回104错误码,表示没有采集到行为数据;
// 在进入业务界面时,调用 start方法,进行行为采集,例如进入登录界面时
_trustdeviceProPlugin.start();
...
// 在调用业务接口时,调用 collect方法,获取行为采集数据,例如点击登录按钮
final result = await _trustdeviceProPlugin.collect();
final int code = result['code'];
final String msg = result['msg'];
final String payload = result['payload'];
if (code == 0) {
print('获取行为采集结果成功,payload: $payload');
} else {
print('获取行为采集结果失败,code: $code, msg: $msg');
}
...
// 离开业务界面时,调用 stop方法,结束行为采集,例如离开登录界面时
_trustdeviceProPlugin.stop();
指定不需要监听的输入框
在 TextField 输入框 设置属性 key 包含 "TDBehaviorExInput" ,设置后,将不会对TextField 输入框的文字输入事件进行监听
const TextField(
key: "otherKey,TDBehaviorExInput",
decoration: InputDecoration(
labelText: '不采集输入文字输入'
)
)
initWithOptions方法选传配置
| 配置 key | 定义 | 说明 | 示例代码 |
|---|---|---|---|
| behaviorHttpTimeOut | 行为采集SDK 内部所有网络请求超时时间 | 单位:秒、float默认值:15.0 | options['behaviorHttpTimeOut'] = 15.0; |
5.code 返回码
| 错误码 | 描述 | 处理方案 |
|---|---|---|
| 0 | 成功 | 无需处理 |
| 100 | 没有调用 initWithOptions | 没有调用 initWithOptions,需要调用 initWithOptions |
| 101 | 网络鉴权结果还没有返回 | 向用户抛出错误:“网络原因,请检查网络后重试”,引导用户重新调用 collect 方法 |
| 102 | 系统原因导致的鉴权接口网络错误,例如没有网络连接等 | 向用户抛出错误:“网络原因,请检查网络后重试”,引导用户重新调用 collect 方法 |
| 103 | 鉴权接口后端返回状态码非200 | 检查 partner 参数是否填写正确,如果还是失败,提供错误信息result.msg给我司运营确认参数是否正确且在有效期内 |
| 104 | SDK内部容器中没有数据 | 确保在业务界面调用start之后,存在用户行为,例如:文字输入、点击、滑动等! |
| 109 | SDK内部容器中没有数据 | 采集开关全部关闭,请提供错误信息result.msg给我司运营! |
| 110 | SDK内部容器中没有数据 | 确保调用collect方法前调用了start方法! |
