uni-app 面容、指纹识别插件(uni-face-login)

面容、指纹识别插件(uni-face-login)

介绍

人脸指纹登录授权,可以使用手机自带的人脸、指纹进行生物识别,进而判断是否机主本人,从而进行授权验证,适配安卓、iOS、鸿蒙设备

猛戳这里去插件市场看看

使用

该插件支持鸿蒙、安卓、iOS系统设备;

鸿蒙设备测试面容、指纹适配正常;

最低支持安卓5.0,因为安卓6.0开始才有的指纹,6.0以下会返回错误码,6.0或6.0以上正常,且国内厂商禁止使用人脸认证,只能调起指纹识别

iOS最低支持11.0,设备会先进行面容识别(iOS从iphonex开始有的面容识别,之前版本支持指纹识别),认证失败两次会进行密码认证,继续失败手机会锁住,锁屏时间会累加

更多定制功能请联系微信:soushin6

vue代码调用示例

<template><view><view style="height: 50rpx;"></view><button @click="callInit()">Sdk初始化</button><view style="height: 50rpx;"></view><button @click="callNative()">人脸登录</button><view style="height: 50rpx;"></view><button @click="callSupport()">是否支持人脸、指纹认证</button><view style="height: 50rpx;"></view><button @click="callDebug()">调试日志开关配置</button></view>
</template><script>var faceLogin = uni.requireNativePlugin("CZ-FaceLogin")export default {data() {return {}},methods: {callInit(){var ret = faceLogin.createFace();uni.showModal({title:'提示',content:JSON.stringify(ret)})},callNative(){console.log("调用原始方法")faceLogin.authLogin({'fingerTitle': '123指纹识别','fingerContent': '请123使用指纹识别','loadingText':'识别。。。','passwordHint':'请输入密码,确保环境安全'},(ret) => {console.log(ret)uni.showModal({title:'提示',content:JSON.stringify(ret)})})},callSupport(){faceLogin.isSupport((ret)=>{uni.showModal({title:'提示',content:JSON.stringify(ret)})});},callDebug(){var ret = faceLogin.debug({'enableLog': true,});uni.showModal({title:'提示',content:JSON.stringify(ret)})}, }}
</script><style></style>

nvue代码调用示例


<template><div><div style="height: 50rpx;"></div><button @click="callInit">Sdk初始化</button><div style="height: 50rpx;"></div><button @click="callNative">人脸登录</button><div style="height: 50rpx;"></div><button @click="callSupport">是否支持人脸、指纹认证</button><div style="height: 50rpx;"></div><button @click="callDebug">调试日志开关配置</button></div>
</template><script>var faceLogin = uni.requireNativePlugin("CZ-FaceLogin")export default {onLoad() {uni.setNavigationBarTitle({title:"人脸认证nvue"})},methods: {callInit(){var ret = faceLogin.createFace();uni.showModal({title:'提示',content:JSON.stringify(ret)})},callNative(){faceLogin.authLogin({'fingerTitle': '指纹识别','fingerContent': '请使用指纹识别','loadingText':'识别。。。','passwordHint':'请输入密码,确保环境安全'},(ret) => {uni.showModal({title:'提示',content:JSON.stringify(ret)})})},callSupport(){faceLogin.isSupport((ret)=>{uni.showModal({title:'提示',content:JSON.stringify(ret)})});},callDebug(){var ret = faceLogin.debug({'enableLog': true,});uni.showModal({title:'提示',content:JSON.stringify(ret)})}, }}
</script>
<style>
</style>

权限申请

鸿蒙 + android

	//离线打包需要在AndroidManifest.xml里面增加<uses-permission android:name="android.permission.USE_BIOMETRIC" /><uses-permission android:name="android.permission.USE_FINGERPRINT" /><uses-permission android:name="android.permission.CAMERA" /><uses-sdk tools:overrideLibrary="com.huawei.security.localauthentication"/>

iOS

	//离线打包需要在info.plist里面增加NSFaceIDUsageDescription

API调用说明

API描述参数必须
createFace()初始化识别SDK,在调用其他api之前必须调用此方法,否则会返回504
authLogin()开始识别fingerTitle 安卓指纹识别标题,
fingerContent 安卓指纹识别描述,
loadingText 鸿蒙、安卓面容识别等待框提示文本,
passwordHint iOS密码认证的提示文本;
callback:返回内容见下方错误码说明
isSupport()当前设备是否支持生物识别(指纹/面容)callback:返回code=0支持,code=1不支持
debug()设置调试日志输出开关enableLog true开 false关,默认关

错误码

