You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用react-native-biometrics检测iOS新增FaceID

如何通过react-native-biometrics检测新增生物识别信息(FaceID/指纹)

先明确平台差异:

  • Android:能检测新增指纹(但无法检测指纹删除),新增指纹后之前生成的生物识别密钥会失效,调用接口会直接报错。
  • iOS:目前无法检测FaceID的新增或重置,系统不会因为FaceID变更让已生成的密钥失效,所以react-native-biometrics做不到直接检测。

Android端具体实现

当用户新增指纹后,之前创建的生物识别密钥会被系统作废,此时调用createSignature会抛出特定错误,我们可以捕获这个错误来提示用户重新注册。

修改你提供的代码如下:

const checkKeyExist = yield rnBiometrics.biometricKeysExist();
if (checkKeyExist.keysExist) {
  const epochTimeSeconds = Math.round(new Date().getTime() / 1000).toString();

  try {
    const createSignature = yield rnBiometrics.createSignature({
      promptMessage: 'Sign in',
      payload: epochTimeSeconds
    });
    // 签名成功,走正常登录流程
  } catch (err) {
    // 针对Android新增指纹的情况,捕获密钥失效错误
    if (err.code === 'BIOMETRIC_KEY_INVALIDATED') {
      Alert.alert('提示', '检测到生物识别信息已更新,请重新完成生物识别注册');
      // 清理失效的密钥,避免后续重复触发错误
      yield rnBiometrics.deleteKeys();
      // 跳转生物识别注册页面
    } else {
      // 处理其他错误,比如用户取消验证、识别失败等
      Alert.alert('登录失败', err.message);
    }
  }
} else {
  // 没有已存在的密钥,引导用户去注册生物识别
}

逻辑说明

Android系统在检测到指纹新增时,会自动标记之前生成的生物识别密钥为无效,调用createSignature就会返回BIOMETRIC_KEY_INVALIDATED错误,我们只要捕获这个错误,就能触发重新注册的流程。


iOS端折中方案

因为iOS系统的限制,没法直接检测FaceID的变更,只能用一些替代方案:

  • 定期强制密码验证:比如每月让用户输入一次密码,避免FaceID变更后一直用旧的识别方式登录。
  • 主动询问用户:在登录界面加个提示,问用户是否更新过FaceID,引导用户主动触发重新注册。
  • 监听权限状态:虽然没法直接关联FaceID变更,但可以监听FaceID权限的变化,作为辅助判断的依据。

内容的提问来源于stack exchange,提问作者paperskyline

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 18:05:46