Flutter版本校验插件vcheck的使用

发布于 1周前 作者 ionicwang 来自 Flutter

Flutter版本校验插件vcheck的使用

VCheck 是一个在线远程验证服务,用于快速安全地访问您的服务。

该插件代表了VCheck SDK for Flutter(支持iOS和Android)。该包本身使用的依赖项包括Android的vcheck_android 和iOS的VCheckSDK,这些依赖项通过Flutter SDK传递。

特性

  • 文档有效性:识别国家和文档类型。检查伪造和干扰(反光、封面、第三方物体)
  • 文档数据识别:自动解析加载的文档的数据
  • 活体检测:确定正在验证的是真人
  • 面部匹配:验证文档所有者是否为被验证的用户
  • 轻松集成到您的服务的Flutter应用中

如何使用

添加依赖

pubspec.yaml文件中添加以下依赖:

dependencies:
  vcheck: ^1.4.10

启动SDK流程

在您的Flutter项目中,导入VCheck SDK并启动SDK流程:

import 'package:vcheck/vcheck.dart';

//...

VCheckSDK.start(
        verificationToken: verifToken,
        verificationScheme: verifScheme,
        languageCode: "en",
        environment: VCheckEnvironment.DEV,
        partnerEndCallback: onFlutterSDKFlowFinished(),
        onVerificationExpired: onVerificationExpired()
        designConfig: designConfig ?? null);

必须属性解释

属性 类型 描述
verificationToken String 最近创建的VCheck验证的有效令牌
verificationScheme VerificationSchemeType 验证方案类型
languageCode String 2字母语言代码(例如:“en”;默认实现为"en")
environment VCheckEnvironment VCheck服务环境(开发/生产)
partnerEndCallback Function 验证过程完成时触发的回调函数
onVerificationExpired Function 当前验证过期时触发的回调函数

可选属性用于验证会话逻辑和UI定制

属性 类型 描述
designConfig String? 包含特定颜色属性的JSON字符串,可作为VCheck门户用户获取
showCloseSDKButton bool? 是否应显示“返回到合作伙伴”按钮
showPartnerLogo bool? 是否应显示VCheck徽标

完整示例Demo

以下是一个完整的示例,展示了如何在Flutter应用中使用VCheck SDK。

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:vcheck/vcheck.dart';
import 'package:vcheck_example/result_widget.dart';