错误码描述
0识别成功
1识别失败
2设备识别错误,请结合下方附录,或查看开发文档
3帮助信息,一些距离远近、识别角度等一些提示,看需处理
4取消
501当前系统未录入信息
502当前系统不支持人脸识别,或是人脸识别权限未开
503当前系统不支持生物识别
504请调用createFace()初始化SDK

附录

鸿蒙错误码

错误码描述解决方法
FACE_ERROR_HW_UNAVAILABLE1硬件不可用。请确认设备类型和OS版本是否支持,参见支持的设备。
FACE_ERROR_UNABLE_TO_PROCESS2传感器无法处理当前图像。如问题反复出现,请使用在线提单联系维护人员。
FACE_ERROR_TIMEOUT3人脸识别超时。请在短时间内完成识别。
FACE_ERROR_NO_SPACE4没有足够的存储空间。人脸识别不会返回此错误码。-
FACE_ERROR_CANCELED5硬件临时不可用,操作被取消。请稍后重试。
FACE_ERROR_UNABLE_TO_REMOVE6删除人脸失败。人脸识别不会返回此错误码。-
FACE_ERROR_LOCKOUT7人脸失败次数过多,人脸识别锁定。请稍后重试。
FACE_ERROR_VENDOR8人脸与机主人脸不匹配。如机主无法认证通过,建议重新录入人脸后重试。
FACE_ERROR_LOCKOUT_PERMANENT9人脸失败次数过多,弱认证锁定。请使用强认证(如PIN码)解锁。
FACE_ERROR_USER_CANCELED10FACE_ERROR_USER_CANCELED-
FACE_ERROR_NOT_ENROLLED11用户未录入人脸。请录入人脸。
FACE_ERROR_HW_NOT_PRESENT12FACE_ERROR_HW_NOT_PRESENT请确认设备类型和OS版本是否支持,参见支持的设备。

Android
面容错误码
指纹错误码

面容错误码描述解决方法
BIOMETRIC_ERROR_HW_UNAVAILABLE1硬件不可用。请确认设备类型和OS版本是否支持。
BIOMETRIC_ERROR_NONE_ENROLLED11用户没有注册任何生物信息建议录入人脸后重试。
BIOMETRIC_ERROR_NO_HARDWARE12没有生物识别硬件。-
BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED15已发现安全漏洞,并且在安全更新解决此问题之前,传感器将不可用。-
BIOMETRIC_SUCCESS0识别成功-
指纹错误码描述解决方法
FINGERPRINT_ACQUIRED_GOOD0获取指纹成功-
FINGERPRINT_ACQUIRED_IMAGER_DIRTY3怀疑或检测到传感器上有污垢,指纹图像噪音太大。清洁后重试。
FINGERPRINT_ACQUIRED_INSUFFICIENT2皮肤干燥或传感器可能脏污。清洁后重试。
FINGERPRINT_ACQUIRED_PARTIAL1采集到部分指纹。应告知用户需要采取什么措施来解决此问题,例如“用力按压传感器”。
FINGERPRINT_ACQUIRED_TOO_FAST5采集期间移动手指,指纹图像不完整将手指在传感器上停留更长时间,适合线性阵列传感器。
FINGERPRINT_ACQUIRED_TOO_SLOW4缺乏移动,导致指纹读取失败请移动手指,适合需要滑动运动的线性阵列传感器。
FINGERPRINT_ERROR_CANCELED5操作被取消,当用户切换、设备被锁定或另一个待处理操作阻止或禁用它时,可能会发生这种情况稍后再试
FINGERPRINT_ERROR_HW_NOT_PRESENT12设备不支持指纹传感器请确认设备类型和OS版本是否支持。
FINGERPRINT_ERROR_HW_UNAVAILABLE1硬件不可用请稍后再试。
FINGERPRINT_ERROR_LOCKOUT7操作被取消,因为 API 由于尝试次数过多而被锁定。此情况会在 5 次失败尝试后发生,并持续 30 秒。请稍后再试。
FINGERPRINT_ERROR_LOCKOUT_PERMANENT9由于 FINGERPRINT_ERROR_LOCKOUT 发生次数过多,操作被取消。在用户使用强身份验证(PIN/图案/密码)解锁之前,指纹身份验证将被禁用-
FINGERPRINT_ERROR_NO_FINGERPRINTS11用户没有登记任何指纹请录入指纹后重试。
FINGERPRINT_ERROR_NO_SPACE4没有足够的剩余存储空间来完成该操作-
FINGERPRINT_ERROR_TIMEOUT3等待过长导致超时-
FINGERPRINT_ERROR_UNABLE_TO_PROCESS2无法处理当前指纹图像-
FINGERPRINT_ERROR_USER_CANCELED10用户已取消-

