Flutter生物识别签名插件biopassid_signature_sdk的使用

Flutter生物识别签名插件biopassid_signature_sdk的使用


BioPass ID

BioPass ID Signature SDK Flutter

Flutter Pub Instagram BioPass ID Contact us

快速开始指南前置条件安装如何使用许可证密钥SignatureConfig其他更新日志支持


快速开始指南 #

首先,您需要一个许可证密钥来使用 biopassid_signature_sdk。要获取您的许可证密钥,请通过我们的网站 BioPass ID 联系我们。 #

请查看我们的 官方文档 以获取更多关于 BioPass ID 的详细信息。


1. 前置条件 #

项目 Android iOS
支持 SDK 23+ iOS 15+

前置条件:

  • 许可证密钥
  • 必须连接互联网以验证许可证

2. 安装 #

首先,在 pubspec.yaml 文件中添加 biopassid_signature_sdk 作为依赖项。

Android

android/app/build.gradle 文件中将最低 Android SDK 版本更改为 23 或更高版本。

minSdkVersion 23

iOS

需要 iOS 15.0 或更高版本。

然后进入项目的 ios 文件夹并运行 pod install

# 进入 ios 文件夹
$ cd ios

# 安装依赖
$ pod install

隐私声明文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>NSPrivacyCollectedDataTypes</key>
	<array>
		<dict>
			<key>NSPrivacyCollectedDataType</key>
			<string>NSPrivacyCollectedDataTypeOtherUserContent</string>
			<key>NSPrivacyCollectedDataTypeLinked</key>
			<false/>
			<key>NSPrivacyCollectedDataTypeTracking</key>
			<false/>
			<key>NSPrivacyCollectedDataTypePurposes</key>
			<array>
				<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
			</array>
		</dict>
		<dict>
			<key>NSPrivacyCollectedDataType</key>
			<string>NSPrivacyCollectedDataTypeDeviceID</string>
			<key>NSPrivacyCollectedDataTypeLinked</key>
			<false/>
			<key>NSPrivacyCollectedDataTypeTracking</key>
			<false/>
			<key>NSPrivacyCollectedDataTypePurposes</key>
			<array>
				<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
			</array>
		</dict>
	</array>
	<key>NSPrivacyTracking</key>
	<false/>
	<key>NSPrivacyAccessedAPITypes</key>
	<array>
		<dict>
			<key>NSPrivacyAccessedAPITypeReasons</key>
			<array>
				<string>CA92.1</string>
			</array>
			<key>NSPrivacyAccessedAPIType</key>
			<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
		</dict>
	</array>
</dict>
</plist>

3. 如何使用 #

在 Flutter 项目中调用签名功能非常简单:

import 'package:flutter/material.dart';
import 'package:biopassid_signature_sdk/biopassid_signature_sdk.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '签名演示',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  late SignatureController controller;

  [@override](/user/override)
  void initState() {
    super.initState();
    final config = SignatureConfig(licenseKey: 'your-license-key');
    controller = SignatureController(config);
  }

  void takeSignature() async {
    final signature = await controller.takeSignature();
    print('签名: ${signature[0]}');
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('签名演示'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: takeSignature,
          child: const Text('捕获签名'),
        ),
      ),
    );
  }
}

4. 许可证密钥 #

首先,您需要一个许可证密钥来使用 biopassid_signature_sdk。要获取您的许可证密钥,请通过我们的网站 BioPass ID 联系我们。 #

要使用 biopassid_signature_sdk,您需要一个许可证密钥。设置许可证密钥非常简单,只需像设置其他属性一样进行设置即可。例如:

final config = SignatureConfig(licenseKey: 'your-license-key');

SignatureConfig #

您还可以在应用程序中使用预构建的配置,以便自动启用更适合您应用的功能。您可以实例化每个配置并使用其默认属性,或者如果您愿意,可以更改所有可用的配置。以下是目前支持的类型:

SignatureConfig #

名称 类型 默认值
licenseKey String ‘’
screenOrientation SignatureScreenOrientation SignatureScreenOrientation.portrait
pencilColor Color Color(0xFF000000)
pencilWidth int 5
backgroundColor Color Color(0xFFFFFFFF)
overlayColor Color Color(0x80000000)
fontFamily String ‘opensans_bold’
titleText SignatureTextOptions
backButton SignatureButtonOptions
saveButton SignatureButtonOptions
deleteButton SignatureButtonOptions
undoButton SignatureButtonOptions

默认配置:

