KeychainTouchID iOS 8 和 9

KeychainTouchID iOS 8 and 9

我按照apple的示例代码集成了touch id和keychain。 https://developer.apple.com/library/ios/samplecode/KeychainTouchID/Introduction/Intro.html

虽然在 iOS 9 中一切正常,但在 iOS8 中存在一个问题,如果我尝试访问保存的加密信息,OS 不会显示扫描弹出窗口并要求用户扫描那里的手指,它会立即给我数据。我需要对 apple 的示例进行哪些修改才能使其在 iOS8 中正常工作并在需要时显示扫描弹出窗口?

谢谢

只需检查此字典创建是否有 addItemAsync

NSDictionary *attributes = @{
        (__bridge id)kSecClass: (__bridge id)kSecClassGenericPassword,
        (__bridge id)kSecAttrService: @"SampleService",
        (__bridge id)kSecValueData: [@"SECRET_PASSWORD_TEXT" dataUsingEncoding:NSUTF8StringEncoding],
        (__bridge id)kSecUseNoAuthenticationUI: @YES,
        (__bridge id)kSecAttrAccessControl: (__bridge_transfer id)sacObject

kSecUseNoAuthenticationUI 在 iOS 9.

中已弃用
extern const CFStringRef kSecUseNoAuthenticationUI
        __OSX_AVAILABLE_BUT_DEPRECATED_MSG(__MAC_10_10, __MAC_10_11, __IPHONE_8_0, __IPHONE_9_0, "Use a kSecAuthenticationUI instead.");
extern const CFStringRef kSecUseAuthenticationUI
        __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0);

这应该有所帮助。