Flutter工作流程管理插件kyc_workflow的使用

Flutter工作流程管理插件kyc_workflow的使用

介绍

digio kyc workflow plugin 是一个用于Flutter应用程序的工作流程管理插件,主要用于处理KYC(Know Your Customer)相关的功能。该插件支持Android和iOS平台,并提供了详细的配置和使用说明。

快速开始

Android 配置
  1. 添加JitPack仓库
    在项目的根目录下的 build.gradle 文件中,添加JitPack仓库:

    allprojects {
      repositories {
          ...
          maven { url 'https://jitpack.io' }
      }
    }
    
  2. 添加依赖项
    android/app/build.gradle 文件中,添加以下依赖项:

    dependencies {
        implementation 'com.github.digio-tech:gateway:v4.0.14'
        implementation 'com.github.digio-tech:gateway_kyc:v4.0.21'
        
        // 其他依赖项
        implementation 'androidx.core:core:1.9.0'
        implementation 'androidx.appcompat:appcompat:1.5.1'
        implementation 'com.google.android.material:material:1.7.0'
        implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
        
        implementation "androidx.camera:camera-camera2:1.2.2"
        implementation "androidx.camera:camera-lifecycle:1.2.2"
        implementation "androidx.camera:camera-view:1.2.2"
        implementation "androidx.camera:camera-core:1.2.2"
        
        implementation 'androidx.navigation:navigation-fragment:2.5.3'
        implementation 'androidx.navigation:navigation-ui:2.5.3'
        
        implementation 'androidx.preference:preference:1.2.0'
        implementation 'com.google.android.gms:play-services-mlkit-face-detection:17.1.0'
        
        implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
        implementation 'com.google.android.gms:play-services-location:21.0.1'
    }
    
  3. 确认编译配置
    确保 android/app/build.gradle 文件中有以下配置:

    android {
        compileSdkVersion 32
    
        defaultConfig {
            minSdkVersion 21
        }
    
        buildTypes {
            release {
                signingConfig signingConfigs.debug
                minifyEnabled true
            }
            debug {
                signingConfig signingConfigs.debug
                minifyEnabled true
            }
        }
    
        buildFeatures {
            viewBinding true
            dataBinding true
        }
    }
    
  4. 模块级别的Gradle配置
    android/build.gradle 文件中,确保有以下配置:

    buildscript {
        ext.kotlin_version = '1.8.0'
        dependencies {
            classpath 'com.google.gms:google-services:4.3.14'
        }
    }
    
  5. 启用混淆
    buildTypes 中,确保 minifyEnabled 设置为 true,否则应用将无法访问摄像头。

    buildTypes {
        release {
            signingConfig signingConfigs.debug
            minifyEnabled true
        }
        debug {
            signingConfig signingConfigs.debug
            minifyEnabled true
        }
    }
    
  6. 添加必要的权限
    AndroidManifest.xml 文件中,添加以下权限:

    <!-- 录音权限,用于视频KYC -->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    
    <!-- 地理位置权限,用于地理标记 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    
    <!-- 相机权限,用于身份证分析、自拍和面部匹配 -->
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" android:required="true" />
    <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
    
iOS 配置

对于iOS平台,无需添加SDK,只需在 Info.plist 文件中添加以下权限:

<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME)需要访问您的相机。</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>$(PRODUCT_NAME)需要访问您的照片库。</string>
<key>NSMicrophoneUsageDescription</key>
<string>$(PRODUCT_NAME)需要访问您的麦克风以录制视频。</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>$(PRODUCT_NAME)需要访问您的位置。</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>$(PRODUCT_NAME)需要访问您的位置。</string>

启动Digio KYC工作流

