Magdagdag ng pagpapatunay ng daliri sa iyong app, gamit ang BiometricPrompt

May -Akda: Lewis Jackson
Petsa Ng Paglikha: 13 Mayo 2021
I -Update Ang Petsa: 1 Hulyo 2024
Anonim
Magdagdag ng pagpapatunay ng daliri sa iyong app, gamit ang BiometricPrompt - Apps
Magdagdag ng pagpapatunay ng daliri sa iyong app, gamit ang BiometricPrompt - Apps

Nilalaman


Gawin ang BiometricPrompt API upang lumikha ng isang app na magpapahintulot sa gumagamit na kumpirmahin ang kanilang pagkakakilanlan gamit ang isang fingerprint.

Buksan ang Android Studio at lumikha ng isang bagong proyekto, gamit ang template na "Walang laman na Gawain". Kapag sinenyasan, itakda ang minimum na SDK ng iyong proyekto sa 28 o mas mataas, dahil mapigilan nito ang iyong aplikasyon na mai-install sa anumang mas maaga kaysa sa Android Pie.

Kung nais mong gawing maa-access ang iyong app sa isang mas malawak na saklaw ng mga aparato ng Android, kailangan mong suriin kung anong bersyon ng Android ang iyong aplikasyon ay kasalukuyang naka-install, at pagkatapos ay hawakan nang iba ang pagpapatunay ng biometric, depende sa antas ng API ng aparato.

Idagdag ang library ng Biometric

Upang magsimula, buksan ang iyong file-level build.gradle file, at idagdag ang pinakabagong bersyon ng Biometric library bilang isang dependant ng proyekto:


