Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SecItemAdd不提示输入触摸ID_Ios_Touch Id - Fatal编程技术网

Ios SecItemAdd不提示输入触摸ID

Ios SecItemAdd不提示输入触摸ID,ios,touch-id,Ios,Touch Id,我对SecItemAdd()有一个奇怪的问题,它在iOS 8和iOS 9之间似乎有所不同。对于iOS 8,将某些内容保存到安全enclave将提示进行触摸ID身份验证(除非我已将kSecUseNoAuthenticationUI指定为@YES)。这就是我所期望的。然而,在iOS 9上,我似乎从未在SecItemAdd上获得过Touch ID身份验证 我意识到在8到9之间,属性发生了变化,KSecuseOAuthenticationUI现在被弃用,取而代之的是kSecUseAuthenticati

我对SecItemAdd()有一个奇怪的问题,它在iOS 8和iOS 9之间似乎有所不同。对于iOS 8,将某些内容保存到安全enclave将提示进行触摸ID身份验证(除非我已将kSecUseNoAuthenticationUI指定为@YES)。这就是我所期望的。然而,在iOS 9上,我似乎从未在SecItemAdd上获得过Touch ID身份验证

我意识到在8到9之间,属性发生了变化,KSecuseOAuthenticationUI现在被弃用,取而代之的是kSecUseAuthenticationUI,但无论我是省略kSecUseAuthenticationUI,还是用@YES指定它,我都不会得到提示

SecItemAdd()应该做什么

下面是我正在尝试的代码片段:

CFErrorRef error = NULL;  
  SecAccessControlRef sacObject;  

  sacObject = SecAccessControlCreateWithFlags(kCFAllocatorDefault,  
       kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly,  
       kSecAccessControlUserPresence, &error);  

  NSDictionary *attributes =  
  @{  
    (__bridge id)kSecClass: (__bridge id)kSecClassGenericPassword,  
    (__bridge id)kSecAttrService: @"Zenbanx",  
    (__bridge id)kSecAttrAccount: tokenKey,  
    (__bridge id)kSecValueData: [tokenValue dataUsingEncoding:NSUTF8StringEncoding],  
    /  
    (__bridge id)kSecUseNoAuthenticationUI: @NO,  
    (__bridge id)kSecUseAuthenticationUI: @YES,  
    (__bridge id)kSecAttrAccessControl: (__bridge_transfer id)sacObject  
    };  

  OSStatus status = SecItemAdd((__bridge CFDictionaryRef) attributes, nil);
我的目标是让代码在iOS 8和iOS 9之间呈现相同的用户交互


提前感谢。

kSecUseAuthenticationUI只接受kSecUseAuthenticationUIAllow、kSecUseAuthenticationUIFail和kSecUseAuthenticationUISkip。在您的情况下,应该使用kSecUseAuthenticationUIAllow