Flutter移动SDK集成插件facia_mobilesdk的使用

Flutter移动SDK集成插件facia_mobilesdk的使用

目录

1. 简介

这是最简单的基本Flutter SDK,提供3D活体检测和匹配照片ID的功能。SDK捕获所需功能的证据,并将其发送到API以获取结果。

该SDK提供了两种类型的验证:

  • 3D活体检测
  • 匹配照片ID

2. 范围

此文档仅用于开发者理解代码结构。

3. 目的

本文档旨在协助开发人员和技术专家将Facia的API集成到其基于移动平台的应用程序中。

本文档旨在解释验证服务的使用以及身份验证过程中涉及的技术过程。用户被告知API所需的不同类型验证数据以及需要转发验证数据的数据格式。

4. 技术栈

4.1 支持的平台

  • Android 5.0 (API level 21) 或更高版本。
  • iOS 11 或更高版本。

4.2 一般要求

  • 互联网连接
  • SDK支持的架构:armeabi-v7a, x86, arm64-v8a, x86_64

4.3 权限

Facia需要相机权限才能正常工作。

4.4 开发环境设置

访问安装指南

4.5 安装

  1. 在终端中运行以下命令克隆项目:
    git clone https://gl.facia.ai/mobile_apps/facia-flutter.git
    
  2. 在Android Studio中打开克隆的项目。

4.6 开发结构

[]

4.7 代码架构

Flutter插件基本上是在Flutter原生模块中桥接Android和iOS原生SDK。在Android和iOS模块中分别遵循HMVC和MVC结构。

5. 功能/端点

Flutter插件不使用特定的端点,而是将原生Android和iOS模块集成到插件中。因此,在原生SDK中使用的所有端点也在此处使用。

5.1 创建交易API

这是移动应用程序的主要API,在捕获证据后提交证据,此API用于QL、DL和照片到ID匹配。

https://app.facia.ai/backend/api/transaction/create-transaction

5.2 检查活体检测API

此API用于在附加活体检测的情况下发送捕获的QL和DL证据,如果QL失败,基本上当QL在附加活体检测情况下失败时,必须与DL证据一起发送QL’证据以记录会话。

https://app.facia.ai/backend/api/transaction/check-liveness

5.3 活体检测结果API

此API用于获取3D活体检测请求的结果。

https://app.facia.ai/backend/api/transaction/liveness-result

5.4 反馈API

SDK在获取结果后获取用户的反馈,此API用于提交反馈。

https://app.facia.ai/backend/api/transaction/create-feedback

6. 依赖项

Flutter插件中没有使用特定的依赖项。仅在Flutter的原生模块中包含原生SDK。

7. 环境

本地

此环境用于开发和本地测试,推送代码到生产环境之前。在本地构建中,通过直接将Facia模块安装到实际设备上来测试SDK。

生产环境

这是一个实时环境,由公众使用,必须达到100%无错误。

如何推送/上线更改

  1. 从所需Git存储库中克隆或拉取项目。
  2. 修复错误或开发新功能。
  3. 开发者自行测试更改。
  4. 更新pubspec.yaml文件中的插件版本。
  5. 更新CHANGELOG.md文件。
  6. 确保主.dart文件中没有凭证/令牌或不必要的日志。
  7. 使用Facia帐户登录pub.dev网站。
  8. 在从"plugin-with-native-sdk"分支克隆的项目中打开终端。运行命令flutter pub publish --dry-run
  9. 如果一切顺利,运行命令flutter pub publish
  10. Flutter插件现在已发布到pub.dev。
  11. 现在更新演示应用和文档(更新历史和pub包版本)。将演示应用推送到GitHub并在https://developers.facia.ai/上更新文档。

在GitHub上的演示应用

  1. 从GitHub克隆Flutter样本应用。
  2. 打开pubspec.yaml文件。
  3. 将"facia_mobilesdk"版本更新为最新版本。
  4. 运行并测试应用程序。

8. 版本历史

SDK版本 更改
1.0.0 iOS和Android SDK的最新发布。
1.0.1 功能和稳定性改进。
1.0.2 设计和流程改进。
1.0.3 访问令牌流更新。
1.0.4 交互式活体检测改进。
1.0.5 流程和设计改进。
1.0.6 交互式活体检测流程改进。
1.0.7 功能和稳定性改进。
1.0.8 功能和稳定性改进。
1.0.9 功能和稳定性改进。
1.1.0 添加对Android 14的支持。
1.1.1 功能和稳定性改进。
1.1.3 更新依赖项。
1.1.4 更新依赖项。
1.1.5 添加弱光检测功能。
1.1.8 更新配置对象。

示例代码

import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:facia_mobilesdk/facia_mobilesdk.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
          primarySwatch: Colors.blue,
          scaffoldBackgroundColor: Colors.white,
          fontFamily: 'OpenSans'),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key}) : super(key: key);

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