dependencies {pagpapatupad ng androidx.biometric: biometric: 1.0.0-alpha03

Idagdag ang pahintulot ng USE_BIOMETRIC

Pinapayagan ka ng BiometricPrompt API na mag-tap ka sa lahat ng iba't ibang mga pamamaraan ng pagpapatunay ng biometric na sinusuportahan ng aparato, sa pamamagitan ng isang solong pahintulot.

Buksan ang Manifest ng iyong proyekto, at idagdag ang pahintulot ng "USE_BIOMETRIC":

Lumikha ng layout ng iyong aplikasyon

Susunod, lumikha ng layout ng aming aplikasyon. Magdadagdag ako ng isang solong pindutan na, kapag na-tap, ay ilulunsad ang dialog ng pagpapatunay ng daliri:

Buksan ang file ng strings.xml ng iyong proyekto, at idagdag ang mapagkukunang string ng "auth":


BiometricPromptSample Patunayan gamit ang fingerprint

Ang pagpapatunay ng pagkakakilanlan ng gumagamit

Ngayon, tingnan natin kung paano mo mapatunayan ang pagkakakilanlan ng gumagamit, gamit ang BiometricPrompt.

Lumikha ng isang halimbawa ng biometric prompt

Kasama sa klase ng BiometricPrompt ang isang kasamahan na Tagabuo () klase, na maaari mong gamitin upang lumikha ng isang halimbawa ng BiometricPrompt at simulan ang pagpapatunay:

panghuling BiometricPrompt.PromptInfo promptInfo = bagong BiometricPrompt.PromptInfo.Builder ()

Kapag binubuo ang iyong halimbawa ng BiometricPrompt, kakailanganin mong tukuyin ang teksto na dapat lumitaw sa dialog ng pagpapatunay, at ipasadya ang "negatibong pindutan," na siyang pindutan na nagpapahintulot sa gumagamit na kanselahin ang pagpapatotoo.

Upang i-configure ang dialog ng pagpapatunay, kakailanganin mong ibigay ang sumusunod:

  • setTitle. Ang pamagat ng daliri ng pagpapatunay ng daliri. (Kailangan)
  • setSubtitle. Ang subtitle ng daliri ng pagpapatotoo ng daliri. (Opsyonal)
  • setDeskripsyon. Isang karagdagang paglalarawan na ipapakita sa iyong pag-authentication na diyalogo. (Opsyonal)
  • setNegativeButton (teksto, tagapagpatupad, tagapakinig). Ito ang label ng pindutan ng negatibong, halimbawa "Ikansela" o "Exit." Kapag na-configure ang negatibong pindutan, kakailanganin mo ring magbigay ng isang halimbawa ng Tagapagpatupad at isang OnClickListener upang maalis ng gumagamit ang authentication dialog.

Sa panahon ng pagsulat, hindi posible na ipasadya ang icon o ang error na ginamit sa dialog ng pagpapatotoo.

Sa wakas, kailangan mong tawagan ang build (). Nagbibigay ito sa amin ng mga sumusunod:

panghuling BiometricPrompt.PromptInfo promptInfo = bagong BiometricPrompt.PromptInfo.Builder () .setTitle ("Pumunta ang pamagat ng teksto dito") .setSubtitle ("Pupunta dito ang Subtitle") .setDescription ("Ito ang paglalarawan") .setNegativeButtonText ("Cancel" .build ();

Pangasiwaan ang mga callback ng pagpapatunay

Ang halimbawang BiometricPrompt ay itinalaga ng isang hanay ng mga pamamaraan ng pagtawag sa pagpapatunay ng callback na bibigyan ng kaalaman ang iyong app tungkol sa mga resulta ng proseso ng pagpapatunay.

Kailangan mong balutin ang lahat ng mga callback na ito sa isang BiometricPrompt.AuthenticationCallback klase halimbawa:

panghuling BiometricPrompt myBiometricPrompt = bagong BiometricPrompt (aktibidad, bagongExiser, bagong BiometricPrompt.AuthenticationCallback () {

Ang susunod na hakbang ay ang pagpapatupad ng ilan, o lahat ng mga sumusunod na pamamaraan ng callback:

1. onAuthenticationSucumpay ()

Ang pamamaraang ito ay tinawag kapag ang fingerprint ay matagumpay na naitugma sa isa sa mga fingerprint na nakarehistro sa aparato. Sa sitwasyong ito ang isang bagay na AuthenticationResult ay naipasa sa onAuthenticationSucumpay na callback at ang iyong app ay magsasagawa ng isang gawain bilang tugon sa matagumpay na pagpapatotoo.

Upang makatulong na maging simple ang mga bagay, tutugon ang aming app sa pamamagitan ng pag-print ng isang sa Logcat ng Android Studio:

@Override pampublikong walang bisa saAuthenticationSucumpay (@NonNull BiometricPrompt.AuthenticationResult na resulta) {super.onAuthenticationSucumpay (resulta); Log.d (TAG, "matagumpay na kinikilala ng Fingerprint"); }

2. onAuthenticationFailed ()

Ang pamamaraang ito ay na-trigger kapag matagumpay na nakumpleto ang pag-scan ngunit ang fingerprint ay hindi tumutugma sa alinman sa mga kopya na nakarehistro sa aparato. Muli, ang aming app ay tutugon sa kaganapan sa pagpapatunay na ito, sa pamamagitan ng pag-print ng isang sa Logcat:

@Override pampublikong walang bisa saAuthenticationFailed () {super.onAuthenticationFailed (); Log.d (TAG, "Hindi kinikilala ang fingerprint"); }

3. onAuthenticationError

Ang callback na ito ay na-trigger kapag ang isang hindi mababawi na error ay naganap at ang pagpapatunay ay hindi maaaring matagumpay na makumpleto. Halimbawa, marahil ang touch sensor ng aparato ay sakop ng dumi o grasa, ang gumagamit ay hindi nakarehistro ng anumang mga fingerprint sa aparato na ito, o walang sapat na memorya na magagamit upang maisagawa ang isang buong biometric scan.

Narito ang code na gagamitin ko sa aking app:

@Override pampublikong walang bisa saAuthenticationError (int errorCode, @NonNull CharSequence errString) {super.onAuthenticationError (errorCode, errString); kung (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} iba pa {Log.d (TAG, "May naganap na hindi matatanggap na error"); }}

4. onAuthenticationHelp

Ang paraan ng OnAuthenticationHelp ay tinatawag tuwing nangyayari ang isang hindi pagkamatay na error, at may kasamang help code at isang nagbibigay ng karagdagang impormasyon tungkol sa error.

Upang makatulong na mapanatili ang aming code nang diretso, hindi ako gumagamit ngAAthenticationHelp sa aming app, ngunit ang isang pagpapatupad ay magmukhang katulad nito:

@Override pampublikong walang bisa saAuthenticationHelp (int helpCode, CharSequence helpString) {super.onAuthenticationHelp (helpCode, helpString); biometricCallback.onAuthenticationHelp (helpCode, helpString); }

Sa wakas, kailangan nating tawagan ang tunay () na pamamaraan ng BiometricPrompt halimbawa:

myBiometricPrompt.authenticate (promptInfo);

Ang pagpapatupad ng pagpapatunay na biometric na Android Pie

Kapag nakumpleto mo na ang lahat ng mga hakbang sa itaas, ang iyong MainActivity ay dapat magmukhang ganito:

i-import ang androidx.appcompat.app.AppCompatActivity; i-import ang androidx.biometric.BiometricPrompt; i-import ang android.os.Bundle; mag-import ng java.util.concurrent.Executor; mag-import ng java.util.concurrent.Executors; i-import ang androidx.fragment.app.FragmentActivity; i-import ang android.util.log; i-import ang android.view.View; i-import ang androidx.annotation.NonNull; pampublikong klase na MainActivity ay umaabot ng AppCompatActivity {pribadong static final String TAG = MainActivity.class.getName (); Protektado ng @Override na walang bisa saCreate (Bundle saveInstanceState) {super.onCreate (saveInstanceState); setContentView (R.layout.activity_main); // Lumikha ng isang thread ng thread na may isang solong thread // Executors newExecutor = Executors.newSingleThreadExecutor (); FragmentActivity activity = ito; // Simulan ang pakikinig para sa mga kaganapan sa pagpapatotoo // panghuling BiometricPrompt myBiometricPrompt = bagong BiometricPrompt (aktibidad, newExecutor, bagong BiometricPrompt.AuthenticationCallback () {@Override // onAuthenticationError ay tinawag kapag ang isang nakamamatay na error ay nagaganap // public void onAuthenticationError CharSequence errString) {super.onAuthenticationError (errorCode, errString); kung (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} iba pa {// Mag-print ng isang sa Logcat // Log.d (TAG, "Isang hindi matanggap na error na nangyari));}} // onAuthenticationSucumpay ay tinawag kapag matagumpay na naitugma ang isang fingerprint // @Override pampublikong walang bisa saAuthenticationSucumpay (@NonNull BiometricPrompt.AuthenticationResult na resulta) {super.onAuthenticationSucumpay (resulta); // Print a to Logcat // Log.d (TAG, "Fingerprint) matagumpay na kinikilala ");} // onAuthenticationFailed ay tinawag kapag hindi tumutugma ang fingerprint // @Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); // Print a to Log pusa // Log.d (TAG, "Hindi kinikilala ang fingerprint"); }}); // Lumikha ng halimbawa ng BiometricPrompt // panghuling BiometricPrompt.PromptInfo promptInfo = bagong BiometricPrompt.PromptInfo.Builder () // Magdagdag ng ilang teksto sa diyalogo // .setTitle ("Ang pamagat ng teksto ay pupunta dito") .setSubtitle ("Pupunta dito ang Subtitle" ) .setDescription ("Ito ang paglalarawan") .setNegativeButtonText ("Cancel") // Bumuo ng diyalogo // .build (); // Magtalaga ng isang onClickListener sa pindutan ng "Authentication" ng app // findViewById (R.id.launchAuthentication) .setOnClickListener (bagong View.OnClickListener () {@Override public void onClick (View v) {myBiometricPrompt.authenticate (promptInfo) }); }}

Pagsubok sa iyong proyekto

Ngayon ay nilikha mo ang iyong proyekto, oras na upang subukan ito at makita kung nagdaragdag ba talaga ito ng pagpapatunay ng daliri sa iyong app!

Upang patakbuhin ang proyektong ito, kakailanganin mo ang alinman sa isang pisikal na smartphone o tablet na nagpapatakbo ng Android Pie, o isang Android Virtual Device (AVD) na gumagamit ng preview ng P P o mas mataas.

Kailangan mo ring magrehistro ng kahit isang fingerprint sa iyong aparato. Kung gumagamit ka ng isang pisikal na aparato ng Android, pagkatapos:

  • I-secure ang iyong lockscreen na may isang PIN, password o pattern, kung wala ka (sa pag-navigate sa "Mga Setting> Lock screen at seguridad> Uri ng lock ng lock> Pattern / Pin / Password" at pagkatapos ay sinusunod ang mga tagubilin sa onscreen).
  • Ilunsad ang application na "Mga Setting" ng iyong aparato.
  • Piliin ang "I-lock ang screen at seguridad."
  • Piliin ang "Fingerprint scanner."
  • Sundin ang mga tagubilin upang irehistro ang isa o higit pang mga fingerprint.

Ang mga virtual virtual na aparato ay walang pisikal na sensor ng pagpindot, kaya kakailanganin mong gayahin ang isang kaganapan sa pagpindot:

  • Ilunsad ang iyong AVD, kung wala ka na.
  • Sa tabi ng AVD, makikita mo ang isang guhit ng mga pindutan. Hanapin ang tatlong dotted na "Higit pang" pindutan (kung saan ang cursor ay nakaposisyon sa sumusunod na screenshot) at bigyan ito ng isang pag-click. Inilunsad nito ang window na "Pinahabang Kontrol".
  • Sa window ng Pinahabang Kontrol, piliin ang "Fingerprint." Binubuksan nito ang isang hanay ng mga kontrol, kung saan maaari mong tularan ang iba't ibang mga kaganapan sa pagpindot.
  • Buksan ang menu ng pagbagsak, at piliin ang fingerprint na nais mong irehistro sa aparatong ito; Gumagamit ako ng "Daliri 1."
  • Ngayon, buksan natin ang ating pansin sa tinulad na aparato. Ilunsad ang application na "Mga Setting" ng AVD, at piliin ang "Security at lokasyon."
  • Kung hindi ka pa naka-setup ng isang PIN, password o pattern, pagkatapos ay piliin ang "Lock ng Screen" at sundin ang mga tagubilin sa onscreen upang ma-secure ang iyong lockscreen, pagkatapos ay mag-navigate pabalik sa pangunahing "Mga Setting> Security at lokasyon" na screen.
  • Piliin ang "Fingerprint," kasunod ng "Magdagdag ng fingerprint."
  • Sasabihan ka ngayon na pindutin ang iyong daliri sa touch sensor. Sa halip, panatilihin ang pag-click sa "Pindutin ang Sensor" hanggang sa makita mo ang isang "Fingerprint na idinagdag".

  • Mag-click sa "Tapos na."
  • Kung nais mong magrehistro ng karagdagang mga fingerprint, pagkatapos ay banlawan at ulitin ang mga hakbang sa itaas.

Kapag nakarehistro ka ng hindi bababa sa isang fingerprint, handa mong subukan ang iyong aplikasyon. Susubukan kong subukan kung paano nakakahawak ang aming aplikasyon ng tatlong magkakaibang mga sitwasyon:

  • Sinusubukan ng gumagamit na patunayan ang paggamit ng isang rehistradong fingerprint.
  • Sinusubukan ng gumagamit na patunayan ang paggamit ng isang fingerprint na hindi nakarehistro sa aparatong ito.
  • Sinusubukan ng gumagamit na patunayan ang paggamit ng hindi rehistradong mga fingerprint, maraming beses at sa mabilis na sunud-sunod.

Subukan nating patunayan gamit ang fingerprint na nakarehistro lamang sa aming aparato:

  • Siguraduhin na tinitingnan mo ang Logcat Monitor ng Android Studio, dahil dito ay lilitaw ang iba't ibang mga application ng iyong.

  • I-install ang iyong aplikasyon sa aparato ng pagsubok.
  • Tapikin ang pindutan ng "Tunay na may fingerprint" ng iyong application. Lilitaw ang dialog ng pagpapatunay ng fingerprint.
  • Kung gumagamit ka ng isang pisikal na aparato, pagkatapos ay pindutin nang matagal ang iyong daliri laban sa touch sensor ng aparato. Kung gumagamit ka ng isang AVD, pagkatapos ay gamitin ang pindutang "Pindutin ang sensor" upang gayahin ang isang kaganapan sa pagpindot.
  • Suriin ang Logcat Monitor. Kung ang pagpapatunay ay isang tagumpay, pagkatapos ay dapat mong makita ang sumusunod: "matagumpay na kinikilala ng Fingerprint"

Susunod, tingnan natin kung ano ang mangyayari kung susubukan nating patunayan ang paggamit ng isang fingerprint na hindi nakarehistro sa aparatong ito:

  • I-tap muli ang pindutan ng "Authenticate with fingerprint".
  • Kung gumagamit ka ng isang AVD, pagkatapos ay gamitin ang window ng "Extended Controls" upang pumili ng isang fingerprint na ay hindi nakarehistro sa aparatong ito; Gumagamit ako ng "Daliri 2." Bigyan ang isang pindutan ng "Pindutin ang sensor".
  • Kung gumagamit ka ng isang pisikal na Android smartphone o tablet pagkatapos pindutin at hawakan ang iyong daliri laban sa touch sensor ng aparato - siguraduhin na gumagamit ka ng isang daliri na hindi nakarehistro sa aparatong ito!
  • Suriin ang Logcat ng Android Studio, dapat itong magpakita ng isang "Hindi kinikilala ng Fingerprint".

Tulad ng nabanggit na, ang BiometricPrompt API ay awtomatikong humahawak ng labis na nabigo na mga pagtatangka sa pagpapatunay. Upang subukan ang pag-andar na ito:

  • Tapikin ang pindutan ng "Tunay na may fingerprint" ng iyong app.
  • Sikaping patunayan nang maraming beses sa mabilis na sunud-sunod, gamit ang isang hindi rehistradong fingerprint.
  • Matapos ang ilang mga pagtatangka, awtomatikong dapat isara ang kahon ng diyalogo. Suriin ang Logcat ng Android Studio, at dapat mong makita ang sumusunod: "Naganap ang isang hindi mababawi na error."

Maaari mong i-download ang kumpletong application mula sa GitHub.

Pagputol

Sa artikulong ito, ginalugad namin ang bagong BiometricPrompt API ng Pie ng Android, na nagbibigay-daan sa iyo na madaling magdagdag ng pagpapatunay ng daliri sa iyong app. Sa palagay mo ba ang BiometricPrompt ay isang pagpapabuti sa nakaraang mga pamamaraan ng pagpapatunay ng daliri ng Android? Ipaalam sa amin sa mga komento sa ibaba!

Ang iyong gabayNaghahanap para a iang manipi na Tala 10 plu kao? Walang ma payat na kao kaya a kao ng MNML a 0.35 mm lamang. Mayado itong payat na magmukha at pakiramdam na wala kang kao. Hindi ito na...

Ang iyong gabayNaghahanap para a iang manipi na Tala 10 kao? Walang ma payat na kao kaya a kao ng MNML a 0.35 mm lamang. Mayado itong payat na magmukha at pakiramdam na wala kang kao. Hindi ito nag-aa...

Pinapayuhan Ka Naming Basahin