UIDevice-PasscodeStatus
一个 UIDevice 分类,用于确定是否在设备上设置了密码。
要求
- iOS 8
- 实体设备
工作原理
此分类通过使用 iOS 8 中 Security.Framework 添加的新 accessControl 功能来实现。它尝试使用 kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
保护级别向密钥链中添加一个项。
文档中声明如下:
项数据只能在设备解锁时访问。此类仅在设备上设置密码时可用。此功能适用于仅在应用程序前台运行时需要访问的项目。具有此属性的项永远不会迁移到新设备,因此,在新设备上恢复备份后,这些项将丢失。在无密码的设备上无法在此类中存储项。禁用设备密码将导致删除此类中所有项。
因此,当您尝试使用这种访问控制级别添加或读取密钥链中的项时,会返回错误。如果我们看到这个错误,则 passcodeStatus
返回为 UIDevicePasscodeStatusDisabled
。如果我们可以成功使用此级别的访问控制读取或写入密钥链,则返回 UIDevicePasscodeStatusEnabled
。
如果设备不受支持或者密钥链返回了无关的错误,我们将返回 UIDevicePasscodeStatusUnknown
。
安装
CocoaPods
pod 'UIDevice-PasscodeStatus', '~> 0.0'
手动
只需将 Source/
目录中的类复制到您的项目,并导入 Security.Framework