iOS错误码

错误码描述解决方法
appCancel-9该应用程序取消了身份验证。-
systemCancel-4系统取消了认证。-
userCancel-2用户点击身份验证对话框中的取消按钮。-
biometryDisconnected-13该设备仅使用可拆卸附件支持生物识别,但未连接配对的附件。-
biometryNotPaired-12该设备仅使用可拆卸配件支持生物识别,但未配对任何配件。-
biometryLockout-8由于失败的尝试次数过多,生物认证已被锁定。-
biometryNotAvailable-6该设备不支持生物识别。请确认设备是否支持。
biometryNotEnrolled-7用户没有注册生物识别身份。请注册。
authenticationFailed-1用户未能提供有效的凭据。-
invalidContext-10上下文不可用。-
invalidDimensions-14--
notInteractive-1004禁止显示所需的认证用户界面。-
passcodeNotSet-5设备上未设置密码。请设置密码后重试。
userFallback-3用户点击身份验证对话框中的回退按钮,但身份验证策略没有可用的回退按钮。-
watchNotAvailable-11尝试使用 Apple Watch 进行身份验证失败。请稍后重试。
  • 华为鸿蒙人脸认证SDK开发文档
  • Android人脸认证SDK开发文档
  • iOS人脸认证SDK开发文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/38980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE4/5C++多线程插件制作(二十一、使用)

目录 DemoPawn.h DemoPawn.cpp 会出现的bug 插件 相关的插件制作在上一节已经完成了。 具体的使用方式在第0章已经写了,get之后去绑定即可。 而后笔者做了一个接口,具体的绑定方式也就在这个接口里面。 接下来最重要的是进行使用,对此我做了一个与蓝图相关的接口,里…

TypeScript教程(一)简介与安装

一、简介 TypeScript 是 JavaScript 的一个超集&#xff0c;扩展了JavaScript的语法&#xff0c;因此现有的JavaScript可与TypeScript一起工作无需修改&#xff0c;支持 ECMAScript 6 标准&#xff08;ES6 教程&#xff09;。 语言特性&#xff1a; 1.类型批注和编译时类型检…

怎么学习AJAX相关技术? - 易智编译EaseEditing

学习AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;相关技术可以让你实现网页的异步数据交互&#xff0c;提升用户体验。以下是一些学习AJAX技术的步骤和资源&#xff1a; HTML、CSS和JavaScript基础&#xff1a; 首先&#xff0c;确保你已经掌握了基本的HTML…

【Redis】Redis三种集群模式-主从、哨兵、集群各自架构的优点和缺点对比

文章目录 前言1. 单机模式2. 主从架构3. 哨兵4. 集群模式总结 前言 如果Redis的读写请求量很大&#xff0c;那么单个实例很有可能承担不了这么大的请求量&#xff0c;如何提高Redis的性能呢&#xff1f;你也许已经想到了&#xff0c;可以部署多个副本节点&#xff0c;业务采用…

Android系统-进程-Binder1-概述

目录 引言&#xff1a; 一次拷贝 Binder一次通信过程 应用启动中的binder交互 C/S模式&#xff1a; Binder COMMAND BWR数据结构&#xff1a; 引言&#xff1a; Android的binder是从openbinder发展过来的。包括了binder驱动&#xff0c;Native层&#xff0c;Java层。用…

光耦继电器:实现电气隔离的卓越选择

光耦继电器是一种常用的电子元件&#xff0c;用于实现电气隔离和信号传输。在工业控制、自动化系统和电力电子等领域&#xff0c;光耦继电器具有独特的特点和优势。本文将从可靠性、隔离性、响应速度和适应性等方面对光耦继电器的特点进行概述。 光耦继电器是一种典型的固态继电…

Mysql内储存JSON字符串,根据条件进行查询(包含多层级复杂JSON查询)

1.模糊查询json类型字段 存储的数据格式&#xff08;字段名 people_json&#xff09;&#xff1a; {“name”: “zhangsan”, “age”: “13”, “gender”: “男”} 代码如下&#xff08;示例&#xff09;&#xff1a; select * from table_name where people_json->$.n…

部署工业物联网可以选择哪些通信方案?

部署工业物联网有诸多意义&#xff0c;诸如提升生产效率&#xff0c;降低管理成本&#xff0c;保障生产品质稳定&#xff0c;应对长期从业劳动力变化趋势等。针对不同行业、场景&#xff0c;工业物联网需要选择不同的通信方案&#xff0c;以达到成本和效益的最佳平衡。本篇就简…

