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
相关产品推荐
相关产品推荐

