Flutter SEON SDK集成插件seon_sdk_flutter_plugin的使用
Flutter SEON SDK集成插件seon_sdk_flutter_plugin的使用
简介
seon_sdk_flutter_plugin
是一个官方的Flutter插件,用于将SEON的高级反欺诈和设备指纹功能集成到您的Flutter应用程序中。该插件为Android和iOS平台提供了统一的接口,以便访问SEON SDK的功能。
平台特定要求
Android
- 最低版本:Android 5.0(API级别21)
- 必要权限:
INTERNET
权限
- 可选权限:
READ_PHONE_STATE
权限(仅适用于API 28以下)用于获取is_on_call
和device_cellular_id
ACCESS_WIFI_STATE
权限(仅适用于API 27以下)用于获取wifi_ssid
ACCESS_NETWORK_STATE
权限用于获取WiFi配置和蜂窝数据配置ACCESS_FINE_LOCATION
(从API 29开始)和ACCESS_COARSE_LOCATION
(从API 27开始)权限用于获取wifi_mac_address
、wifi_ssid
和device_location
ACCESS_BACKGROUND_LOCATION
(从API 29开始)权限用于在应用后台时获取位置更新com.google.android.providers.gsf.permission.READ_GSERVICES
权限用于获取gsf_id
iOS
- 最低版本:iOS 12.0
- 可选权限:
- 访问WiFi信息权限用于获取
wifi_mac_address
和wifi_ssid
- Core Location权限(从iOS 13开始)用于获取
device_location
、wifi_mac_address
和wifi_ssid
- 访问WiFi信息权限用于获取
使用插件
SEON SDK返回一个加密的base64编码字符串。为了获取设备详细信息的JSON,您需要通过Fraud API请求发送此字符串,并将结果包含在响应中。客户端无法访问或修改payload。
final _seonSdkFlutterPlugin = SeonSdkFlutterPlugin();
try {
String? fingerprint = await _seonSdkFlutterPlugin.getFingerprint("UNIQUE_SESSION_ID");
// 将fingerprint设置为Fraud API请求中的session属性
} catch (e) {
print("Error getting fingerprint: $e");
}
行为监控(可选)
行为监控允许SEON SDK检测设备上的潜在可疑用户行为。SDK在会话期间收集数据,并分析这些数据以识别潜在的欺诈环境和行为。此功能增强了SDK防止欺诈的能力,能够检测各种形式的自动化或可疑活动,例如机器人使用或设备农场。
要启用行为监控,请在您希望检测可疑活动的地方调用startBehaviourMonitoring
,并在合适的时候调用stopBehaviourMonitoring
来停止监控并获取结果。
final _seonSdkFlutterPlugin = SeonSdkFlutterPlugin();
// 在相关用户旅程之前启动行为监控
try {
_seonSdkFlutterPlugin.startBehaviourMonitoring();
} catch (e) {
print('Failed to start behaviour monitoring: $e');
}
/* ---- 相关用户旅程发生在这里 ----
* 注意:行为分析需要时间来收集用户行为信号,
* 因此建议至少运行几秒钟。
*/
// 当您想要收集结果时,调用stopBehaviourMonitoring()并获取指纹
try {
String? fingerprint = await _seonSdkFlutterPlugin.stopBehaviourMonitoring("UNIQUE_SESSION_ID");
// 将fingerprint设置为Fraud API请求中的session属性
} catch (e) {
print("Error getting fingerprint: $e");
}
可能的suspicious_flags
值
"possible_automation"
:表明可能有自动化工具或脚本控制设备。"possible_device_farm"
:表明设备可能是设备农场的一部分,用于欺诈活动。"possible_vishing"
:标记可能的语音钓鱼活动,用户可能被迫提供敏感信息。"possible_ongoing_call"
(仅限Android):标记可能正在进行电话通话,这在未授予READ_PHONE_STATE
权限的情况下特别有用。
地理位置集成
您可以启用或禁用地理位置功能,并根据需要配置地理位置参数。
// 提示用户授予适当的地理位置权限
// ...
// 设置地理位置属性
final geoConfig = SeonGeolocationConfigBuilder()
.withGeolocationEnabled(true)
.withLocationServiceTimeoutMs(3000)
.withPrefetchEnabled(true)
.withMaxLocationCacheAgeSec(600)
.build();
_seonSdkFlutterPlugin.setGeolocationConfig(geoConfig);
// 生成指纹
完整示例Demo
以下是一个完整的示例应用程序,展示了如何使用seon_sdk_flutter_plugin
插件来获取设备指纹、启动和停止行为监控以及处理地理位置配置。
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:seon_sdk_flutter_plugin/seon_sdk_flutter_plugin.dart';
import 'package:seon_sdk_flutter_plugin/seon_sdk_geolocation_config_builder.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _fingerprint = 'Unknown';
final _seonSdkFlutterPlugin = SeonSdkFlutterPlugin();
[@override](/user/override)
void initState() {
super.initState();
try {
// 配置地理位置
final geoConfig = SeonGeolocationConfigBuilder()
.withGeolocationEnabled(false)
.withLocationServiceTimeoutMs(5000)
.withPrefetchEnabled(true)
.withMaxLocationCacheAgeSec(10)
.build();
_seonSdkFlutterPlugin.setGeolocationConfig(geoConfig);
} catch (e) {
print('$e');
}
}
// 获取设备指纹
Future<void> getFingerprint() async {
String fingerprint;
try {
fingerprint = await _seonSdkFlutterPlugin
.getFingerprint("flutter-demo-session-id-1111") ??
'Error getting fingerprint';
} catch (e) {
fingerprint = 'Failed to get fingerprint $e';
}
if (!mounted) return;
print(fingerprint);
setState(() {
_fingerprint = fingerprint;
});
}
// 停止行为监控并获取指纹
Future<void> stopBehaviourMonitoring() async {
String fingerprint;
try {
fingerprint = await _seonSdkFlutterPlugin.stopBehaviourMonitoring(
"flutter-behaviour-demo-session-id-2222") ??
'Error getting fingerprint';
} catch (e) {
fingerprint = 'Failed to get fingerprint $e';
}
if (!mounted) return;
print(fingerprint);
setState(() {
_fingerprint = fingerprint;
});
}
// 启动行为监控
Future<void> startBehaviourMonitoring() async {
try {
_seonSdkFlutterPlugin.startBehaviourMonitoring();
print('Behaviour started');
} catch (e) {
print('Failed to start behaviour monitoring: $e');
if (mounted) {
setState(() {
_fingerprint = 'Failed to start behaviour $e';
});
}
}
}
// 复制文本到剪贴板
Future<void> copyToClipboard(String text) async {
await Clipboard.setData(ClipboardData(text: text));
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('Copied to clipboard')),
);
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Seon SDK Example'),
),
body: Center(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Expanded(
child: SingleChildScrollView(
child: SelectableText(
'Fingerprint: $_fingerprint\n',
textAlign: TextAlign.center,
),
),
),
ElevatedButton(
onPressed: getFingerprint,
child: const Text('Get Fingerprint'),
),
ElevatedButton(
onPressed: () => copyToClipboard(_fingerprint),
child: const Text('Copy to Clipboard'),
),
ElevatedButton(
onPressed: startBehaviourMonitoring,
child: const Text('Start Behaviour Monitoring'),
),
ElevatedButton(
onPressed: stopBehaviourMonitoring,
child: const Text('Stop Behaviour Monitoring'),
),
],
),
),
),
),
);
}
}
更多关于Flutter SEON SDK集成插件seon_sdk_flutter_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter SEON SDK集成插件seon_sdk_flutter_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中集成并使用seon_sdk_flutter_plugin
进行SEON SDK集成的代码示例。这个示例将展示如何安装插件、初始化SDK以及进行一些基本操作的代码。
1. 安装插件
首先,你需要在pubspec.yaml
文件中添加seon_sdk_flutter_plugin
依赖:
dependencies:
flutter:
sdk: flutter
seon_sdk_flutter_plugin: ^最新版本号 # 替换为实际的最新版本号
然后,运行flutter pub get
来安装依赖。
2. 初始化SDK
在你的Flutter应用的入口文件(通常是main.dart
)中,初始化SEON SDK。
import 'package:flutter/material.dart';
import 'package:seon_sdk_flutter_plugin/seon_sdk_flutter_plugin.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
// 初始化SEON SDK
SeonSdkFlutterPlugin.initialize(
apiKey: '你的SEON API密钥', // 替换为你的实际API密钥
onInitialized: (success) {
if (success) {
print('SEON SDK initialized successfully.');
} else {
print('Failed to initialize SEON SDK.');
}
},
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter SEON SDK Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'SEON SDK is initialized!',
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
// 示例:执行某个SEON SDK的功能,比如跟踪事件
trackEvent();
},
child: Text('Track Event'),
),
],
),
),
);
}
void trackEvent() {
// 示例:跟踪一个自定义事件
SeonSdkFlutterPlugin.trackEvent(
eventName: 'custom_event',
eventProperties: <String, dynamic>{
'property1': 'value1',
'property2': 123,
},
onSuccess: (result) {
print('Event tracked successfully: $result');
},
onError: (error) {
print('Failed to track event: $error');
},
);
}
}
3. 运行应用
确保你的Flutter开发环境已经配置好,然后运行你的应用:
flutter run
注意事项
- API密钥:确保你已经从SEON平台获取了API密钥,并在代码中正确替换。
- 权限:检查你的
AndroidManifest.xml
和Info.plist
文件,确保已经添加了必要的权限配置(如果需要)。 - 依赖版本:始终使用最新的
seon_sdk_flutter_plugin
版本,以确保获得最新的功能和修复。
这个示例展示了如何集成和使用seon_sdk_flutter_plugin
进行基本的SDK初始化和事件跟踪。根据SEON SDK的文档,你可以进一步探索更多高级功能。