Flutter 学习 之 本地指纹/生物识别 local_aut
2022-04-29 本文已影响0人
半城半离人
本来想直接翻看看原生生物识别是怎么做的 百度了一下 flutter官方有提供轮子 本着
造不如买的原则 就研究了一下发现它十三天前更新了2.0.0版本 那就来康康他的传新版本
老样子 官网再右侧 local_auth 2.0.0
一. 插件引入
dependencies:
local_auth: ^2.0.0
二. 安卓端修改
2.1 注册清单中加入权限
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
你要用上面那个权限 它会提示说过时了 安卓P以上换了一个 反正我minSDK也在p以上就换成了它推荐的 毕竟听人劝吃饱饭
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
2.2 把继承的FlutterActivity 改成FlutterFragmentAcitvity
没什么好改的换了个导入包就可以了
public class MainActivity extends FlutterFragmentActivity {
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
// 引入你写的插件
try {
flutterEngine.getPlugins().add(new CustomChannelPlugin(this));
} catch (Exception e) {
Log.e(getLocalClassName(), "Error registering pluginCustomChannelPlugin,", e);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
三. IOS端修改
没有开发工具哈 文档说要改东西
<key>NSFaceIDUsageDescription</key>
<string>Why is my app authenticating using face id?</string>
四. dart的引用
- isDeviceSupported 方法
在Android 6.0 以上才能用 以下都是false 如果你手机没有设置密码 他会返回false 设置密码就可以返回true了
bool supposed = await LocalAuthentication().isDeviceSupported();
- 检测是否有生物识别 上面检测你开没开 这个检测有没有 (硬件)
bool supposed = await LocalAuthentication().canCheckBiometrics();
- 已经注册的生物识别 ios可能显示指纹和faceid把
我手上的Android返回了两个一个weak 和strong
Android 得设置完指纹之后才有返回
availableBiometrics = await LocalAuthentication().getAvailableBiometrics();
- 最重要的来了
识别方法
新版要这么写 官网的demo都没更新..真的是......
对了 要需改 AndroidAuthMessages 需要手动引入这个地址
import 'package:local_auth_android/local_auth_android.dart';
bool authenticated = await LocalAuthentication().authenticate(
///这个东西不是必须的 只是用来改文字用的..... 有中文的是我应该是能看到过的东西.....
authMessages: [
const AndroidAuthMessages(
biometricHint: "生物识别提示",
biometricNotRecognized: "biometricNotRecognized",
biometricRequiredTitle: "弹出提示框的时候的提示",
biometricSuccess: "biometricSuccess",
cancelButton: "取消按钮的文字",
deviceCredentialsRequiredTitle: "deviceCredentialsRequiredTitle",
deviceCredentialsSetupDescription:
"deviceCredentialsSetupDescription",
goToSettingsButton: "去设置界面的按钮",
goToSettingsDescription: "这里说的是你如果没有设置指纹那么你应该去设置里面去设置",
//顶部提示 默认是英文说的是
signInTitle: "您需要扫描指纹才能继续",
)
],
localizedReason: '我们需要验证您的指纹',
options: const AuthenticationOptions(
///使用他们的错误处理
useErrorDialogs: true,
///如果去后台在返回还能继续识别
stickyAuth: true,
//解锁以后还能干什么东西来着
sensitiveTransaction: true,
//只用身份处理不能用密码
biometricOnly: true,
),
);
五. 他会抛出六种异常 需要自己去catch..
- 虽然官方文档说会给弹窗提示 useErrorDialogs给true的时候 但是我手机一次没弹出来过 不知到为啥
- 查看了一下源码 他得在手机有设置指纹的情况下打开识别界面弹出弹窗以后再删除指纹才能弹窗 不知道是不是机型原因...
六. 我遇到的问题
手机有设置指纹的情况下打开识别界面弹出弹窗以后再删除指纹才能弹窗 不知道是不是机型原因...
界面不能自定义 他在原生部分写好的 你只能改提示文字
也可能是我研究不到家 有更新再补上去把......