// 您应该从服务提供商的一侧或联系VCheck团队获取验证令牌:
const String VERIFICATION_TOKEN = 'to-get-from-service';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final navigatorKey = GlobalKey<NavigatorState>();

  bool _isDefaultTheme = true;

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      navigatorKey: navigatorKey,
      home: Scaffold(
        appBar: AppBar(
          title: const Text('VCheck Flutter demo'),
        ),
        body: Center(
          child: Padding(
            padding: const EdgeInsets.all(25.0),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.stretch,
              children: [
                const SizedBox(width: 0, height: 50),
                MaterialButton(
                    color: Colors.blue,
                    textColor: Colors.white,
                    onPressed: () {
                      startSDK(
                          verificationScheme:
                              VerificationSchemeType.FULL_CHECK);
                    },
                    child: const Text("Full scheme")),
                const SizedBox(width: 0, height: 20),
                MaterialButton(
                    color: Colors.blue,
                    textColor: Colors.white,
                    onPressed: () {
                      startSDK(
                          verificationScheme:
                              VerificationSchemeType.DOCUMENT_UPLOAD_ONLY);
                    },
                    child: const Text("Document upload")),
                const SizedBox(width: 0, height: 20),
                MaterialButton(
                    color: Colors.blue,
                    textColor: Colors.white,
                    onPressed: () {
                      startSDK(
                          verificationScheme:
                              VerificationSchemeType.LIVENESS_CHALLENGE_ONLY);
                    },
                    child: const Text("Face check")),
                const SizedBox(width: 0, height: 30),
                Row(
                  crossAxisAlignment: CrossAxisAlignment.center,
                  children: [
                    const Text("Use default theme"),
                    const SizedBox(width: 12),
                    CupertinoSwitch(
                      activeColor: Colors.blue.shade100,
                      thumbColor: Colors.blue,
                      trackColor: Colors.black12,
                      value: _isDefaultTheme,
                      onChanged: (value) => setState(() {
                        _isDefaultTheme = !_isDefaultTheme;
                      }),
                    ),
                  ],
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }

  // 平台消息是异步的,所以我们初始化SDK在一个异步方法中
  Future<void> startSDK(
      {VerificationSchemeType verificationScheme =
          VerificationSchemeType.FULL_CHECK}) async {
    String designConfig;
    if (_isDefaultTheme == false) {
      designConfig = await DefaultAssetBundle.of(context)
          .loadString("assets/light_test_theme.json");
    } else {
      designConfig = await DefaultAssetBundle.of(context)
          .loadString("assets/default_dark_test_theme.json");
    }

    VCheckSDK.start(
        verificationToken: VERIFICATION_TOKEN,
        verificationScheme: verificationScheme,
        languageCode: "en",
        environment: VCheckEnvironment.DEV,
        partnerEndCallback: partnerEndCallback(),
        onVerificationExpired: onVerificationExpired(),
        designConfig: designConfig);
    if (!mounted) return;
  }

  Function partnerEndCallback() {
    return () {
      debugPrint("Triggered Dart callback for SDK finish");

      navigatorKey.currentState?.push<void>(
        MaterialPageRoute<void>(
          builder: (BuildContext context) => const ResultWidget(),
        ),
      );
    };
  }

  Function onVerificationExpired() {
    return () {
      debugPrint("Triggered callback for verification expiration case");
    };
  }
}

更多关于Flutter版本校验插件vcheck的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter版本校验插件vcheck的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用vcheck插件来进行版本校验的示例代码。vcheck插件通常用于检查当前应用的版本与服务器上的最新版本是否一致,并提示用户更新。

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

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

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

接下来,在你的Flutter应用中,你可以按照以下步骤使用vcheck插件:

  1. 初始化vcheck

    在你的主文件(通常是main.dart)中,初始化VCheck实例。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Version Check Example'),
        ),
        body: VersionChecker(),
      ),
    );
  }
}

class VersionChecker extends StatefulWidget {
  @override
  _VersionCheckerState createState() => _VersionCheckerState();
}

class _VersionCheckerState extends State<VersionChecker> {
  VCheck? vCheck;

  @override
  void initState() {
    super.initState();
    // 初始化VCheck实例
    vCheck = VCheck(
      context: context,
      // 配置服务器版本信息的URL
      versionUrl: 'https://yourserver.com/version.json',
      // 配置检查版本时显示的对话框(可选)
      dialogConfig: VCheckDialogConfig(
        title: 'New Version Available',
        message: 'A new version of the app is available. Do you want to update?',
        positiveButtonText: 'Update',
        negativeButtonText: 'Later',
      ),
      // 配置版本更新的回调(可选)
      onVersionUpdate: (version) {
        // 这里可以处理版本更新的逻辑,比如打开应用商店页面
      },
    );

    // 检查版本
    vCheck?.checkVersion();
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('Checking for updates...'),
    );
  }
}
  1. 配置版本信息的JSON文件

    你需要在你的服务器上提供一个JSON文件,包含当前应用的最新版本信息。例如,创建一个名为version.json的文件,内容如下:

{
  "current_version": "2.0.0",
  "update_url": "https://yourserver.com/yourapp_2.0.0.apk"  // 可选,提供APK下载链接
}

这个JSON文件应该包含两个字段:

  • current_version:当前最新版本号。
  • update_url(可选):新版本的下载链接。
  1. 运行应用

    现在你可以运行你的Flutter应用,vcheck插件将会检查服务器的版本信息,并在有新版本时提示用户更新。

请确保你已经正确配置了服务器端的版本信息JSON文件,并且URL是可访问的。此外,根据实际需要,你可能需要调整VCheck的配置和回调逻辑。

回到顶部