Flutter生物识别认证插件mantra_biometric的使用
Flutter生物识别认证插件mantra_biometric的使用
mantra_biometric
注意: 我们已测试此插件与Mantra MFS100-Fingerprint-Sensor设备。
该插件用于在Flutter应用中启用基于生物识别的Aadhaar认证。支持Android、Web和Windows平台。
平台支持
Android | iOS | MacOS | Web | Linux | Windows |
---|---|---|---|---|---|
✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
前提条件
安装Mantra MFS 100驱动程序和RD服务
Android
- 从Google Play商店下载Mantra RD Service应用程序。
Web, Windows
- 下载RD服务: 下载RD服务
- 下载Windows驱动程序: 下载Windows驱动程序
- 运行下载的exe文件
连接Mantra MFS 100到计算机
- 将生物识别设备插入USB端口。
- 第一次初始化时,右下角会提示拔出并重新插入设备。
- 成功连接后,屏幕右下角会显示“Biometric device attached”(生物识别设备已连接)。
- 成功连接到服务器后,会显示“Framework ready to use”(框架准备就绪)。
使用方法
要在项目中使用此插件,请将其添加为依赖项:
dependencies:
mantra_biometric: ^版本号
Flutter Web支持
请在您的Flutter项目的web/index.html
文件内的<head>
标签内添加以下代码片段:
<script src="./assets/packages/mantra_biometric/assets/mantra.js" defer></script>
示例代码
以下是一个完整的示例代码,展示了如何使用mantra_biometric
插件进行设备信息获取和指纹扫描。
import 'dart:convert';
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:mantra_biometric/mantra_biometric.dart';
import 'package:mantra_biometric/utils/mantra_plugin_exception.dart';
import 'package:xml/xml.dart';
import 'package:collection/collection.dart';
void main() {
runApp(MaterialApp(home: const MyApp()));
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final _mantraBiometricPlugin = MantraBiometric();
@override
void initState() {
super.initState();
}
// 显示警告对话框
displyAlert(String message) {
showDialog(
context: context,
builder: (context) => AlertDialog(
content: Text(message),
));
}
String result = "";
// 获取设备信息
getDeviceInfo() async {
try {
String output = await _mantraBiometricPlugin.getDeviceInformation() ?? "";
result = output;
setState(() {});
} on RDClientNotFound catch (e) {
displyAlert("安装客户端");
} catch (e) {
displyAlert("发生错误");
}
}
// 扫描指纹
scanFingerPrint() async {
try {
String wadh = "";
String pidOptions =
"<PidOptions ver=\"1.0\"> <Opts fCount=\"1\" fType=\"2\" pCount=\"0\" format=\"0\" pidVer=\"2.0\" wadh=\"$wadh\" timeout=\"20000\" posh=\"UNKNOWN\" env=\"P\" /></PidOptions>";
result = await _mantraBiometricPlugin.captureFingerPrint(
pidOptions: pidOptions) ??
"";
setState(() {});
} on RDClientNotFound catch (e) {
log("${e.code}");
displyAlert("安装客户端");
} catch (e) {
displyAlert("发生错误 ${e.runtimeType} $e");
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Mantra Biometric 示例'),
),
body: SingleChildScrollView(
child: Column(
children: [
MaterialButton(
onPressed: getDeviceInfo,
child: const Text("获取设备信息"),
),
const SizedBox(
height: 20,
),
MaterialButton(
onPressed: scanFingerPrint,
child: const Text("扫描指纹"),
),
const SizedBox(
height: 20,
),
Text("$result")
],
),
),
);
}
}
异常处理
import 'package:mantra_biometric/utils/mantra_plugin_exception.dart';
// 如果未安装RD服务客户端,则抛出异常
RDClientNotFound
// 如果传递了错误的pidOptions参数给captureFingerPrint方法,则抛出异常
RDException
更多关于Flutter生物识别认证插件mantra_biometric的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter生物识别认证插件mantra_biometric的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用mantra_biometric
插件进行生物识别认证的示例代码。这个插件支持指纹、面部识别等多种生物识别方式。
首先,确保你已经在pubspec.yaml
文件中添加了mantra_biometric
依赖:
dependencies:
flutter:
sdk: flutter
mantra_biometric: ^latest_version # 替换为最新版本号
然后运行flutter pub get
来安装依赖。
接下来,你可以在你的Flutter项目中按如下方式使用mantra_biometric
插件:
import 'package:flutter/material.dart';
import 'package:mantra_biometric/mantra_biometric.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Biometric Authentication Example'),
),
body: Center(
child: BiometricAuthButton(),
),
),
);
}
}
class BiometricAuthButton extends StatefulWidget {
@override
_BiometricAuthButtonState createState() => _BiometricAuthButtonState();
}
class _BiometricAuthButtonState extends State<BiometricAuthButton> {
final Biometric _biometric = Biometric();
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: () async {
try {
bool isAvailable = await _biometric.canAuthenticate;
if (!isAvailable) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Biometric authentication is not available on this device.')),
);
return;
}
var biometricType = await _biometric.getAvailableBiometrics();
print('Available Biometrics: $biometricType');
bool isAuthenticated = await _biometric.authenticate(
localizedReason: 'Please authenticate to continue',
stickyAuth: true,
);
if (isAuthenticated) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Authenticated successfully!')),
);
} else {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Authentication failed.')),
);
}
} catch (e) {
print('Error during biometric authentication: $e');
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Error: ${e.message}')),
);
}
},
child: Text('Authenticate'),
);
}
}
在这个示例中:
- 我们首先检查设备上是否可用生物识别认证功能。
- 然后,我们获取可用的生物识别类型(例如,指纹或面部识别)。
- 使用
authenticate
方法进行生物识别认证,并传入一个本地化的理由字符串,告诉用户为什么需要进行认证。 - 根据认证结果,显示相应的SnackBar消息。
请注意,在实际应用中,你可能需要处理更多的错误情况和用户交互细节,例如处理用户取消认证的情况。此外,根据具体需求,你可能还需要在认证成功后执行特定的逻辑操作。