Eri*_*ric 20 parental-control ios screen-lock
而不是直接在我的应用程序中构建密码,并可能要求用户输入密码两次(一次为设备,另一次为我的应用程序); 我以为我可能会聪明地做自己并做一些事情:
if (device has passcode)
continue into my app
else
make user enter my app passcode
Run Code Online (Sandbox Code Playgroud)
我不想设置设备密码,我不想强制屏幕锁定,不加密任何东西 - 我真正想要的只是一个API来检测设备密码是否生效.就像是:
BOOL notReally = [UIDevice isUserSlightlyMoreSecureBecauseTheySetDeviceLockOn];
Run Code Online (Sandbox Code Playgroud)
或者如果我感到幸运的话:
BOOL isPasscodeEnabled = [UIDevice isPasscodeEnabled];
BOOL isSimplePasscode = [UIDevice isSimplePasscode];
NSInteger minutes = [UIDevice requirePasscodeAfter];
Run Code Online (Sandbox Code Playgroud)
我猜不是基于这个问题(但是已经有几年了)"以编程方式检查设置包中的iPhone密码 "或者这可能就是答案; " 锁定解锁事件iphone "这不是我想要的,但可能"事后".
ssc*_*ale 31
对于iOS 9+,您可以使用新LocalAuthentication类检测它,它可以在Simulator和设备上运行:
import LocalAuthentication
private func devicePasscodeSet() -> Bool {
//checks to see if devices (not apps) passcode has been set
return LAContext().canEvaluatePolicy(.DeviceOwnerAuthentication, error: nil)
}
Run Code Online (Sandbox Code Playgroud)
lia*_*ols 26
从iOS 9开始,您可以使用LocalAuthentication.framework.如果定位iOS 9+,请阅读此处的评论或查看此答案.
如果您仍需要定位iOS 8,请继续阅读:)
从iOS8开始,你可以!
我已经整理了一个简单的类别来轻松检查状态:https://github.com/liamnichols/UIDevice-PasscodeStatus
此类别通过使用添加到iOS 8中的Security.Framework的新accessControl功能来工作.它尝试使用kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly保护级别将项添加到钥匙串.
文档说明如下:
只有在设备解锁时才能访问项目数据.仅当设备上设置了密码时,此类才可用.对于仅在应用程序位于前台时需要访问的项目,建议使用此选项.具有此属性的项目永远不会迁移到新设备,因此在将备份还原到新设备后,这些项目将会丢失.在没有密码的设备上,此类中不能存储任何项目.禁用设备密码将导致删除此类中的所有项目.
因此,当您尝试使用此级别的accessControl添加或读取钥匙串中的项目时,将返回错误.如果我们看到此错误,则passcodeStatus返回为LNPasscodeStatusDisabled.如果我们能够使用此级别的accessControl成功读取或写入钥匙串,那么我们将返回LNPasscodeStatusEnabled.
如果设备不受支持或返回与钥匙串无关的错误,我们将返回LNPasscodeStatusUnknown.
| 归档时间: |
|
| 查看次数: |
21387 次 |
| 最近记录: |