Flutter

集成要求

合规说明

在接入行为采集模块的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.0options['behaviorHttpTimeOut'] = 15.0;

5.code 返回码

错误码描述处理方案
0成功无需处理
100没有调用 initWithOptions没有调用 initWithOptions,需要调用 initWithOptions
101网络鉴权结果还没有返回向用户抛出错误:“网络原因,请检查网络后重试”,引导用户重新调用 collect 方法
102系统原因导致的鉴权接口网络错误,例如没有网络连接等向用户抛出错误:“网络原因,请检查网络后重试”,引导用户重新调用 collect 方法
103鉴权接口后端返回状态码非200检查 partner 参数是否填写正确,如果还是失败,提供错误信息result.msg给我司运营确认参数是否正确且在有效期内
104SDK内部容器中没有数据确保在业务界面调用start之后,存在用户行为,例如:文字输入、点击、滑动等!
109SDK内部容器中没有数据采集开关全部关闭,请提供错误信息result.msg给我司运营!
110SDK内部容器中没有数据确保调用collect方法前调用了start方法!