final defaultConfig = SignatureConfig(
  licenseKey: '',
  screenOrientation: SignatureScreenOrientation.portrait, // Android only
  pencilColor: const Color(0xFF000000),
  pencilWidth: 5,
  backgroundColor: const Color(0xFFFFFFFF),
  overlayColor: const Color(0x80000000),
  fontFamily: 'signaturesdk_opensans_bold',
  titleText: SignatureTextOptions(
    enabled: true,
    content: 'Captura de assinatura digital',
    textColor: const Color(0xFFFFFFFF),
    textSize: 20,
  ),
  backButton: SignatureButtonOptions(
    enabled: true,
    backgroundColor: const Color(0x00000000),
    buttonPadding: 0,
    buttonSize: const Size(56, 56),
    iconOptions: SignatureIconOptions(
      enabled: true,
      iconFile: 'signaturesdk_ic_close',
      iconColor: const Color(0xFFFFFFFF),
      iconSize: const Size(32, 32),
    ),
    labelOptions: SignatureTextOptions(
      enabled: false,
      content: 'Voltar',
      textColor: const Color(0xFFFFFFFF),
      textSize: 14,
    ),
  ),
  saveButton: SignatureButtonOptions(
    enabled: true,
    backgroundColor: const Color(0xFFFFFFFF),
    buttonPadding: 0,
    buttonSize: const Size(56, 56),
    iconOptions: SignatureIconOptions(
      enabled: true,
      iconFile: 'signaturesdk_ic_save',
      iconColor: const Color(0xFFFFFFFF),
      iconSize: const Size(32, 32),
    ),
    labelOptions: SignatureTextOptions(
      enabled: false,
      content: 'Salvar',
      textColor: const Color(0xFFFFFFFF),
      textSize: 14,
    ),
  ),
  deleteButton: SignatureButtonOptions(
    enabled: true,
    backgroundColor: const Color(0xFFFFFFFF),
    buttonPadding: 0,
    buttonSize: const Size(56, 56),
    iconOptions: SignatureIconOptions(
      enabled: true,
      iconFile: 'signaturesdk_ic_delete',
      iconColor: const Color(0xFFFFFFFF),
      iconSize: const Size(32, 32),
    ),
    labelOptions: SignatureTextOptions(
      enabled: false,
      content: 'Deletar',
      textColor: const Color(0xFFFFFFFF),
      textSize: 14,
    ),
  ),
  undoButton: SignatureButtonOptions(
    enabled: true,
    backgroundColor: const Color(0xFFFFFFFF),
    buttonPadding: 0,
    buttonSize: const Size(56, 56),
    iconOptions: SignatureIconOptions(
      enabled: true,
      iconFile: 'signaturesdk_ic_undo',
      iconColor: const Color(0xFFFFFFFF),
      iconSize: const Size(32, 32),
    ),
    labelOptions: SignatureTextOptions(
      enabled: false,
      content: 'Desfazer',
      textColor: const Color(0xFFFFFFFF),
      textSize: 14,
    ),
  ),
);

SignatureButtonOptions #

名称 类型 默认值
enabled bool true
backgroundColor Color Color(0xFFFFFFFF)
buttonPadding int 0
buttonSize Size Size(56, 56)
iconOptions SignatureIconOptions
labelOptions SignatureTextOptions

SignatureIconOptions #

名称 类型 默认值
enabled bool true
iconFile String ‘ic_close’
iconColor Color Color(0xFF323232)
iconSize Size Size(32, 32)

SignatureTextOptions #

名称 类型 默认值
enabled bool true
content String ‘’
textColor Color Color(0xFF323232)
textSize int 14

SignatureScreenOrientation (枚举) #

名称
SignatureScreenOrientation.portrait
SignatureScreenOrientation.landscape

如何更改字体家族 #

在 Android 端

您可以使用默认字体或设置自己的字体。要设置字体家族,请在 android/app/src/main/res 目录下创建一个名为 font 的文件夹,并下载所需的字体文件放入该文件夹中。所有字体文件名必须仅包含小写字母(a-z)、数字(0-9)或下划线。结构应类似于以下内容:

在 iOS 端

要在 Xcode 项目中添加字体文件:

  1. 在项目导航器中选择资源目录。
  2. 将字体从 Finder 拖动到项目中。这会将字体复制到您的项目中。
  3. 选择字体或包含字体的文件夹,并确保目标成员资格已勾选为您的应用目标。

然后,在应用的 Info.plist 文件中添加 "Fonts provided by application" 键。对于键的值,提供一个包含所添加字体文件相对路径的字符串数组。

例如,字体文件位于 fonts 目录下,则在 Info.plist 文件中使用 fonts/roboto_mono_bold_italic.ttf 作为字符串值。

在 Dart 端

最后,在 Flutter 应用中实例化 SignatureConfig 时传递字体文件名。

final config = SignatureConfig(
  licenseKey: 'your-license-key',
  fontFamily: 'roboto_mono_bold_italic',
);

如何更改图标 #

在 Android 端

您可以使用默认图标或定义自己的图标。要设置图标,请下载所需的图标并将其放入 android/app/src/main/res/drawable 文件夹中。所有图标文件名必须仅包含小写字母(a-z)、数字(0-9)或下划线。结构应类似于以下内容:

在 iOS 端

要在 Xcode 项目中添加图标文件:

  1. 在项目导航器中选择一个资产目录:具有 .xcassets 扩展名的文件。
  2. 将图像从 Finder 拖放到大纲视图中。一个新图像集出现在大纲视图中,图像资产出现在详细区域的井中。

在 Dart 端

最后,在 Flutter 应用中实例化 SignatureConfig 时传递图标文件名。

