更新记录

1.1.0(2023-08-14)

增加取消的错误标识(android code 10取消 ios code 4取消 鸿蒙 code 10取消)已完成 适配鸿蒙指纹识别功能 已完成

1.0.0(2023-07-11)

  • 1.0.0 适配鸿蒙、安卓、iOS; 文本内容支持国际化,自定义提示文本; API功能简单易用,易上手 支持vue、nvue页面使用

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 适用版本区间:11 - 16

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


面容、指纹识别插件(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_UNAVAILABLE 1 硬件不可用。 请确认设备类型和OS版本是否支持,参见支持的设备
FACE_ERROR_UNABLE_TO_PROCESS 2 传感器无法处理当前图像。 如问题反复出现,请使用在线提单联系维护人员。
FACE_ERROR_TIMEOUT 3 人脸识别超时。 请在短时间内完成识别。
FACE_ERROR_NO_SPACE 4 没有足够的存储空间。人脸识别不会返回此错误码。 -
FACE_ERROR_CANCELED 5 硬件临时不可用,操作被取消。 请稍后重试。
FACE_ERROR_UNABLE_TO_REMOVE 6 删除人脸失败。人脸识别不会返回此错误码。 -
FACE_ERROR_LOCKOUT 7 人脸失败次数过多,人脸识别锁定。 请稍后重试。
FACE_ERROR_VENDOR 8 人脸与机主人脸不匹配。 如机主无法认证通过,建议重新录入人脸后重试。
FACE_ERROR_LOCKOUT_PERMANENT 9 人脸失败次数过多,弱认证锁定。 请使用强认证(如PIN码)解锁。
FACE_ERROR_USER_CANCELED 10 FACE_ERROR_USER_CANCELED -
FACE_ERROR_NOT_ENROLLED 11 用户未录入人脸。 请录入人脸。
FACE_ERROR_HW_NOT_PRESENT 12 FACE_ERROR_HW_NOT_PRESENT 请确认设备类型和OS版本是否支持,参见支持的设备

Android 面容错误码 指纹错误码

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

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 进行身份验证失败。 请稍后重试。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android <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 NSFaceIDUsageDescription

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问