重现步骤
代码:
try {
return await auth.authenticate(
localizedReason: 'Please authenticate to continue',
options: const AuthenticationOptions(
biometricOnly: true,
useErrorDialogs: false,
),
);
} on PlatformException catch (e) {
//I get NotAvailable here
}
预期结果
它应该在以下情况下抛出不同的错误代码。
实际结果
在以下情况下,它会抛出NotAvailable:
无权限情况:当我在设备设置中为我的应用程序禁用面部识别权限时。
锁定情况:当我多次尝试面部识别失败时。
面部未识别情况:使用错误的面部进行认证,iOS会显示一个对话框,给出两个选项:1)输入密码,2)取消。当点击取消时,它会抛出NotAvailable。
代码示例
代码示例
//please run above code snippet
截图或视频
截图/视频演示
[上传媒体这里]
日志
日志
[Paste your logs here]
Flutter Doctor输出
Doctor输出
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.19.0, on macOS 14.3.1 23D60 darwin-arm64, locale
en-MM)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.3)
[✓] IntelliJ IDEA Community Edition (version 2023.3.2)
[✓] VS Code (version 1.89.1)
[✓] Connected device (3 available)
[✓] Network resources
• No issues found!
1条答案
按热度按时间wz8daaqr1#
我没有一个支持FaceID的iOS设备,但我在我的设备上用指纹检查了这个:
iPhone 7, iOS 15.8
。在我这端,我可以看到第三个案例中的NotAvailable
代码。(没有打印错误)
我还检查了一个关闭密码(设置 > Touch ID & Passcode > 关闭密码)的情况,并看到了预期的代码输出:
flutter: PlatformException(PasscodeNotSet, 密码未设置。, com.apple.LocalAuthentication, null)
我看到有一个与这个问题类似的问题出现在#102734。似乎它正在检查Apple的API是否可以为上述情况返回不同的错误代码。也许第三个案例中的
NotAvailable
错误代码是Apple API中有意为之的代码。为了大家的参考,这也可能与#113687有关。