final config = SignatureConfig(licenseKey: 'your-license-key');
// 更改返回按钮图标
config.backButton.iconOptions.iconFile = 'ic_baseline_camera';
// 更改保存按钮图标
config.saveButton.iconOptions.iconFile = 'ic_baseline_camera';
// 更改删除按钮图标
config.deleteButton.iconOptions.iconFile = 'ic_baseline_camera';
// 更改撤销按钮图标
config.undoButton.iconOptions.iconFile = 'ic_baseline_camera';

其他 #

如果您喜欢签名 SDK 并希望了解我们的其他产品?我们有面部识别和指纹检测解决方案。


更新日志 #

v0.1.5 #

  • 文档更新;
  • 将 Android 的 minSdkVersion 升级为 23;
  • 将 Android 的 Kotlin 升级到 1.9.10;
  • 在 iOS 上添加了隐私声明文件。

v0.1.4 #

  • 文档更新;
  • SignatureConfig 中移除了 noDrawingAlert

v0.1.3 #

  • 文档更新。

v0.1.2 #

  • 文档更新;
  • 添加了新的配置 noDrawingAlert
    • 现在可以在尝试保存空白签名时显示一个警告对话框;
  • 修复了 Android 的许可证功能中的错误;
  • 添加了有关屏幕旋转的 iOS 指导。

v0.1.1 #

  • 文档更新;
  • 修复和改进。

v0.1.0 #

  • 添加文档;
  • 支持签名捕获功能;
  • 提供可自定义的 UI;
  • 返回捕获的签名图像。

这是完整的示例代码,您可以直接在 Flutter 项目中使用它:

import 'package:flutter/material.dart';
import 'package:biopassid_signature_sdk/biopassid_signature_sdk.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '签名演示',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  late SignatureController controller;

  [@override](/user/override)
  void initState() {
    super.initState();
    final config = SignatureConfig(licenseKey: 'your-license-key');
    controller = SignatureController(config);
  }

  void takeSignature() async {
    final signature = await controller.takeSignature();
    print('签名: ${signature[0]}');
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('签名演示'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: takeSignature,
          child: const Text('捕获签名'),
        ),
      ),
    );
  }
}

更多关于Flutter生物识别签名插件biopassid_signature_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter生物识别签名插件biopassid_signature_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


biopassid_signature_sdk 是一个用于在 Flutter 应用中实现生物识别签名的插件。它允许用户使用生物识别技术(如指纹、面部识别等)进行签名验证,从而增强应用的安全性。以下是如何在 Flutter 项目中使用 biopassid_signature_sdk 的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 biopassid_signature_sdk 的依赖:

dependencies:
  flutter:
    sdk: flutter
  biopassid_signature_sdk: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 文件中导入插件:

import 'package:biopassid_signature_sdk/biopassid_signature_sdk.dart';

3. 初始化 SDK

在使用插件之前,你需要初始化 SDK。通常你可以在 main.dart 或应用的入口处进行初始化:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Biopassid Signature SDK
  await BiopassidSignatureSdk.initialize(
    apiKey: 'YOUR_API_KEY',  // 替换为你的 API Key
    environment: Environment.sandbox,  // 或 Environment.production
  );
  
  runApp(MyApp());
}

4. 创建签名请求

你可以使用 BiopassidSignatureSdk 创建一个签名请求:

void createSignature() async {
  try {
    // 创建签名请求
    final signatureRequest = SignatureRequest(
      userId: 'user123',
      documentId: 'doc456',
      documentName: 'Contract',
      documentDescription: 'Sample contract for testing',
    );

    // 发起签名请求
    final signatureResponse = await BiopassidSignatureSdk.createSignature(signatureRequest);

    // 处理签名响应
    print('Signature ID: ${signatureResponse.signatureId}');
    print('Status: ${signatureResponse.status}');
  } catch (e) {
    print('Error: $e');
  }
}

5. 验证签名

你可以使用 BiopassidSignatureSdk 来验证签名:

void verifySignature(String signatureId) async {
  try {
    // 发起签名验证请求
    final verificationResponse = await BiopassidSignatureSdk.verifySignature(signatureId);

    // 处理验证响应
    print('Verification Status: ${verificationResponse.status}');
    print('Verification Message: ${verificationResponse.message}');
  } catch (e) {
    print('Error: $e');
  }
}

6. 处理回调

你可以监听签名过程中的回调事件,例如用户取消签名或签名失败:

BiopassidSignatureSdk.setCallbackListener((event) {
  switch (event) {
    case SignatureEvent.cancelled:
      print('Signature was cancelled by the user.');
      break;
    case SignatureEvent.failed:
      print('Signature failed.');
      break;
    case SignatureEvent.success:
      print('Signature was successful.');
      break;
  }
});

7. 处理错误

在使用过程中,可能会遇到各种错误,例如网络错误、API 错误等。你可以通过 try-catch 块来捕获和处理这些错误:

try {
  // 调用 SDK 方法
} catch (e) {
  print('An error occurred: $e');
}
回到顶部