터치아이디와 페이스아이디 복습하세요!!(AppleWatch 인증 없음)
경로 코드 인증, 터치 ID 인증, faceID 인증...
4번째 인증 AppleWatch 인증
iOS 14.5는 아직 어플리케이션에서 사용할 수 없습니다.
말은 그렇지만 여기서 복습하고 인증하는 것도 괜찮을 것 같아요.
Mac면 이전부터 사용했죠.
info.plist에 추가
일단 추가해.
NSFaceIDUsageDescription
키만 추가합니다.Xcode에서 "Prevacy-Face ID Usage Description"으로 표시됩니다.
InfoPlist.strigs로 제작된 현지화 제품을 잊지 마세요.
info.plist에 추가하지 않아도 FaceID에 대한 라이센스가 표시됩니다.
하지만 "Face ID가 지원되지 않을 수 있음"등의 메시지가 표시됩니다.조심해.
실제로 써 내려가다🖋
import LocalAuthentication
LocalAuthentication
는 미리 가져와야 합니다.어떤 생물 측정을 사용할 수 있는지 검사하다
아이폰X(10) 이후 단말기는 터치 ID가 아닌 페이스 ID다.
biometryType
이 설비가 가지고 있는 생물 측정을 나타낸다.case .touchID
터치 ID를 사용할 수 있습니다.
case .faceID
faceID를 사용할 수 있습니다.
case .none
사용할 수 있는 생물 측정은 존재하지 않습니다.
초기 값은 입니다.는 none이며 LAContext에서 처리하지 않으면 초기 값이 유지됩니다.
따라서 사용해야 한다
canEvaluatePolicy
.let context = LAContext()
var error: NSError?
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
switch context.biometryType {
case .touchID:
// touchID が使える場合
case .faceID:
// faceID が使える場合
default:
// 新たな生体認証が増えた場合、呼ばれる可能性あり
break
}
} else {
// 生体認証が使えない場合(faceID を許可していない場合)
print("BiometryType Error: " + (error?.localizedDescription ?? "Unknown Error"))
}
생물 측정을 허가하지 않은 경우User has denied the use of biometry for this app.
이런 코드는 확인할 수 있다.
또
biometryType
는 iOS 11 이후 추가됐다.(그 전에는 터치 ID만 있었다)iOS 10 이전을 지원하는 경우에도 다음 작업이 필요합니다.
・・・
if #available(iOS 11.0, *) {
switch context.biometryType {
case .touchID:
// touchID が使える場合
case .faceID:
// faceID が使える場合
default:
// 新たな生体認証が増えた場合、呼ばれる可能性あり
break
}
} else {
// touchID のみ
}
・・・
인증 실행
let context = LAContext()
let localizedReason = "ロックの解除に、認証を使用します。"
context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: localizedReason, reply: {success, error in
if success {
// 認証成功時の処理
} else {
// キャンセルされた場合
print("Authenticate Cancel: " + (error?.localizedDescription ?? "Unknown Error"))
}
})
참고로 사용자가 취소 버튼을 누르면Canceled by user.
되돌아오다
error
.policy
인증 방법.
상세한 상황은 아래와 같다.
localizedReason
인증 화면에 표시된 인증 요청 이유(텍스트).
상세한 상황은 아래와 같다.
reply
인증이 끝났을 때 호출된 블록입니다.
success
인증 성공 시
true
실패하거나 취소된 경우false
. error
인증 성공 시
nil
.실패하거나 취소된 경우에만 돌아갑니다.
1. 인증 방법
LAPolicy
, 인증 방법을 지정할 수 있습니다.그나저나 iOS는 두 가지밖에 없다.Case
rawValue
iOS
deviceOwnerAuthenticationWithBiometrics
바이오메트릭 측정(TouchID 또는 FaceID)1
iOS 8~
deviceOwnerAuthenticationWithWatch
AppleWatch 인증3
지원되지 않음
deviceOwnerAuthenticationWithBiometricsOrWatch
바이오메트릭 또는 AppleWatch4
지원되지 않음
deviceOwnerAuthentication
Apple Watch(iOS 불가), 바이오메트릭 측정, 경로 코드 중 하나2
iOS 9~
애플 워치 인증, 맥OS 한정된 것 같다.
'deviceOwnerAuthenticationWithWatch' is unavailable in iOS
\1. 'deviceOwnerAuthenticationWithWatch' has been explicitly marked unavailable here (LocalAuthentication.LAPolicy)
아이폰도 iOS 14.5부터 새로 실시(잠금 해제)했기 때문에 며칠 지나면 앱도 사용할 수 있는데...?
(...라고요?)
deviceOwner Authentication의 경우
생물 측정을 한 후 실패하면 경로 코드 인증을 선택할 수 있습니다.
FaceID를 사용하지 않으면 경로 코드 인증이 건너뜁니다.
d e v i c e Ow e r Au t hentication WithBiometrics의 경우
생체 측정(TouchID 또는 FaceID)만 수행됩니다.
더 정확히 말하면 비밀번호를 입력할 수 없는 설정이다.
따라서 두 가지 주의점이 있다.
인증이 실패하면 암호를 입력할 수 있는 항목이 표시됩니다.
Fallback authentication mechanism selected.
눌러도 아무것도 안 나와.
iOS 9부터 시작하는 것 같은데.
let context = LAContext()
context.localizedFallbackTitle = ""
localizedFallbackTitle
가 비어 있으면 표시되지 않습니다.이쪽은 나무랄 데가 없잖아.
User has denied the use of biometry for this app.
생물 측정을 사용할 수 없다면 본래 이 처리를 하지 않는 것이 비교적 안전하다.
아니면, 잘못된 내용에 따라 따로 처리하거나... 등.
2. 인증의 사용 목적
인증 시 이유를 표시합니다.
FaceID를 사용할 때는 확인할 수 없지만 터치 ID 및 암호를 입력할 때는 표시됩니다.
let context = LAContext()
let localizedReason = "ロックの解除に、認証を使用します。"
※ 이미지 부분 현지화.
+α
상술한 내용만 있으면 처리가 완성된다.
상세한 내용에 주의한 부분은 다음과 같이 요약한다.
취소 사유에 따라 분리 처리하다
let context = LAContext()
let localizedReason = "ロックの解除に、認証を使用します。"
context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: localizedReason, reply: {success, error in
if let error = error {
switch LAError(_nsError: error as NSError).code {
case .appCancel:
// システムによるキャンセル① アプリのコード
case .systemCancel:
// システムによるキャンセル② システム
case .userCancel:
// ユーザーによってキャンセルされた場合
case .biometryLockout:
// 生体認証エラー① 失敗制限に達した際のロック
case .biometryNotAvailable:
// 生体認証エラー② 許可していない
case .biometryNotEnrolled:
// 生体認証エラー③ 生体認証IDが1つもない
case .authenticationFailed:
// 認証に失敗してエラー
case .invalidContext:
// システムによるエラー① すでに無効化済み
case .notInteractive:
// システムによるエラー② 非表示になっている
case .passcodeNotSet:
// パスコード認証エラー① パスコードを設定していない
case .userFallback:
// パスコード認証エラー② LAPolicyによって無効化
default:
// そのほかの未対応エラー
}
} else if success {
// 認証成功時の処理
} else {
// 予期せぬエラーの場合
}
if !success {
print("Authenticate Cancel: " + (error?.localizedDescription ?? "Unknown Error"))
}
})
LAError.code까닭
설명
.appCancel
시스템 취소invalidate()
에서 명시적으로 비활성화된 경우.systemCancel
시스템 취소응용 프로그램을 닫을 때
.userCancel
사용자가 취소한 경우사용자가 취소 버튼을 눌렀을 때(다른 이유가 있어도 취소 버튼을 눌렀을 때)
.biometryLockout
생물 측정 오류인증 실패 횟수가 일정 횟수에 도달하면 생물 측정이 잠긴 상태
.biometryNotAvailable
생물 측정 오류생체측정(FaceID) 라이센스가 거부된 경우
.biometryNotEnrolled
생물 측정 오류바이오메트릭 ID(FaceID 또는 TouchID)가 없는 경우
.authenticationFailed
인증 실패, 오류인증 실패 시?(취소 버튼
.userCancel
을 눌러 확인하지 않음).invalidContext
시스템 오류비활성화된 Context를
invalidate()
에 사용하는 경우.notInteractive
시스템 오류interactionNotAllowed
예 true
, 인증 UI를 표시할 수 없음.passcodeNotSet
경로 코드 인증 오류경로 코드가 설정되지 않은 경우
.userFallback
경로 코드 인증 오류LAPolicy가 경로 코드 인증을 사용하지 않는 유형인 경우 [경로 코드 입력]을 눌러도 인증 화면이 표시되지 않습니다.
장치 내 상황으로 인한 오류, 코드 등으로 인한 시스템 오류의 절반 정도가 아닐까.
실제적으로 사용하는 것은 상반부다.
또
.biometryLockout
등 생체측정 관련 오류는 iOS 11에서 기존 항목에서 교체됐다.iOS 10 이전에는 터치 ID만 있었습니다.
아래의 오래된 항목은 현재 추천하지 않습니다.
case .touchIDNotAvailable:
// touchID認証エラー① 失敗制限に達した際のロック
case .touchIDNotEnrolled:
// touchID認証エラー② 許可していない
case .touchIDLockout:
// touchID認証エラー③ touchIDが1つもない
시뮬레이터 방법
[Features]→[Face ID]→[Enrolled]로 인증할 수 있습니다.
인증 성공 동작.
인증 실패 동작 [Non-matching Face].
터치 ID 터미널에서 FaceID가 아닌 터치 ID입니다.
방법은 거의 같다.
참고 자료
LAContext //Apple Developer
자세한 건 여기 있습니다.
iOS 10에서 필요한 사용자 데이터에 액세스하기 위한 로컬화된 문
InfoPlist.strings(Info.plist의 현지화)에 대한 기사입니다.
에..?본편과 상관없어...??
그러니까
터미널 내에서 완성된 인증이기 때문에 설치 자체가 매우 간단하다.
조잡하게 쓴 것이기 때문에 세심하지 못한 점이 있으면 반드시 쓰십시오.
AppleWatch 인증은 아직 응용 프로그램에서 사용할 수 없습니다.(향후 사용 여부는 불분명)
그렇긴 하지만 추가 가능성이 있다면 들여다보는 게 좋을 것 같다.
밖에서 마스크를 써야 하는 지금은 페이스ID가 별로 유용하지 않다.
그래서 애플워치 인증에 큰 도움이 됐는데...
매우 편리합니다.네.
그렇긴 하지만 잠금 해제 이외에도 (프로그램 포함) 사용할 수 없습니다.
참, 터치 ID 아직 부활 안 했나요?🤔
Reference
이 문제에 관하여(터치아이디와 페이스아이디 복습하세요!!(AppleWatch 인증 없음)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/men_so/articles/f8697c52acbc8b2f6501텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)