Flutter未定义功能插件myid的使用

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

Flutter未定义功能插件myid的使用

插件概述

MyID SDK flutter plugin 是一个用于身份验证和人脸识别的Flutter插件。它支持Android和iOS平台,提供了多种配置选项以适应不同的业务需求。

版本信息

  • Android SDK: 2.3.7
  • iOS SDK: 2.3.3

项目调整

在使用MyID SDK之前,需要对项目进行一些必要的配置。

iOS配置

  1. 更新Podfile: 修改ios/Podfile文件中的平台版本为12.0:

    platform :ios, '12.0'
    
  2. 添加相机权限描述: 在ios/YourProjectName/Info.plist中添加以下内容:

    <plist version="1.0">
    <dict>
      <!-- Add these two elements: -->
      <key>NSCameraUsageDescription</key>
      <string>Required for document and facial capture</string>
      <!-- ... -->
    </dict>
    </plist>
    

使用方法

下面是一个完整的示例代码,展示了如何在Flutter应用中集成和使用MyID SDK。

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:myid/enums.dart';
import 'package:myid/myid.dart';
import 'package:myid/myid_config.dart';

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

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String? _error;
  MyIdResult? _result;

  Future<void> init() async {
    String? error;
    MyIdResult? result;

    try {
      const clientId = 'client_id'; // 替换为实际的clientId
      const clientHash = 'client_hash'; // 替换为实际的clientHash
      const clientHashId = 'client_hash_id'; // 替换为实际的clientHashId

      final myIdResult = await MyIdClient.start(
          config: MyIdConfig(
            clientId: clientId,
            clientHash: clientHash,
            clientHashId: clientHashId,
            buildMode: MyIdBuildMode.PRODUCTION,
            entryType: MyIdEntryType.AUTH,
          ),
          iosAppearance: const MyIdIOSAppearance());

      error = null;
      result = myIdResult;
    } catch (e) {
      error = e.toString();
      result = null;
    }

    if (!mounted) return;

    setState(() {
      _error = error;
      _result = result;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('MyID Sample'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              MaterialButton(
                onPressed: init,
                child: const Text('Start SDK'),
              ),
              Text(_result?.code ?? _error ?? 'Failure'),
            ],
          ),
        ),
      ),
    );
  }
}

参数详情

以下是MyIdConfig类中各个参数的详细说明:

方法 备注 默认值
clientHash 客户端哈希 提供由MyID销售团队提供的客户端哈希,如果使用entryType = MyIdEntryType.AUTH则为必填项
clientHashId 客户端哈希ID 提供由MyID销售团队提供的客户端哈希ID,如果使用entryType = MyIdEntryType.AUTH则为必填项
passportData 护照序列号或PINFL数据 可选
dateOfBirth 出生日期,格式为dd.MM.yyyy 可选
sdkHash 32个字符长度的字符串 可选
externalId 36个字符长度,应符合UUID4正则表达式 可选
threshold 范围为0.550.99 0.55
buildMode 构建模式 MyIdBuildMode.PRODUCTION
entryType 自定义SDK入口类型 MyIdEntryType.AUTH
residency 设置特定居民类型 MyIdResidentType.RESIDENT
locale 设置特定语言环境 MyIdLocale.UZBEK
cameraShape 设置特定相机形状 MyIdCameraShape.CIRCLE
resolution 设置特定相机分辨率 MyIdResolution.RESOLUTION_480
imageFormat 设置特定图像格式 MyIdImageFormat.PNG
organizationDetails 自定义组织详情 可选

注意事项

  • 如果未提供护照数据和出生日期,SDK将要求用户输入这些信息。
  • 如果sdkHash为空、空白或长度不是32个字符,则将继续显示凭证屏幕。
  • 如果提供了有效的externalId(36个字符且符合UUID4正则表达式),在检测到模糊照片时会显示推荐屏幕。
  • MyIdBuildMode包含DEBUGPRODUCTION两种模式,分别用于沙箱和生产环境。
  • MyIdEntryType包含AUTHFACE两种类型,分别用于通过MyID服务识别用户和仅检测人脸并返回图片。

主题配置

可以通过MyIdIOSAppearance类来配置iOS的主题样式,具体属性包括:

  • primaryColor: 主色调
  • errorColor: 错误颜色
  • primaryButtonColor: 主要按钮背景色
  • primaryButtonColorDisabled: 禁用的主要按钮背景色
  • primaryButtonTextColor: 主要按钮文本颜色
  • primaryButtonTextColorDisabled: 禁用的主要按钮文本颜色
  • buttonCornerRadius: 按钮圆角半径

自定义组织详情

可以通过提供MyIdOrganizationDetails对象来自定义SDK以匹配组织的品牌手册,例如:

  • phoneNumber: 自定义错误屏幕上的联系电话
  • logo: 输入屏幕顶部显示的自定义Logo

SDK错误代码

SDK调用过程中可能出现的错误代码及其含义如下表所示:

代码 错误消息
2 Паспортные данные введены неправильно
3 Не удалось подтвердить жизненность
4 Не удалось распознать
5 Внешний сервис недоступен или работает некорректно
6 Запрашиваемый пользовател скончался
7 Фото с ресурсов не получено
8 Внутренняя ошибка MyID
9 Срок выполнения задачи истек
10 Срок ожидания задачи в очереди истек
更多错误代码请参考官方文档

以上是关于Flutter未定义功能插件myid的详细介绍和使用示例,希望对您有所帮助!


更多关于Flutter未定义功能插件myid的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter未定义功能插件myid的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在处理Flutter中未定义功能插件myid的使用问题时,首先需要确认这个插件是否已正确安装并导入到你的Flutter项目中。如果myid是一个自定义插件或者第三方插件,以下步骤和代码示例可以帮助你确保插件被正确集成和使用。

步骤 1: 确保插件已添加到pubspec.yaml

首先,检查你的pubspec.yaml文件,确保myid插件已被添加到dependencies部分。例如:

dependencies:
  flutter:
    sdk: flutter
  myid: ^x.y.z  # 替换为实际的版本号

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

步骤 2: 导入插件到你的Dart文件

在你的Dart文件中(比如main.dart),导入myid插件:

import 'package:myid/myid.dart';

步骤 3: 使用插件的功能

假设myid插件提供了一个名为getId的函数来获取某种ID,你可以这样使用它:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String? idResult;

  @override
  void initState() {
    super.initState();
    _getId();
  }

  Future<void> _getId() async {
    try {
      String id = await MyIdPlugin.getId();  // 假设插件提供了一个名为getId的静态方法
      setState(() {
        idResult = id;
      });
    } catch (e) {
      print('Error getting ID: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('MyID Plugin Demo'),
      ),
      body: Center(
        child: Text(idResult ?? 'Loading ID...'),
      ),
    );
  }
}

注意:

  1. 插件API文档:确保查阅myid插件的官方文档或源代码,了解如何正确调用其功能。上面的MyIdPlugin.getId()是一个假设的方法,你需要根据实际的插件API来调整。

  2. 错误处理:在调用插件功能时,添加适当的错误处理逻辑,以处理可能的异常。

  3. 插件平台支持:确认myid插件是否支持你的目标平台(如iOS和Android)。有些插件可能需要在原生代码中做一些配置。

  4. 插件版本:确保使用的插件版本与你的Flutter SDK版本兼容。

如果myid是一个你自己开发的插件或者非常规的第三方插件,并且没有公开的文档,你可能需要查看插件的源代码来了解如何正确调用其功能。如果插件本身存在问题或者未定义某些功能,你可能需要联系插件的开发者或维护者以获取帮助。

回到顶部