最近使用iPhoneX,发现新下载的App有些都会弹出FaceID认证的确认框,引起了作为一个开发者的好奇心—具体是怎么实现的呢?
官方文章中写到:
FaceID属于本地认证,是通过密码或生物识别技术请求用户的身份验证。
下面是官方代码:
@IBAction func btnClick(_ sender: Any) {
let myContext = LAContext()
let myLocalizedReasonString = "开启面容解锁,获取更多服务"
var authError: NSError?
if #available(iOS 8.0, macOS 10.12.1, *) {
if myContext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &authError) {
myContext.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: myLocalizedReasonString) { success, evaluateError in
if success {
print("faceID is cool")
// User authenticated successfully, take appropriate action
} else {
// User did not authenticate successfully, look at error and take appropriate action
}
}
} else {
// Could not evaluate policy; look at authError and present an appropriate message to user
}
} else {
// Fallback on earlier versions
}
}
运行效果如下:
从提示中恍然大悟,FaceID是TouchID的替换,二者都属于本地认证,集成在LocalAuthentication模块中。其中认证策略枚举中的deviceOwnerAuthenticationWithBiometrics中的Biometrics,翻译成汉语是生物特征、生物信息的意思,也可以看出FaceID连同TouchID统一于人类体征,符合苹果用户体验至上的设计理念。
FaceID认证炫酷的同时,确确实实提供了方便。不要在纠结网络上对FaceID的吐槽,赶紧让你的App适配FaceID吧。因为有它,真的很好。
关注和鼓励都是对我的鼓励和支持~