Flutter分享功能插件shareid_sdk_flutter的使用

发布于 1周前 作者 sinazl 来自 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. 获取服务令牌

为了开始集成,您需要businessHashApiKey

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

1 回复

更多关于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项目中,你可以按照以下步骤来使用这个插件:

  1. 导入插件

在你的Dart文件中导入shareid_sdk_flutter插件:

import 'package:shareid_sdk_flutter/shareid_sdk_flutter.dart';
  1. 初始化插件(如果需要):

有些插件可能需要在应用启动时进行初始化。查看插件的文档来了解是否需要这一步,以及如何进行初始化。这里假设shareid_sdk_flutter有一个initialize方法:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await ShareIdSdkFlutter.initialize();  // 假设插件有一个initialize方法
  runApp(MyApp());
}
  1. 使用分享功能

在你的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名称,请按照其文档进行相应的调整。

回到顶部