face_auth_utils.dart 1.5 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
import 'package:aliyun_face_plugin/face_auth_plugins.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';

class FaceAuthUtils {
  factory FaceAuthUtils() => _singleton;

  static final FaceAuthUtils _singleton = FaceAuthUtils._();

  FaceAuthUtils._() {
    _faceAuthPlugin = AliyunFacePlugin();
  }

  static FaceAuthUtils get instance => _singleton;

  static late AliyunFacePlugin _faceAuthPlugin;

  /// 初始化刷脸认证
  void initFaceAuth() {
    _faceAuthPlugin.init();
  }

  /// 获取metaInfo
  Future<String?> getMetaInfo() async {
    String? metaInfo;
    try {
      // 获取客户端metaInfo,将信息发送到服务器端,调用服务器端相关接口获取认证ID,即CertifyId。
      metaInfo = await _faceAuthPlugin.getMetaInfos();
      debugPrint("FaceAuthUtils getMetaInfo: $metaInfo");
    } on PlatformException {
      debugPrint("FaceAuthUtils getMetaInfo: PlatformException");
    }
    return metaInfo;
  }

  /// 开始认证
  Future<String?> startVerify({required String certifyId}) async {
    String? verifyResult;
    try {
      // 调用认证接口,CertifyId需要调用服务器端接口获取。
      // 每个CertifyId只能使用一次,否则会返回code: "2002(iOS), 1001(Android)"。
      verifyResult = await _faceAuthPlugin.verify("certifyId", certifyId);
      debugPrint("FaceAuthUtils startVerify: $verifyResult");
    } on PlatformException {
      debugPrint("FaceAuthUtils startVerify: PlatformException");
    }
    return verifyResult;
  }
}