Flutter版本校验插件vcheck_flutter的使用

Flutter版本校验插件vcheck_flutter的使用

vcheck_flutter 是一个用于快速和安全地验证用户身份的服务插件。它支持通过 Flutter(适用于 iOS 和 Android)进行集成,为开发者提供了便捷的身份验证解决方案。

特性

  • 文档有效性验证:支持国家和文件类型的识别,并检查伪造或干扰(如反光、覆盖物、第三方物体等)。
  • 文档数据识别:自动解析上传的文件数据。
  • 活体检测:确定正在验证的是真实的人。
  • 人脸匹配:验证文件所有者与正在验证的用户是否一致。
  • 易于集成到现有的 Flutter 应用中

如何使用

1. 添加依赖

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

dependencies:
  vcheck_flutter: ^1.4.3

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

2. 初始化 SDK 流程

import 'package:vcheck_flutter/vcheck_flutter.dart';

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");
  }

  // 启动 VCheck SDK
  VCheckSDK.start(
    verificationToken: VERIFICATION_TOKEN, // 验证令牌
    verificationScheme: verificationScheme, // 验证方案类型
    languageCode: "en", // 语言代码
    environment: VCheckEnvironment.DEV, // 环境设置(开发环境)
    partnerEndCallback: partnerEndCallback(), // 验证完成回调
    onVerificationExpired: onVerificationExpired(), // 验证过期回调
    designConfig: designConfig, // 自定义主题配置
  );
}

3. 必需属性说明

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

4. 可选属性说明

属性名称 类型 描述
designConfig String? 包含特定颜色属性的 JSON 字符串,可以从 VCheck 门户用户处获取
showCloseSDKButton bool? 是否显示返回按钮
showPartnerLogo bool? 是否显示 VCheck Logo

完整示例代码

以下是完整的示例代码,展示了如何在 Flutter 中集成和使用 vcheck_flutter 插件。

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:vcheck_flutter/vcheck_flutter.dart';
import 'package:vcheck_flutter_example/result_widget.dart';

// 您应该从服务提供商处获取验证令牌
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_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


vcheck_flutter 是一个用于版本校验的Flutter插件,通常用于检查应用程序是否需要更新。它可以帮助开发者轻松地实现版本检查功能,提示用户更新应用或强制用户更新到最新版本。

以下是如何使用 vcheck_flutter 插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 vcheck_flutter 插件的依赖:

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

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

2. 初始化插件

在你的Flutter项目中,通常在 main.dart 文件中初始化 vcheck_flutter 插件。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 vcheck_flutter
  await VcheckFlutter.init(
    appId: 'your_app_id',  // 你的应用ID
    appStoreUrl: 'https://apps.apple.com/app/id123456789',  // App Store 链接
    playStoreUrl: 'https://play.google.com/store/apps/details?id=com.example.app',  // Google Play 链接
  );

  runApp(MyApp());
}

3. 检查版本更新

在应用的某个地方(例如在启动时或用户手动触发时),你可以调用 checkVersion 方法来检查版本更新。

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Version Check Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              // 检查版本更新
              await VcheckFlutter.checkVersion(
                context: context,
                forceUpdate: false,  // 是否强制更新
              );
            },
            child: Text('Check for Updates'),
          ),
        ),
      ),
    );
  }
}

4. 处理更新逻辑

vcheck_flutter 插件会自动处理版本检查,并根据配置显示更新提示或强制更新对话框。你可以通过 forceUpdate 参数来控制是否强制用户更新。

5. 自定义提示信息

你可以自定义更新提示的标题、内容等。例如:

await VcheckFlutter.checkVersion(
  context: context,
  forceUpdate: false,
  title: 'New Version Available',
  message: 'Please update the app to enjoy the latest features.',
  updateButtonText: 'Update Now',
  laterButtonText: 'Later',
);

6. 处理回调

你还可以通过回调来处理用户的操作,例如用户点击“更新”或“稍后”按钮时:

await VcheckFlutter.checkVersion(
  context: context,
  forceUpdate: false,
  onUpdate: () {
    print('User chose to update the app');
  },
  onLater: () {
    print('User chose to update later');
  },
);

7. 其他配置

vcheck_flutter 还提供了其他一些配置选项,例如设置检查间隔、自定义版本比较逻辑等。你可以根据需要进行配置。

8. 发布应用

确保在发布应用时,正确配置了 appIdappStoreUrlplayStoreUrl,以便插件能够正确获取应用的最新版本信息。

9. 注意事项

  • 插件依赖于应用的App Store和Google Play页面来获取最新版本信息,因此请确保这些链接是有效的。
  • 如果你的应用有多个发布渠道(例如Beta版、正式版等),请确保插件能够正确区分并获取对应渠道的最新版本。

10. 示例代码

以下是一个完整的示例代码:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  await VcheckFlutter.init(
    appId: 'your_app_id',
    appStoreUrl: 'https://apps.apple.com/app/id123456789',
    playStoreUrl: 'https://play.google.com/store/apps/details?id=com.example.app',
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Version Check Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              await VcheckFlutter.checkVersion(
                context: context,
                forceUpdate: false,
                title: 'New Version Available',
                message: 'Please update the app to enjoy the latest features.',
                updateButtonText: 'Update Now',
                laterButtonText: 'Later',
                onUpdate: () {
                  print('User chose to update the app');
                },
                onLater: () {
                  print('User chose to update later');
                },
              );
            },
            child: Text('Check for Updates'),
          ),
        ),
      ),
    );
  }
}
回到顶部