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
更多关于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. 发布应用
确保在发布应用时,正确配置了 appId
、appStoreUrl
和 playStoreUrl
,以便插件能够正确获取应用的最新版本信息。
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'),
),
),
),
);
}
}