Flutter 學(xué)習(xí) 之 本地指紋/生物識(shí)別 local_auth 2.0.0

本來想直接翻看看原生生物識(shí)別是怎么做的 百度了一下 flutter官方有提供輪子 本著 造不如買 的原則 就研究了一下發(fā)現(xiàn)它十三天前更新了2.0.0版本 那就來康康他的傳新版本
老樣子 官網(wǎng)再右側(cè) local_auth 2.0.0

一. 插件引入

dependencies:
  local_auth: ^2.0.0

二. 安卓端修改

2.1 注冊(cè)清單中加入權(quán)限

  <uses-permission android:name="android.permission.USE_FINGERPRINT"/>
  你要用上面那個(gè)權(quán)限 它會(huì)提示說過時(shí)了 安卓P以上換了一個(gè) 反正我minSDK也在p以上就換成了它推薦的 畢竟聽人勸吃飽飯
    <uses-permission android:name="android.permission.USE_BIOMETRIC" />

2.2 把繼承的FlutterActivity 改成FlutterFragmentAcitvity

沒什么好改的換了個(gè)導(dǎo)入包就可以了

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端修改

沒有開發(fā)工具哈 文檔說要改東西

<key>NSFaceIDUsageDescription</key>
<string>Why is my app authenticating using face id?</string>

四. dart的引用

  • isDeviceSupported 方法
    在Android 6.0 以上才能用 以下都是false 如果你手機(jī)沒有設(shè)置密碼 他會(huì)返回false 設(shè)置密碼就可以返回true了
bool supposed = await LocalAuthentication().isDeviceSupported();
  • 檢測(cè)是否有生物識(shí)別 上面檢測(cè)你開沒開 這個(gè)檢測(cè)有沒有 (硬件)
bool supposed = await LocalAuthentication().canCheckBiometrics();
  • 已經(jīng)注冊(cè)的生物識(shí)別 ios可能顯示指紋和faceid把
    我手上的Android返回了兩個(gè)一個(gè)weak 和strong
    Android 得設(shè)置完指紋之后才有返回
      availableBiometrics = await LocalAuthentication().getAvailableBiometrics();
  • 最重要的來了
    識(shí)別方法
    新版要這么寫 官網(wǎng)的demo都沒更新..真的是......
    對(duì)了 要需改 AndroidAuthMessages 需要手動(dòng)引入這個(gè)地址
    import 'package:local_auth_android/local_auth_android.dart';
    bool authenticated = await LocalAuthentication().authenticate(
///這個(gè)東西不是必須的 只是用來改文字用的..... 有中文的是我應(yīng)該是能看到過的東西.....
        authMessages: [
          const AndroidAuthMessages(
            biometricHint: "生物識(shí)別提示",
            biometricNotRecognized: "biometricNotRecognized",
            biometricRequiredTitle: "彈出提示框的時(shí)候的提示",
            biometricSuccess: "biometricSuccess",
            cancelButton: "取消按鈕的文字",
            deviceCredentialsRequiredTitle: "deviceCredentialsRequiredTitle",
            deviceCredentialsSetupDescription:
                "deviceCredentialsSetupDescription",
            goToSettingsButton: "去設(shè)置界面的按鈕",
            goToSettingsDescription: "這里說的是你如果沒有設(shè)置指紋那么你應(yīng)該去設(shè)置里面去設(shè)置",
            //頂部提示 默認(rèn)是英文說的是
            signInTitle: "您需要掃描指紋才能繼續(xù)",
          )
        ],
        localizedReason: '我們需要驗(yàn)證您的指紋',
        options: const AuthenticationOptions(
          ///使用他們的錯(cuò)誤處理
          useErrorDialogs: true,
          ///如果去后臺(tái)在返回還能繼續(xù)識(shí)別
          stickyAuth: true,
//解鎖以后還能干什么東西來著
          sensitiveTransaction: true,
          //只用身份處理不能用密碼
          biometricOnly: true,
        ),
      );

五. 他會(huì)拋出六種異常 需要自己去catch..

  • 雖然官方文檔說會(huì)給彈窗提示 useErrorDialogs給true的時(shí)候 但是我手機(jī)一次沒彈出來過 不知到為啥
  • 查看了一下源碼 他得在手機(jī)有設(shè)置指紋的情況下打開識(shí)別界面彈出彈窗以后再刪除指紋才能彈窗 不知道是不是機(jī)型原因...

六. 我遇到的問題

手機(jī)有設(shè)置指紋的情況下打開識(shí)別界面彈出彈窗以后再刪除指紋才能彈窗 不知道是不是機(jī)型原因...
界面不能自定義 他在原生部分寫好的 你只能改提示文字
也可能是我研究不到家 有更新再補(bǔ)上去把......

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容