我们的应用支持Touch ID。当用户使用iOS10时,我们使用Touch ID将登录名保存到钥匙串。
但是,当用户升级到iOS11时,用户无法从iOS 10中检索已保存的Touch ID。
我测试了每个iOS版本,它运行正常,只有升级问题。
如果没有足够的硬件很难解决这个问题,我只能升级一次。
要在viewDidLoad中显示的代码:
let touchIdHelper = TouchIdHelper(promptMessage: viewModel.getPasswordReason)
if !touchIdHelper.isDeviceTouchIdReady() {
hideTouchIdComponents()
} else {
if self.viewModel.canLoginUsingTouchId {
touchIdHelper.promptTouchId(completion: {
let decryptedPassword = self.viewModel.decryptedPassword
if decryptedPassword.characters.count > 0 {
self.updatePasswordAndLogin(decryptedPassword)
}
})
}
}
商店密码功能:
func storePasswordForTouchIdLogin() -> Bool {
let keychainHelper = KeychainHelper(dataCode: currentAccountId,
encryptionKeyCode: touchIdEncryptionKey,
data: currentPassword)
return keychainHelper.encryptAndStore()
}
解密功能:
var decryptedPassword: String {
let keychainHelper = KeychainHelper(dataCode: currentAccountId,
encryptionKeyCode: touchIdEncryptionKey)
return keychainHelper.readAndDecrypt()
}
有人遇到过模拟器问题吗?非常感谢!