HarmonyOS 鸿蒙Next如何判断指纹变更

发布于 1周前 作者 ionicwang 来自 鸿蒙OS

HarmonyOS 鸿蒙Next如何判断指纹变更

当用户的指纹信息发生变更时(增加或删除),需告知用户并主动关闭指纹登录。

请问鸿蒙这块如何判断用户指纹库的变化?

2 回复

可以参考指纹认证demo: 可以先录一个指纹,查询用户注册凭据变化,看具体返回值 再录一个指纹,再查询,可以看到返回的credentialDigest和credentialCount是有变化 返回结果是{“credentialDigest”:51901,“credentialCount”:2}的样式 一般应用场景是:业务开通时,从认证成功结果中获取用户凭据的状态,或者直接查询用户凭据的状态,将注册的凭据状态存储起来。当调用者需要感知用户凭据变化时,需要从当前认证成功结果获取凭据的状态,或者查询当前凭据的状态,通过对比差异感知凭据状态的变化。

import { promptAction } from '[@kit](/user/kit).ArkUI';
import userIAM_userAuth from '[@ohos](/user/ohos).userIAM.userAuth';

const TAG = 'User_Auth'

[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
[@State](/user/State) userAuthResult?: userIAM_userAuth.UserAuthResult = undefined

build() {
  Column() {
    Button('查询是否支持指纹和ATL1认证').margin({ bottom: 20 }).onClick(() => {
      this.checkAvailableStatus(userIAM_userAuth.UserAuthType.FINGERPRINT, userIAM_userAuth.AuthTrustLevel.ATL1)
    })
    Button('查询用户注册凭据变化').margin({ bottom: 20 }).onClick(() => {
      let enrolledState = userIAM_userAuth.getEnrolledState(userIAM_userAuth.UserAuthType.FINGERPRINT);
      console.info('get current enrolled state success, enrolledState = ' + JSON.stringify(enrolledState));
    })
    Button('拉起指纹认证').margin({ bottom: 20 }).onClick(() => {
      const authParam: userIAM_userAuth.AuthParam = {
        challenge: new Uint8Array([49, 49, 49, 49, 49, 49]),
        authType: [userIAM_userAuth.UserAuthType.FINGERPRINT],
        authTrustLevel: userIAM_userAuth.AuthTrustLevel.ATL1
      }
      const widgetParam: userIAM_userAuth.WidgetParam = { title: '请认证指纹' };
      this.startUserAuth(authParam, widgetParam)
    })
  }
}

checkAvailableStatus(authType: number, trustLevel: number) {
  try {
    userIAM_userAuth.getAvailableStatus(authType, trustLevel);
    promptAction.showToast({ message: '支持' })
  } catch (e) {
    promptAction.showToast({ message: '不支持' })
  }
}

startUserAuth(authParam: userIAM_userAuth.AuthParam, widgetParam: userIAM_userAuth.WidgetParam) {
  try {
    const userAuthInstance = userIAM_userAuth.getUserAuthInstance(authParam, widgetParam);
    userAuthInstance.on('result', {
      onResult: (result) => { //认证成功
        if (result.result === userIAM_userAuth.UserAuthResultCode.SUCCESS) {
          this.userAuthResult = result;
          console.log(TAG, 'userAuthInstance callback result ' + JSON.stringify(result));
          userAuthInstance.off('result');
        }
      }
    })
    userAuthInstance.start();
    console.log('auth start success');
  } catch (e) {
    promptAction.showToast({ message: `拉起用户认证失败 ${e.code} ${e.message}` })
  }
}
}

针对HarmonyOS鸿蒙Next如何判断指纹变更的问题,以下是一些专业解答:

在HarmonyOS鸿蒙Next系统中,指纹信息的管理通常涉及录入、验证和删除等操作。若需判断指纹是否发生变更,可通过以下方式实现:

  1. 直接验证:尝试使用已录入的指纹进行验证。若验证失败,且确认操作无误,则可能是指纹信息已发生变更。
  2. 系统设置检查:进入系统设置中的“生物识别和密码”功能,查看指纹列表。若列表中显示的指纹与记忆中不符,则表明指纹已发生变更。
  3. 接口查询:对于开发者而言,可通过HarmonyOS提供的API接口查询设备支持的认证能力,并判断指纹信息是否存在或已变更。具体可参考HarmonyOS官方文档中的UserAuthInstance及相关接口。

请注意,以上方法均基于当前系统功能和接口设计,若系统更新或接口调整,可能导致方法失效。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部