我实现了这里描述的密码检测 - Programatically Checking if a Passcode Lock is Set,但它仅适用于iOS 8及更高版本。
这一行的应用程序崩溃secRecord.AccessControl = new SecAccessControl (SecAccessible.WhenPasscodeSetThisDeviceOnly);
是否有可能以编程方式检查iOS 7上的密码状态?
我没有找到任何关于此的信息。
答案 0 :(得分:3)
不,你不能。从文档:
<强> kSecAttrAccessibleAfterFirstUnlock 强>
重启后,无法访问钥匙串项目中的数据,直到用户解锁设备为止。
首次解锁后,数据仍可访问,直到下次重启。建议用于需要后台应用程序访问的项目。具有此属性的项目在使用加密备份时会迁移到新设备。
适用于iOS 4.0及更高版本。
<强> kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly 强>
重启后,无法访问钥匙串项目中的数据,直到用户解锁设备为止。
首次解锁后,数据仍可访问,直到下次重启。建议用于需要后台应用程序访问的项目。具有此属性的项目不会迁移到新设备。因此,从备份其他设备恢复后,这些项目将不会出现。
适用于iOS 4.0及更高版本。
<强> kSecAttrAccessibleAlways 强>
无论设备是否被锁定,都可以随时访问钥匙串项目中的数据。
建议不要将其用于应用程序。具有此属性的项目在使用加密备份时会迁移到新设备。
适用于iOS 4.0及更高版本。
<强> kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly 强>
只有在设备解锁时才能访问钥匙串中的数据。仅在设备上设置密码时才可用。
建议仅在应用程序位于前台时才需要访问的项目。具有此属性的项目永远不会迁移到新设备。备份恢复到新设备后,这些项目将丢失。在没有密码的设备上,此类中不能存储任何项目。禁用设备密码会导致删除此类中的所有项目。
适用于iOS 8.0及更高版本。
<强> kSecAttrAccessibleAlwaysThisDeviceOnly 强>
无论设备是否被锁定,都可以随时访问钥匙串项目中的数据。
建议不要将其用于应用程序。具有此属性的项目不会迁移到新设备。因此,从备份其他设备恢复后,这些项目将不会出现。
适用于iOS 4.0及更高版本。
<强> kSecAttrAccessibleWhenUnlocked 强>
只有在用户解锁设备时,才能访问钥匙串项目中的数据。
建议仅在应用程序位于前台时才需要访问的项目。具有此属性的项目在使用加密备份时会迁移到新设备。
这是在未明确设置辅助功能常量的情况下添加的钥匙串项的默认值。
适用于iOS 4.0及更高版本。
<强> kSecAttrAccessibleWhenUnlockedThisDeviceOnly 强>
只有在用户解锁设备时,才能访问钥匙串项目中的数据。
建议仅在应用程序位于前台时才需要访问的项目。具有此属性的项目不会迁移到新设备。因此,从备份其他设备恢复后,这些项目将不会出现。
适用于iOS 4.0及更高版本。