class _MyHomePageState extends State<MyHomePage> {
  Map<String, Object> configObj = {
    // "showConsent": false,
    // "showVerificationType": false
  };

  /*
   * 此函数向Facia的Flutter插件发送请求
   * 并将响应接收在一个变量中
   */

  Future<void> initPlatformState() async {
    String response = "";
    try {
      response = await FaciaSdk.sendRequest(
          token: 'Access_Token', configObject: configObj);
      var object = jsonDecode(response);
      ScaffoldMessenger.of(context).showSnackBar(SnackBar(
        content: Text(object.toString()),
      ));

      print(object.toString());
      print(object["event"].toString());
    } catch (e) {
      print(e);
    }
    if (!mounted) return;
  }

  /*
   * 点击监听器以启动SDK流程
   */

  void continueFun() {
    var v = DateTime.now();
    var reference = "package_sample_Flutter_$v";
    initPlatformState();
  }

  /*
   * 演示应用的UI
   */

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Expanded(
            child: Align(
              alignment: Alignment.bottomCenter,
              child: Container(
                width: 200.0,
                height: 50.0,
                margin: EdgeInsets.only(bottom: 40.0),
                child: OutlinedButton(
                  onPressed: continueFun,
                  style: OutlinedButton.styleFrom(
                    backgroundColor: Color(0xFF007BFF), // 使用十六进制颜色
                    shape: RoundedRectangleBorder(
                      borderRadius: BorderRadius.circular(10.0),
                    ),
                  ),
                  child: Text(
                    "打开Facia SDK",
                    style: TextStyle(
                      fontWeight: FontWeight.bold,
                      color: Colors.white,
                      fontFamily: 'OpenSans',
                    ),
                  ),
                ),
              ),
            ),
          ),
        ],
      ),
    );
  }
}

更多关于Flutter移动SDK集成插件facia_mobilesdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter移动SDK集成插件facia_mobilesdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter项目中集成并使用facia_mobilesdk插件,可以遵循以下步骤和代码示例。请确保您已经有一个Flutter开发环境,并且已经创建了一个Flutter项目。

1. 添加依赖

首先,在您的pubspec.yaml文件中添加facia_mobilesdk的依赖。

dependencies:
  flutter:
    sdk: flutter
  facia_mobilesdk: ^最新版本号  # 请替换为实际的最新版本号

然后运行flutter pub get来安装依赖。

2. 导入插件

在您需要使用facia_mobilesdk的Dart文件中导入插件。

import 'package:facia_mobilesdk/facia_mobilesdk.dart';

3. 初始化SDK

在您的应用启动时(通常是在main.dart中的MyApp类的构造函数或initState方法中),初始化facia_mobilesdk

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    // 初始化SDK,这里假设需要传入一些配置参数
    FaciaMobileSDK.instance.init(
      apiKey: '您的API密钥',
      otherConfigs: {
        'configKey1': 'configValue1',
        'configKey2': 'configValue2',
      },
    ).then((result) {
      if (result.success) {
        print('SDK初始化成功');
      } else {
        print('SDK初始化失败: ${result.error}');
      }
    }).catchError((error) {
      print('初始化过程中发生错误: $error');
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Facia Mobile SDK Demo'),
        ),
        body: Center(
          child: Text('请查看控制台输出以检查SDK初始化状态'),
        ),
      ),
    );
  }
}

4. 使用SDK功能

在初始化成功后,您可以调用SDK提供的其他功能。例如,假设SDK提供了一个登录方法:

void login(String username, String password) async {
  try {
    var loginResult = await FaciaMobileSDK.instance.login(username: username, password: password);
    if (loginResult.success) {
      print('登录成功: ${loginResult.data}');
    } else {
      print('登录失败: ${loginResult.error}');
    }
  } catch (error) {
    print('登录过程中发生错误: $error');
  }
}

您可以在按钮点击事件中调用此方法:

body: Center(
  child: Column(
    mainAxisAlignment: MainAxisAlignment.center,
    children: <Widget>[
      Text('请查看控制台输出以检查SDK功能调用状态'),
      SizedBox(height: 20),
      ElevatedButton(
        onPressed: () {
          login('your_username', 'your_password');
        },
        child: Text('登录'),
      ),
    ],
  ),
),

注意事项

  • 请确保您替换了所有示例代码中的占位符(如您的API密钥your_usernameyour_password)为实际的值。
  • 根据facia_mobilesdk的文档,了解所有可用的方法和参数。
  • 处理错误和异常情况,确保用户体验不会因为SDK调用失败而中断。

以上代码示例展示了如何在Flutter项目中集成并使用facia_mobilesdk插件。如果您需要更详细的功能实现或遇到具体问题,请参考SDK的官方文档或联系SDK的开发者支持。

回到顶部