我们能在React Native中为Android设备获取面部识别吗?

12

我正在我的应用程序中实施生物识别进行身份验证。我正在使用react-native biometrics进行此操作。一切都很好,只有一个卡住的问题。在Android中,面容ID无法正常工作。我进行了大量搜索,但无法找到令人满意的答案。在Android中使用面容ID是否可行?

Biometrics.isSensorAvailable()
  .then((biometryType) => {
    if (biometryType === Biometrics.TouchID) {
      console.log('TouchID is supported')
    } else if (biometryType === Biometrics.FaceID) {
      console.log('FaceID is supported')
    } else {
      console.log('Biometrics not supported')
    }
  })  

即使我在手机上使用FaceId,它始终返回TouchId。先行致谢。


你找到解决方案了吗?你尝试过生产环境构建吗? - Pravin S.
需要尝试使用 npm install face-recognition-react-native --save 命令吗? - Shreeya Chhatrala
1
@pravin 我知道回复晚了,但如果您从设备中删除指纹,它将允许您使用面容 ID,因为在 Android 10 中,面容 ID 被认为是一种较弱的生物识别技术。 - Shivaraj Rajagolkar
@ShivarajRajagolkar 不,它没有起作用。 - Rajesh N
5个回答

3
我认为这是因为 Face-Id 和 Touch-Id 只适用于 iOS。而对于安卓设备,你似乎仍然可以使用 Touch-Id 作为生物识别功能,因为默认情况下,安卓的生物识别功能会使用你设定的锁屏方式(有时也会取决于你的设备制造商)。我从这里获取了这些信息。

1
我的直接回答是不行。这是因为Android从未在原始版本或核心API中提供FaceID / Face解锁功能。我们在Android中获得的面部识别/面部解锁解决方案来自供应商,他们已将其作为第三方集成放置在Android上,并且我认为没有人可以在数百种不同的实现之上编写接口,以支持从单个API中进行此类功能。

0

请参考这个答案

react-native-touch-id 应该适用于 TouchID 和 FaceID。

请参考这份文档

此软件包需要编译的 SDK 版本为 29(Android 10.0)或更高版本

这可能意味着它只能在 Android 10 或更高版本上运行。


1
我在三星手机上安装了Android 12,但仍未显示面部解锁功能。同时,我的编译SDK为32。 - Madhav

0

根据我的最新研究,似乎expo-local-authentication可以使用面部识别功能,但前提是设备还具有指纹识别硬件。

Expo-local-authentication函数supportedAuthenticationTypesAsync()始终只返回有关AuthenticationType.FINGERPRINT的信息,即使安卓设备上也可用面部识别。尽管如此,即使带有指纹硬件的设备没有指纹数据,只有面部数据,它仍然可以正常工作。然后expo-local-authentication使用面部解锁。

问题出现在安卓设备没有指纹硬件,但具有面部识别功能的情况下。然后supportedAuthenticationTypesAsync()仅返回undefinedauthenticateAsync()无法工作。

这里是用于测试的snack:https://snack.expo.dev/-Y34x2K7- 但您需要拥有这样的硬件设备。

我在这里准备了一个精确的问题,以寻找解决方案,针对那些具有面部识别解锁但没有指纹解锁功能的安卓设备: React Native中安卓设备上的Face ID、生物识别、面部识别解锁

0

使用react-native-biometrics库支持Android上的TouchID和FaceID


这并没有回答问题。一旦您有足够的声望,您就可以评论任何帖子;相反,提供不需要问者澄清的答案。- 来自审阅 - smaudet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接