🔐
SwiftUIでFaceIDと指紋認証をやってみた
読んでほしい人
- SwiftUiを勉強してる人
- 生体認証に興味がある人
補足情報
今回は、海外のサイトを参考に、info.plist
の設定をして、コードを書いてみました。このサイトはSwiftを勉強するなら、ぜひみていただきたいです。
こちらの動画を参考に実機も使いつつ試してみたください。AppleDeveloperのアカウント持ってない人は実験できないかもしれないです😇
記事の内容
LocalAuthの機能は標準機能であるらしくimportすれば使えます。他のプロジェクトにコード書いてるので、私は別ファイルにログインページの構造体を書いてます。
import LocalAuthentication
import SwiftUI
struct LocalAuthView: View {
@State private var isUnlocked = false
var body: some View {
VStack {
if isUnlocked {
Text("Unlocked")
} else {
Text("Locked")
}
}
.onAppear(perform: authenticate)
}
func authenticate() {
let context = LAContext()
var error: NSError?
// check whether biometric authentication is possible
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
// it's possible, so go ahead and use it
let reason = "We need to unlock your data."
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: reason) { success, authenticationError in
// authentication has now completed
if success {
// authenticated successfully
isUnlocked = true
} else {
// there was a problem
}
}
} else {
// no biometrics
}
}
}
デフォルのファイルで呼び出してビルドすれば使えます。
import SwiftUI
struct ContentView: View {
var body: some View {
LocalAuthView()
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
}
iPhoneSEだと、こんな感じですね
最後に
前回も生体認証の記事を書いたのですが、指紋認証がなかったので参考になりそうな資料を見つけて試すことができました!
最近ローカル環境で認証を使う技術の調査をしているので参考になりました。
Discussion