Biometrinen tunnistautuminen
Tunnistakaa käyttäjät Face ID:llä ja Touch ID:llä.
Biometrinen tunnistautuminen on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.
Biometrinen tunnistus LocalAuthenticationilla
Face ID ja Touch ID antavat käyttäjien todistaa henkilöllisyytensä kirjoittamatta salasanaa. LocalAuthentication-kehys tarjoaa tämän LAContext-luokan kautta. Se arvioi tunnistautumiskäytännön ja kertoo, onnistuiko käyttäjän tunnistautuminen.
import LocalAuthentication
let context = LAContext()
// One LAContext object drives a single auth attemptSaatavuuden tarkistaminen ensin
Kutsukaa aina canEvaluatePolicy-metodia ennen kehotteen näyttämistä. Laitteessa ei ehkä ole biometrisiä tunnistimia, käyttäjä ei ehkä ole määrittänyt biometrisiä tietoja tai biometrinen tunnistus voi olla lukittu. Metodi palauttaa Bool-arvon ja epäonnistuessaan virheen, joka selittää syyn.
import LocalAuthentication
func canUseBiometrics() -> Bool {
let context = LAContext()
var error: NSError?
return context.canEvaluatePolicy(
.deviceOwnerAuthenticationWithBiometrics,
error: &error)
}Kaksi käytäntöä
.deviceOwnerAuthenticationWithBiometrics vaatii Face ID:n tai Touch ID:n ilman pääsykoodiin siirtymistä. .deviceOwnerAuthentication yrittää käyttää biometristä tunnistusta, mutta siirtyy tarvittaessa laitteen pääsykoodiin. Valitkaa käytäntö sen mukaan, hyväksyttekö pääsykoodin käytön.
import LocalAuthentication
// Biometrics only (no passcode fallback):
let strict = LAPolicy.deviceOwnerAuthenticationWithBiometrics
// Biometrics with passcode fallback:
let lenient = LAPolicy.deviceOwnerAuthentication
_ = (strict, lenient)Käytännön arviointi
evaluatePolicy suorittaa tunnistautumisen ja näyttää järjestelmän biometrisen tunnistautumisnäkymän. localizedReason-merkkijono kertoo käyttäjälle, miksi tunnistautumista pyydetään. Asynkroninen versio palauttaa Bool-arvon tai heittää poikkeuksen.
import LocalAuthentication
func authenticate() async -> Bool {
let context = LAContext()
do {
return try await context.evaluatePolicy(
.deviceOwnerAuthentication,
localizedReason:
String(localized: "Unlock your account"))
} catch {
return false
}
}Biometrisen tunnistuksen tyypin tunnistaminen
canEvaluatePolicy-kutsun jälkeen context.biometryType kertoo, käyttääkö laite .faceID-, .touchID-, .opticID- vai .none-tyyppiä. Käyttäkää tätä oikean kuvakkeen ja tekstin näyttämiseen omassa käyttöliittymässänne.
import LocalAuthentication
func biometryLabel() -> String {
let context = LAContext()
_ = context.canEvaluatePolicy(
.deviceOwnerAuthenticationWithBiometrics, error: nil)
switch context.biometryType {
case .faceID: return "Face ID"
case .touchID: return "Touch ID"
case .opticID: return "Optic ID"
default: return "Passcode"
}
}Virheiden käsitteleminen
Epäonnistumiset ilmoitetaan LAError-koodeina: .userCancel, .userFallback (käyttäjä valitsi pääsykoodin), .biometryLockout liian monen epäonnistuneen yrityksen jälkeen ja .biometryNotEnrolled. Käsitelkää nämä erikseen, jotta voitte antaa hyödyllisiä ohjeita yleisen virheilmoituksen sijaan.
import LocalAuthentication
func describe(_ error: Error) -> String {
guard let la = error as? LAError else { return "failed" }
switch la.code {
case .userCancel: return "cancelled"
case .biometryLockout: return "locked out"
case .biometryNotEnrolled: return "not set up"
default: return "failed"
}
}Face ID:n käyttöselite
Face ID:n käyttämiseksi Info.plist-tiedostoon on lisättävä NSFaceIDUsageDescription, joka selittää käyttötarkoituksen. Sen puuttuminen kaataa sovelluksen, kun Face ID -käytäntöä arvioidaan ensimmäisen kerran. Touch ID ei tarvitse vastaavaa avainta.
// Info.plist:
// NSFaceIDUsageDescription =
// "We use Face ID to unlock your saved passwords."
let required = "NSFaceIDUsageDescription is mandatory"
_ = requiredNäkymän mukauttaminen
Voitte mukauttaa kehotetta: localizedCancelTitle nimeää peruutuspainikkeen uudelleen ja localizedFallbackTitle määrittää varavaihtoehdon nimen tai piilottaa sen, kun arvona on tyhjä merkkijono. Tyhjän varavaihtoehdon nimen asettaminen piilottaa pääsykoodivaihtoehdon.
import LocalAuthentication
func configured() -> LAContext {
let context = LAContext()
context.localizedCancelTitle =
String(localized: "Not now")
context.localizedFallbackTitle = "" // hide fallback
return context
}Onnistuneen tunnistautumisen käyttäminen uudelleen
Oletuksena jokainen evaluatePolicy-kutsu näyttää uuden kehotteen. Määritteen touchIDAuthenticationAllowableReuseDuration avulla äskettäinen onnistunut lukituksen avaus voi täyttää myöhemmän tarkistuksen ilman uutta kehotetta — tämä on hyödyllistä, kun lyhyen ajan sisällä tehdään useita peräkkäisiä arkaluonteisia toimintoja.
import LocalAuthentication
func reusableContext() -> LAContext {
let context = LAContext()
context.touchIDAuthenticationAllowableReuseDuration = 30
return context
}Biometrinen tunnistus ja Keychain-suojaus
LAContext varmistaa käyttäjän henkilöllisyyden, mutta ei itsessään suojaa tietoja. Todellista suojausta varten yhdistäkää se Keychainin SecAccessControl-mekanismiin, jotta salaisuutta ei voi kryptografisesti lukea ennen onnistunutta tunnistautumista — sitä ei vain piiloteta tarkistetun Bool-arvon taakse.
import LocalAuthentication
// A bare evaluatePolicy == true is bypassable if your
// logic is tampered with. Prefer SecAccessControl so
// the data is encrypted until auth succeeds.
let pairing = "combine LAContext with Keychain ACL"
_ = pairingTäydellinen lukituksen avaamisen työnkulku
Yhdistäkää saatavuuden tarkistaminen, tunnistustyyppiin perustuvat viestit, arviointi ja virheenkäsittely yhdeksi luotettavaksi rutiiniksi, jota käyttöliittymänne voi kutsua.
import LocalAuthentication
func unlock() async -> Bool {
let context = LAContext()
var err: NSError?
guard context.canEvaluatePolicy(
.deviceOwnerAuthentication, error: &err) else {
return false
}
return (try? await context.evaluatePolicy(
.deviceOwnerAuthentication,
localizedReason:
String(localized: "Access your vault"))) ?? false
}Pikatarkistus
Palauttakaa mieleenne kahden pääkäytännön välinen ero.
Kertaus
Opitte biometrisen tunnistautumisen perusteet:
- Käyttäkää
LAContext-luokkaa ja kutsukaacanEvaluatePolicy-metodia ennenevaluatePolicy-metodia. .deviceOwnerAuthenticationWithBiometricssallii vain biometrisen tunnistautumisen;.deviceOwnerAuthenticationlisää pääsykoodiin siirtymisen.- Lukekaa
biometryTypeoikean sanamuodon käyttämiseksi ja käsitelkääLAError-koodeja, kuten.biometryLockout. - Lisätkää
NSFaceIDUsageDescriptionja yhdistäkää ratkaisu KeychaininSecAccessControl-mekanismiin todellisen suojauksen saavuttamiseksi.
Opi Swift tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 122
- Oppitunnit
- 409
Usein kysytyt kysymykset
Onko oppitunti ”Biometrinen tunnistautuminen” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Biometrinen tunnistautuminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Biometrinen tunnistautuminen”?
Tunnistakaa käyttäjät Face ID:llä ja Touch ID:llä. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Biometrinen tunnistautuminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?
Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Salaisuuksien tallentaminen Keychainiin
- Keychainin käyttöoikeuksien hallinta
- Biometrinen tunnistautuminen
- Tietosuoja ja salaus