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

Ionic中cordova-plugin-keychain-touch-id成功回调返回Null、错误回调无响应

解决cordova-plugin-keychain-touch-id中isAvailable回调biometricType返回Null的问题

你遇到的这个问题我之前也帮其他开发者排查过,结合你的环境信息,我整理了几个针对性的解决方案,一步步来试:

1. 先排查插件版本兼容性

你当前用的Cordova CLI 8.0.0、Xcode 9.3(对应iOS 11.3),和旧版本的cordova-plugin-keychain-touch-id可能存在适配bug——早期版本的插件在iOS 11+环境下,对生物识别类型的返回逻辑有问题,导致biometricType返回null。

操作步骤:
先卸载旧插件,重装最新兼容版本:

cordova plugin remove cordova-plugin-keychain-touch-id
cordova plugin add cordova-plugin-keychain-touch-id@latest

2. 调整回调参数的读取方式

部分旧版本插件的isAvailable成功回调,返回的不是直接的字符串,而是包含生物识别信息的对象,或者参数名不是biometryType而是type。你可以修改代码兼容这种情况:

if (window.plugins.touchid) {
  window.plugins.touchid.isAvailable(function(result) {
    // 兼容不同版本的返回格式
    const biometryType = result.biometricType || result.type || result;
    console.log("biometry: " + biometryType);
  }, function(msg) {
    console.log("error: " + msg);
  });
}

3. 补充Face ID权限描述

iOS 11及以后的版本,必须在Info.plist中添加NSFaceIDUsageDescription键,应用才能请求Face ID权限。如果缺失这个配置,插件可能无法正常检测生物识别类型,甚至不会触发错误回调。

操作步骤:
在项目的config.xml中加入以下配置,构建时会自动注入到iOS的Info.plist:

<platform name="ios">
  <edit-config target="NSFaceIDUsageDescription" file="*-Info.plist" mode="merge">
    <string>需要使用Face ID验证身份,提升操作安全性</string>
  </edit-config>
</platform>

4. 清理缓存并重建项目

Cordova经常会缓存旧的插件代码或平台配置,导致修改无法生效。执行以下命令彻底清理重建:

ionic cordova platform remove ios
ionic cordova platform add ios
ionic cordova build ios

5. 设备端设置检查

最后确认测试设备的基础设置:

  • 设备是支持Face ID的机型(iPhone X及以后)
  • 设备设置中已经开启Face ID功能
  • 应用已被授予Face ID权限(可以在设备「设置」→「隐私与安全性」→「Face ID与密码」中查看)

如果以上步骤都试过还是没解决,可以看看插件官方仓库的issues,有没有其他用户遇到类似的版本兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:04:03