Flutter防欺诈检测插件flutter_shieldfraud的使用
Flutter防欺诈检测插件flutter_shieldfraud的使用
Flutter插件用于Shield欺诈检测(www.shield.com)
Flutter Shield Fraud插件帮助开发者评估移动设备上进行的恶意活动,并基于用户行为返回风险情报。它收集设备指纹、社交指标和网络信息。
开始使用SHIELD SDK有四个步骤:
- 集成SDK
- 初始化SDK
- 获取会话ID
- 获取设备结果
- 发送自定义属性
集成SDK
SHIELD FLUTTER SDK兼容从1.20.0版本开始支持Flutter的Android和iOS应用。你需要确保在Flutter项目的pubspec.yaml文件中添加flutter_shieldfraud作为依赖项。
dependencies:
flutter_shieldfraud: ^1.0.13
然后运行flutter packages get
或在IntelliJ中更新你的包。
注意:我们不断对欺诈库和检测能力进行增强,包括新功能、错误修复和安全更新。我们建议升级到最新版本的SDK以保护自己免受迅速演化的欺诈风险。你可以参阅Changelog以了解更多信息。
初始化SDK
SDK的初始化应在应用程序生命周期的最早阶段配置,以确保成功生成和处理设备指纹。
你需要SHIELD_SITE_ID
和SHIELD_SECRET_KEY
来初始化SDK。你可以在页面顶部找到它们。
在main.dart文件中覆盖第一个StatefulWidget的State的initState方法,在应用程序启动时初始化Shield。
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
[@override](/user/override)
void initState() {
super.initState();
// 创建Shield配置
ShieldConfig config = ShieldConfig(siteID: "SHIELD_SITE_ID", key: "SHIELD_SECRET_KEY");
// 使用Shield配置初始化Shield SDK
Shield.initShield(config);
}
}
获取会话ID
会话ID是用户应用会话的唯一标识符,当检索该会话的设备结果时,可以作为参考点。
会话ID遵循操作系统生命周期管理,符合行业最佳实践。这意味着用户的会话将一直保持活跃,直到用户终止应用或设备内存不足必须终止应用。
如果你希望通过后端API检索设备结果,重要的是在你的系统中存储会话ID。你将需要使用此会话ID调用SHIELD后端API。
Shield.sessionId
.then((sessionId) =>
print("shield sessionId: $sessionId"));
获取设备结果
SHIELD为您提供可操作的设备智能,您可以通过SDK、优化监听器或自定义拉取方法检索这些信息。你也可以通过后端API检索结果。
警告:任何时候只能使用一种获取设备结果的方法(优化监听器或自定义拉取)。
通过优化监听器检索设备结果
建议:SHIELD推荐使用优化监听器方法减少API调用次数。
我们的SDK将在初始化时捕获初始设备指纹,并且仅在设备指纹发生变化的情况下返回一组额外的设备智能。这确保了真正优化的端到端保护你的生态系统。
如果希望在会话期间被通知设备属性的变化(例如,用户在启动页面后立即激活恶意工具),可以注册一个回调。
在初始化时添加一个额外参数以注册回调。
class _MyAppState extends State<MyApp> {
[@override](/user/override)
void initState() {
super.initState();
// 创建回调
ShieldCallback shieldCallback = ShieldCallback((Map<String, dynamic> result) {
print("device result: $result");
}, (ShieldError error) {
print("error: ${error.message}");
});
// 将回调传递给ShieldConfig对象
ShieldConfig config = ShieldConfig(siteID: "SHIELD_SITE_ID", key: "SHIELD_SECRET_KEY", shieldCallback: shieldCallback);
Shield.initShield(config);
}
}
通过自定义拉取检索设备结果
你可以在特定的用户检查点或活动(如账户注册、登录或结账)时通过自定义拉取检索设备结果。这样做是为了确保有足够的时间生成设备指纹。
Shield.latestDeviceResult.then((latestDeviceResult) => {
if (latestDeviceResult == null) {
print("error ${Shield.latestError?.message}")
} else {
print("result $latestDeviceResult")
}
});
如果getLatestDeviceResult
返回null,则表示设备结果检索失败。
发送自定义属性
使用sendAttributes
函数发送事件驱动的属性,如user_id
或activity_id
以增强分析。此函数接受两个参数:触发函数的屏幕名称和以键值对形式提供的数据。
Map<String, String> data = {};
data["key_1"] = "value_1";
data["key_2"] = "value_2";
Shield.sendAttributes("login_screen", data)
.then((value) => print("successfully sent attributes: $value"));
示例代码
以下是完整的示例代码,展示了如何在Flutter应用中使用flutter_shieldfraud
插件。
import 'package:flutter/material.dart';
import 'package:flutter_shieldfraud/plugin_shieldfraud.dart';
import 'package:flutter_shieldfraud/shield_config.dart';
import 'dart:convert';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String jsonString = "";
[@override](/user/override)
void initState() {
super.initState();
initShield();
Future.delayed(const Duration(seconds: 2), () async {
Shield.latestDeviceResult.then((latestDeviceResult) => {
if (latestDeviceResult == null)
{print("error ${Shield.latestError?.message}")}
else
{print("result $latestDeviceResult")}
});
});
}
Future<void> initShield() async {
ShieldCallback shieldCallback =
ShieldCallback((Map<String, dynamic> result) {
setState(() {
jsonString = const JsonEncoder.withIndent(' ').convert(result);
});
print("callback result: $result");
}, (ShieldError error) {
print("callback error: ${error.message}");
});
var data = <String, String>{};
data["user_id"] = "12345";
final valueInt = await Shield.isShieldInitialized;
ShieldConfig config = ShieldConfig(
siteID: "59947973924580a1bf14766e74331641870de57f",
key: "242236650000000059947973924580a1bf14766e74331641870de57f",
shieldCallback: shieldCallback,
environment: ShieldEnvironment.prod,
logLevel: ShieldLogLevel.debug);
if (!valueInt) {
Shield.initShield(config);
Future.delayed(const Duration(seconds: 2), () async {
final valueInt = await Shield.isShieldInitialized;
if (valueInt) {
Shield.sendAttributes("login", data);
}
});
} else {
Shield.sendAttributes("login", data);
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Text(jsonString, key: const Key('jsonString')),
),
SizedBox(
height: 100,
width: double.infinity,
child: MaterialButton(
onPressed: () {
Shield.sendDeviceSignature("test sending device signature")
.then((value) => print(
"sending device signature in real time successful: $value"));
},
child: const Text("Send attributes"),
),
),
],
)),
);
}
}
更多关于Flutter防欺诈检测插件flutter_shieldfraud的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter防欺诈检测插件flutter_shieldfraud的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用flutter_shieldfraud
插件进行防欺诈检测的示例代码。flutter_shieldfraud
是一个用于防止欺诈行为的Flutter插件,它通常集成了一些常见的防欺诈机制,如设备指纹、行为分析等。不过,请注意,由于这是一个假设的插件,实际的API和用法可能会有所不同。你需要参考插件的官方文档来确保准确性。
首先,你需要在你的pubspec.yaml
文件中添加这个插件:
dependencies:
flutter:
sdk: flutter
flutter_shieldfraud: ^x.y.z # 替换为实际的版本号
然后运行flutter pub get
来安装插件。
接下来,在你的Flutter应用中初始化并使用这个插件。下面是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:flutter_shieldfraud/flutter_shieldfraud.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Shield Fraud Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final FlutterShieldFraud _flutterShieldFraud = FlutterShieldFraud();
@override
void initState() {
super.initState();
_initializeFlutterShieldFraud();
}
Future<void> _initializeFlutterShieldFraud() async {
try {
// 初始化插件,可能需要一些配置,比如API密钥等
await _flutterShieldFraud.initialize(
apiKey: 'YOUR_API_KEY', // 替换为你的API密钥
// 其他可能的配置参数...
);
// 检查设备是否受到欺诈威胁
bool isFraudDetected = await _flutterShieldFraud.checkFraud();
if (isFraudDetected) {
// 处理欺诈检测到的情况,比如显示警告或退出应用
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('Fraud Detected'),
content: Text('This device has been flagged for potential fraud.'),
actions: <Widget>[
TextButton(
onPressed: () {
Navigator.of(context).pop();
// 退出应用或采取其他措施
exit(0);
},
child: Text('Exit'),
),
],
);
},
);
} else {
// 正常处理流程
print('No fraud detected.');
}
} catch (e) {
// 处理初始化过程中的错误
print('Error initializing FlutterShieldFraud: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Shield Fraud Demo'),
),
body: Center(
child: Text('Checking for fraud...'),
),
);
}
}
在这个示例中,我们做了以下几件事:
- 在
pubspec.yaml
文件中添加了flutter_shieldfraud
插件。 - 在
MyApp
应用的home
页面中初始化了FlutterShieldFraud
插件。 - 在
_initializeFlutterShieldFraud
方法中调用了插件的initialize
方法来初始化插件,并设置了API密钥(你需要替换为实际的API密钥)。 - 调用了
checkFraud
方法来检查设备是否受到欺诈威胁,并根据结果进行处理。
请注意,这只是一个简单的示例,实际的防欺诈检测可能涉及更多的配置和复杂的逻辑。你需要根据flutter_shieldfraud
插件的官方文档来调整和完善代码。