locker 3.0.3

Locker 3.0.3

Jasmin Abou AldanBarbara VujičićSiniša AbramovićGoran Brlas维护。



Locker 3.0.3

  • 作者
  • Barbara Vujičić, Jasmin Abou Aldan 和 Zvonimir Medak

Locker 🔒

Bitrise GitHub Cocoapods Cocoapods platforms

Locker

使用iOS生物识别特性在密钥链中处理敏感数据(String类型)的轻量级库。

特性

  • 在密钥链中保存数据。
  • 使用生物识别ID从密钥链中检索数据。
  • 从密钥链中删除数据。
  • 还有一些额外的方法可以帮助您保存和检索与生物识别认证有关的一些附加信息。
  • 检测生物识别设置的变化。
  • 检查设备是否支持特定的生物识别ID。
  • 检测并支持模拟器。
  • 在不更新库的情况下更新支持设备列表。

要求

  • iOS 10.0 +

安装

Locker支持CocoaPods、Swift Package Manager和Carthage。

CocoaPods

如果还未安装,请查看 CocoaPods 安装说明

要将库集成到您的 Xcode 项目中,请指定您的 Podfile 文件中的 pod 依赖

platform :ios, '10.0'
use_frameworks!

pod 'Locker'

运行 pod install

pod install

Swift Package Manager

要从 Swift Package Manager 安装 Locker,请按照以下步骤操作:

有关更多信息,请参阅 Swift Package Manager.

Carthage

有关 Carthage 的安装和使用说明,您可以查看官方的 快速入门文档

要将库集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它

github "infinum/Locker"

运行 carthage update

使用

0. 设置 Xcode 项目 Info.plist 以获得使用 Face ID 所需的权限。
  • 在弹出菜单中添加以下内容到您的 Info.plist
    • 隐私 - Face ID 使用说明
    • 添加新字段后,提供有意义的说明
  • 例如:
<key>NSFaceIDUsageDescription</key>
<string>** Add your Face ID Usage Description **</string>
1. 使用 setSecret: forUniqueIdentifier: completed: 方法保存数据。

对于 uniqueIdentifier,传入您后来用于获取数据的 String 值。 completed 是一个闭包,在完成秘密存储时被调用。如果在存储过程中发生错误,信息将通过完成块传递。

// Objective-C
[Locker setSecret:@"passcode" forUniqueIdentifier:@"kUniqueIdentifier" completed: ^(NSError *error) {
    //handle error
}];
// Swift
Locker.setSecret("passcode", for: "UniqueIdentifier", completed: { error in
    // handle error
})

如果 Locker 在模拟器中运行,则会将数据存储到 UserDefaults 而不是密钥链中。您可以使用 isRunningFromTheSimulator 属性检查 Locker 是否在模拟器中运行。

2. 使用 retrieveCurrentSecretForUniqueIdentifier: operationPrompt: success: failure: 获取数据。

operationPrompt 是将作为系统 Touch ID 对话框上的消息显示的 String 值。您将在 success 完成块中获得数据。如果由于某些原因在密钥链中找不到数据,则您将在 failure 完成块中收到错误状态。

// Objective-C
[Locker retrieveCurrentSecretForUniqueIdentifier:@"kUniqueIdentifier" 
 operationPrompt:@"Touch ID description" success:^(NSString *secret) {
    // do sth with secret        
} failure:^(OSStatus failureStatus) {
    // handle failure
}];
// Swift
Locker.retrieveCurrentSecret(
  for: "kUniqueIdentifier", 
  operationPrompt: "Touch ID description", 
  success: { (secret) in
    // do sth with secret
  }, failure: { (failureStatus) in
    // handle failure
  }
)
3. 使用 deleteSecretForUniqueIdentifier: 方法删除数据。
// Objective-C
[Locker deleteSecretForUniqueIdentifier:@"kUniqueIdentifier"];
// Swift
Locker.deleteSecret(for: "kUniqueIdentifier")
4. 如果您需要更新保存的数据,请先调用 setSecret: forUniqueIdentifier: completed: 方法。此方法首先删除旧值(如果有的话),然后保存新值。
5. 有一些额外的步骤可能有助于您处理生物识别认证。

使用setShouldUseAuthenticationWithBiometrics:forUniqueIdentifier:方法来保存是否应该使用生物识别ID从密钥链中获取数据。使用shouldUseAuthenticationWithBiometricsForUniqueIdentifier:方法来获取该信息。

使用setDidAskToUseAuthenticationWithBiometrics:forUniqueIdentifier:方法保存用户是否被询问是否使用生物识别ID来处理某些数据。使用didAskToUseAuthenticationWithBiometricsForUniqueIdentifier:方法来获取该信息。

使用setShouldAddSecretToKeychainOnNextLogin:forUniqueIdentifier:方法保存在下一次用户登录时是否应该将数据保存到密钥链。使用shouldAddSecretToKeychainOnNextLoginForUniqueIdentifier:方法来获取该信息。

注意:此处的方法是因为它们在一些我们的项目中使用过。你可能想使用前两种,即setShouldUseAuthenticationWithBiometrics: forUniqueIdentifiershouldUseAuthenticationWithBiometricsForUniqueIdentifier。其他的方法如果您的应用有特定的行为将会很有用。

6. 您可以使用biometricsSettingsDidChange来检查生物识别设置变化。

如果自上次调用此方法或上次保存键值以来生物识别设置已更改,则它将返回true

// Objective-C
BOOL biometrySettingsChanged = Locker.biometricsSettingsDidChange;
BOOL usingBiometry = [Locker shouldUseAuthenticationWithBiometricsForUniqueIdentifier:@"kUniqueIdentifier"];
if (biometrySettingsChanged && usingBiometry) {
    // handle case when settings are changed and biometry should be used
}
// Swift
let biometrySettingsChanged = Locker.biometricsSettingsDidChange
let usingBiometry = Locker.shouldUseAuthenticationWithBiometrics(for: "kUniqueIdentifier")
if biometrySettingsChanged && usingBiometry {
// handle case when settings are changed and biometry should be used
}
7. 有supportedBiometricsAuthenticationconfiguredBiometricsAuthentication计算属性,它们返回BiometricsType枚举(BiometricsTypeNoneBiometricsTypeTouchIDBiometricsTypeFaceID)。

supportedBiometricsAuthentication检查设备是否支持某些生物识别类型。configuredBiometricsAuthentication检查设备是否支持某些生物识别类型,并且该生物识别是否已在设备设置中启用。

8. 存在一个包含具有FaceID或TouchID的每个iPhone和iPad型号的本地JSON文件。这样可以检查用户的设备是否可以使用FaceID或TouchID。如果您想允许JSON文件与服务器同步,可以将enableDeviceListSync设置为true

当启用enableDeviceListSync时,如果设备不在本地列表中,它将与服务器列表同步,并将同步后的列表写入本地JSON文件。

贡献

欢迎反馈和代码贡献。只需创建一个带有更改简短描述的拉取请求。通过向此项目贡献,您同意根据相同的许可协议使用您的代码。