Flutter分享功能插件shareid_sdk_flutter的使用
Flutter分享功能插件shareid_sdk_flutter的使用
目录
概述
此SDK为带有Flutter的Android应用提供了一套可直接使用的屏幕和工具,用于捕获身份文件和面部视频以进行身份验证。该SDK提供了许多优点,帮助您为客户提供最佳的注册/身份验证体验:
- 精心设计的用户界面引导客户完成整个视频捕获过程
- 模块化设计帮助您将视频捕获过程无缝集成到应用程序流程中
- 先进的图像质量检测技术确保捕获的图像质量符合ShareId身份验证过程的要求,保证最高的成功率
- 直接将视频上传到ShareId服务,简化集成*
*注意:SDK仅负责捕获和上传视频。您仍然需要访问ShareID API来创建和管理检查。
开始使用
Flutter SDK支持以下环境:
- Dart 3.0.0 或更高版本
- Flutter 3.0.0 或更高版本
- Android API级别 24 或更高版本
- Kotlin 1.8.0 或更高版本
- iOS 15.0 或更高版本
- 针对设备类型 = iPhone, iPad
1. 获取服务令牌
为了开始集成,您需要businessHash
和ApiKey
。
2. 创建申请人
在启动流程之前,必须创建SDK申请人。
3. 配置业务请求ID和业务请求令牌
我们现支持一种令牌机制:
Service Token
4. 应用权限
对于iOS SDK使用设备摄像头功能。必须在您的应用程序的Info.plist文件中包含以下键NSCameraUsageDescription(参见Apple文档)。
5. 在您的应用中设置SDK
添加SDK作为依赖项并拥有凭据后,您可以配置SDK:
注册
final _shareid = ShareidSdkFlutter();
_shareid.onboarding("SHARE_ID_SERVICE_TOKEN", language: "en|fr|ar... (Optional)").then((value) {
setState(() {
Map<String, dynamic> valueMap = json.decode(value!);
result = MessageHandler.fromJson(valueMap);
switch (result.messageHandler) {
case "success":
Fluttertoast.showToast(msg: result.message!);
break;
case "exit":
Fluttertoast.showToast(msg: result.message!);
break;
case "failure":
Fluttertoast.showToast(msg: result.message!);
break;
default:
break;
}
});
});
认证
final _shareid = ShareidSdkFlutter();
_shareid.authenticate("SHARE_ID_SERVICE_TOKEN", language: "en|fr|ar... (Optional)").then((value) {
setState(() {
Map<String, dynamic> valueMap = json.decode(value!);
result = MessageHandler.fromJson(valueMap);
switch (result.messageHandler) {
case "success":
Fluttertoast.showToast(msg: result.message!);
break;
case "exit":
Fluttertoast.showToast(msg: result.message!);
break;
case "failure":
Fluttertoast.showToast(msg: result.message!);
break;
default:
break;
}
});
});
更多示例信息:示例文件
参数 | 说明 |
---|---|
serviceToken |
必需 您的先前接收的访问令牌 |
5. 处理回调
传递给回调函数的结果对象可以包括以下属性:
{
"code": "200",
"message": "Access token created"
}
6. 更多信息
有关SDK V2的更多信息,请查看ShareId SDks 文档。
示例代码
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:shareid_sdk_flutter/shareid_sdk_flutter.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> {
final _shareid = ShareidSdkFlutter();
Color primaryColor = const Color(0xff2A4DC6);
bool isLoading = false;
String uuid = "";
[@override](/user/override)
void initState() {
super.initState();
}
String onBoardingServiceToken = "";
late MessageHandler result;
void getOnboardingToken() {
setState(() {
isLoading = true;
});
_shareid.onboarding("SHARE_ID_SERVICE_TOKEN").then((value) {
setState(() {
Map<String, dynamic> valueMap = json.decode(value!);
result = MessageHandler.fromJson(valueMap);
switch (result.messageHandler) {
case "success":
Fluttertoast.showToast(msg: result.message!);
break;
case "exit":
Fluttertoast.showToast(msg: result.message!);
break;
case "failure":
Fluttertoast.showToast(msg: result.message!);
break;
default:
break;
}
});
});
setState(() {
isLoading = false;
});
}
void getAuthenticateToken() {
setState(() {
isLoading = true;
});
_shareid.authenticate("SHARE_ID_SERVICE_TOKEN").then((value) {
setState(() {
Map<String, dynamic> valueMap = json.decode(value!);
result = MessageHandler.fromJson(valueMap);
switch (result.messageHandler) {
case "success":
Fluttertoast.showToast(msg: result.message!);
break;
case "exit":
Fluttertoast.showToast(msg: result.message!);
break;
case "failure":
Fluttertoast.showToast(msg: result.message!);
break;
default:
break;
}
});
});
setState(() {
isLoading = false;
});
}
Future<void> displayDialog(BuildContext context) async {
return showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: const Text('Your UUID'),
content: TextField(
onChanged: (value) {
setState(() {
uuid = value;
});
},
//controller: _textFieldController,
decoration: const InputDecoration(hintText: "Put your uuid"),
),
actions: <Widget>[
MaterialButton(
color: primaryColor,
textColor: Colors.white,
child: const Text('Submit'),
onPressed: () {
setState(() {
getAuthenticateToken();
Navigator.pop(context);
});
},
),
],
);
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Padding(
padding: const EdgeInsets.symmetric(horizontal: 32),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(
margin: const EdgeInsets.only(top: 140),
padding:
const EdgeInsets.symmetric(horizontal: 10, vertical: 20),
child: Image.asset("images/logo_share.png"),
),
isLoading
? CircularProgressIndicator(
color: primaryColor,
)
: const SizedBox.shrink(),
Container(
margin: const EdgeInsets.only(bottom: 56),
child: Column(
children: [
ElevatedButton(
onPressed: () {
if (!isLoading) displayDialog(context);
},
style: ElevatedButton.styleFrom(
side: BorderSide(width: 2.0, color: primaryColor),
backgroundColor: primaryColor,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(32.0),
),
),
child: Container(
width: double.infinity,
padding: const EdgeInsets.symmetric(vertical: 15),
child: const Center(
child: Text(
'Se connecter',
style: TextStyle(color: Colors.white),
),
),
),
),
const SizedBox(
height: 10,
),
ElevatedButton(
onPressed: () {
if (!isLoading) getOnboardingToken();
},
style: ElevatedButton.styleFrom(
side: BorderSide(width: 2.0, color: primaryColor),
backgroundColor: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(32.0),
),
),
child: Container(
width: double.infinity,
padding: const EdgeInsets.symmetric(vertical: 15),
child: Center(
child: Text(
'S\'inscrire',
style: TextStyle(color: primaryColor),
),
),
),
)
],
),
)
],
),
),
),
);
}
}
class MessageHandler {
String? messageHandler;
String? code;
String? message;
MessageHandler(this.code, this.message, this.messageHandler);
MessageHandler.fromJson(Map<String, dynamic> json) {
code = json['code'];
message = json['message'];
messageHandler = json['messageHandler'];
}
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['code'] = code;
map['message'] = message;
map['messageHandler'] = messageHandler;
return map;
}
}
更多关于Flutter分享功能插件shareid_sdk_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter分享功能插件shareid_sdk_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用shareid_sdk_flutter
插件的示例代码。假设shareid_sdk_flutter
是一个用于分享功能的插件,请注意,由于这个插件并非官方或广泛知名的插件,以下代码是基于一般Flutter插件的使用习惯编写的,并假设该插件提供了基本的分享功能。
首先,确保你已经在pubspec.yaml
文件中添加了shareid_sdk_flutter
依赖:
dependencies:
flutter:
sdk: flutter
shareid_sdk_flutter: ^最新版本号 # 请替换为实际可用的最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,在你的Flutter项目中,你可以按照以下步骤来使用这个插件:
- 导入插件:
在你的Dart文件中导入shareid_sdk_flutter
插件:
import 'package:shareid_sdk_flutter/shareid_sdk_flutter.dart';
- 初始化插件(如果需要):
有些插件可能需要在应用启动时进行初始化。查看插件的文档来了解是否需要这一步,以及如何进行初始化。这里假设shareid_sdk_flutter
有一个initialize
方法:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await ShareIdSdkFlutter.initialize(); // 假设插件有一个initialize方法
runApp(MyApp());
}
- 使用分享功能:
在你的UI组件中,你可以调用插件提供的分享功能。这里假设shareid_sdk_flutter
有一个share
方法,该方法接受要分享的内容作为参数:
import 'package:flutter/material.dart';
import 'package:shareid_sdk_flutter/shareid_sdk_flutter.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('ShareID SDK Flutter Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: _shareContent,
child: Text('Share Content'),
),
),
),
);
}
void _shareContent() async {
String shareText = "Hello, this is a share content!";
try {
await ShareIdSdkFlutter.share(content: shareText); // 假设插件有一个share方法
print("Content shared successfully!");
} catch (e) {
print("Failed to share content: $e");
}
}
}
在这个示例中,当用户点击按钮时,_shareContent
方法会被调用,该方法尝试使用shareid_sdk_flutter
插件的share
方法来分享指定的文本内容。
注意:以上代码是基于假设的shareid_sdk_flutter
插件的功能和API编写的。实际使用时,你需要参考该插件的官方文档来了解其确切的API和使用方法。如果shareid_sdk_flutter
插件有特定的初始化步骤、配置要求或不同的API名称,请按照其文档进行相应的调整。