以下是启动Digio KYC工作流的完整示例代码:

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:kyc_workflow/digio_config.dart';
import 'package:kyc_workflow/environment.dart';
import 'package:kyc_workflow/gateway_event.dart';
import 'package:kyc_workflow/kyc_workflow.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 _workflowResult = '';

  [@override](/user/override)
  void initState() {
    super.initState();
    startKycWorkflow();
  }

  // 平台消息是异步的,因此我们在一个异步方法中初始化
  Future<void> startKycWorkflow() async {
    var workflowResult;
    try {
      // 创建DigioConfig对象并设置主题颜色、Logo和环境
      var digioConfig = DigioConfig();
      digioConfig.theme.primaryColor = "#32a83a";  // 主题颜色
      digioConfig.logo = "https://your_logo_url";  // Logo URL
      digioConfig.environment = Environment.SANDBOX;  // 环境设置为沙盒

      // 初始化KycWorkflow插件
      final _kycWorkflowPlugin = KycWorkflow(digioConfig);

      // 设置事件监听器,用于捕获工作流中的事件
      _kycWorkflowPlugin.setGatewayEventListener((GatewayEvent? gatewayEvent) {
        print("gateway event : " + gatewayEvent.toString());  // 打印事件信息
      });

      // 启动KYC工作流
      workflowResult = await _kycWorkflowPlugin.start(
        "KID23010416361850266BAKNKNORLP6W",  // KYC ID
        "abc@gmail.com",  // 用户邮箱
        "GWT230104163618520T2Y9IPUT2PBNC8",  // 工作流Token
        null,  // 可选参数
      );

      print('workflowResult : ' + workflowResult.toString());  // 打印工作流结果
    } on PlatformException {
      workflowResult = 'Failed to get platform version.';  // 捕获异常
    }

    // 如果在异步消息处理期间,widget已被移除,则不更新UI
    if (!mounted) return;

    setState(() {
      _workflowResult = workflowResult.toString();  // 更新UI显示结果
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),  // 应用标题
        ),
        body: Center(
          child: Text('Result : $_workflowResult'),  // 显示工作流结果
        ),
      ),
    );
  }
}

更多关于Flutter工作流程管理插件kyc_workflow的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter工作流程管理插件kyc_workflow的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用kyc_workflow插件的一个示例。kyc_workflow是一个用于管理用户工作流程(例如KYC - Know Your Customer流程)的插件。虽然具体的实现可能会因项目需求而有所不同,但以下代码将展示如何集成和使用该插件进行基本的工作流程管理。

首先,确保你已经在pubspec.yaml文件中添加了kyc_workflow依赖:

dependencies:
  flutter:
    sdk: flutter
  kyc_workflow: ^latest_version  # 替换为最新的版本号

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

1. 初始化插件

在你的Flutter应用的入口文件(通常是main.dart)中,初始化kyc_workflow插件。这里假设你已经有一个Flutter应用的基本结构。

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  // 初始化kyc_workflow插件,这里可能需要一些配置,具体参考插件文档
  KycWorkflow.initialize();

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter KYC Workflow Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

2. 定义工作流

在你的业务逻辑中定义KYC工作流。这可能包括多个步骤,如用户身份验证、文档上传和审核等。以下是一个简化的例子,展示如何定义和使用工作流。

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

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  late KycWorkflow _kycWorkflow;

  @override
  void initState() {
    super.initState();
    // 创建KycWorkflow实例,可能需要传入一些配置
    _kycWorkflow = KycWorkflow.instance;

    // 监听工作流状态变化
    _kycWorkflow.addListener(() {
      setState(() {}); // 更新UI
    });

    // 初始化工作流,例如设置初始状态
    _initializeWorkflow();
  }

  void _initializeWorkflow() {
    // 假设工作流有3个步骤:身份验证、文档上传、审核
    final steps = [
      KycStep(id: 'verification', title: '身份验证'),
      KycStep(id: 'document_upload', title: '文档上传'),
      KycStep(id: 'review', title: '审核'),
    ];

    // 设置工作流的步骤
    _kycWorkflow.setSteps(steps);

    // 开始工作流,从第一个步骤开始
    _kycWorkflow.startWorkflow('verification');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('KYC Workflow Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text('当前步骤: ${_kycWorkflow.currentStep?.title ?? '未开始'}'),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: () {
                // 模拟完成当前步骤并转到下一个步骤
                if (_kycWorkflow.canMoveToNextStep) {
                  _kycWorkflow.moveToNextStep();
                } else {
                  ScaffoldMessenger.of(context).showSnackBar(
                    SnackBar(content: Text('无法移动到下一个步骤')),
                  );
                }
              },
              child: Text('下一步'),
            ),
          ],
        ),
      ),
    );
  }
}

// 假设KycStep是一个简单的数据类,实际使用中可能需要根据插件文档定义
class KycStep {
  final String id;
  final String title;

  KycStep({required this.id, required this.title});
}

3. 插件具体API使用

请注意,上述代码是一个简化的示例,实际使用中kyc_workflow插件可能提供了更丰富的API来处理各种工作流状态、用户交互和错误处理。你应该参考插件的官方文档来了解所有可用的方法和属性,并根据你的具体需求进行实现。

4. 插件文档和资源

  • 查看kyc_workflow插件的Pub.dev页面(假设该插件存在于Pub.dev上)以获取最新的文档和示例。
  • 如果插件有GitHub仓库,也可以在那里找到更详细的文档和社区支持。

希望这个示例能帮助你开始在Flutter项目中使用kyc_workflow插件。如果你有具体的问题或需要进一步的帮助,请查阅插件的官方文档或提出具体的问题。

回到顶部