安全头响应头(三)​X-Content-Type-Options

一 X-Content-Type-Options响应头 说明&#xff1a;先写个框架,后续补充 思考&#xff1a;请求类型是 "style" 和 "script" 是什么意思? script标签 style StyleSheet JavaScript MIME type 文件扩展和Content-Type的映射关系 场景&#xff1a; 一个…

Mybatis 源码 ∞ :杂七杂八

文章目录 一、前言二、TypeHandler三、KeyGenerator四、Plugin1 Interceptor2 org.apache.ibatis.plugin.Plugin3. 调用场景 五、Mybatis 嵌套映射 BUG1. 示例2. 原因3. 解决方案 六、discriminator 标签七、其他1. RowBounds2. ResultHandler3. MapKey 一、前言 Mybatis 官网…

mysql主从复制搭建(一主一从)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言MySQL复制过程分为三部&#xff1a; 一、准备工作二、配置>主库Master三、配置>从库SlaveSlave_IO_Running: YesSlave_SQL_Running: Yes 四、测试至此&am…

8 | 美国航班数据分析

"在现代快节奏的生活中,航空旅行已经成为人们出行的重要方式之一。然而,航班的准时性一直以来都是旅客和航空公司关注的焦点。无论是商务出差还是休闲度假,乘客们都希望能够在既定的时间内安全、准时地到达目的地。而对于航空公司而言,准点运营不仅关乎乘客体验,还涉…

TCP的相关性质

文章目录 流量控制拥塞控制拥塞窗口 延迟应答捎带应答面向字节流粘包问题TCP的异常 流量控制 由于接收端处理数据的速度是有限的&#xff0c;如果发送端发的太快&#xff0c;那么接收端的缓冲区就可能会满。此时如果发送端还发数据&#xff0c;就会出现丢包现象&#xff0c;并…

轻量级自动化测试框架WebZ

一、什么是WebZ WebZ是我用Python写的“关键字驱动”的自动化测试框架&#xff0c;基于WebDriver。 设计该框架的初衷是&#xff1a;用自动化测试让测试人员从一些简单却重复的测试中解放出来。之所以用“关键字驱动”模式是因为我觉得这样能让测试人员&#xff08;测试执行人员…

【Sklearn】基于线性判别法的数据分类预测(Excel可直接替换数据)

【Sklearn】基于线性判别法的数据分类预测(Excel可直接替换数据) 1.模型原理2.模型参数3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果1.模型原理 线性判别分析(Linear Discriminant Analysis,简称LDA)是一种经典的模式识别和分类方法,它的目标是找到一个投影,将…

Linux系列讲解 —— FTP协议的应用

简单介绍一下FTP文件传输协议在linux系统中的应用。 目录 0. 基本概念1. FTP Server1.1 安装FTP Server1.2 FTP Server开启和关闭1.3 查看FTP Server是否开启1.4 FTP服务器配置 2. FTP Client2.1 lftp2.2 ftp2.3 sftp2.4 文件资源管理器集成的ftp和sftp 3. ftp常用命令 0. 基本…

IDE的下载和使用

IDE 文章目录 IDEJETBRAIN JETBRAIN 官网下载对应的ide 激活方式 dxm的电脑已经把这个脚本下载下来了&#xff0c;脚本是macjihuo 以后就不用买了

Neo4j之SET基础

在 Neo4j 中&#xff0c;SET 语句用于更新节点或关系的属性。它允许你修改节点或关系的属性值&#xff0c;可以单独使用&#xff0c;也可以与其他查询语句&#xff08;如 MATCH、CREATE、MERGE 等&#xff09;一起使用。以下是一些使用 SET 语句的常见例子&#xff0c;以及它们…

深入源码分析kubernetes informer机制(四)DeltaFIFO

[阅读指南] 这是该系列第四篇 基于kubernetes 1.27 stage版本 为了方便阅读&#xff0c;后续所有代码均省略了错误处理及与关注逻辑无关的部分。 文章目录 client-go中的存储结构DeltaFIFOdelta索引 keyqueue push操作delta push 去重 queue pop操作 总结 client-go中的存储结构…

设计模式

本文主要介绍设计模式的主要设计原则和常用设计模式。 一、UML画图 1.类图 2.时序图 二、设计模式原则 1.单一职责原则 就是一个方法、一个类只做一件事&#xff1b; 2.开闭原则 就是软件的设计应该对拓展开放&#xff0c;对修改关闭&#xff0c;这在java中体现最明显的就…