Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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 带PIN回退的触摸ID API_Ios_Objective C_Ios8_Keychain_Touch Id - Fatal编程技术网

Ios 带PIN回退的触摸ID API

Ios 带PIN回退的触摸ID API,ios,objective-c,ios8,keychain,touch-id,Ios,Objective C,Ios8,Keychain,Touch Id,我们正在开发一个应用程序,在这个应用程序中,我们使用触摸ID从钥匙链中读取一个秘密 我们发现,当您在上一次读取后立即从钥匙链读取时,如果第一次使用PIN码读取密码,则第二次读取不会返回字符串值。如果用户第一次使用指纹,第二次将显示触摸ID对话框,并且另一次读取成功 下面是一个示例应用程序: 下面是使用KeyChainTouchIderError演示应用程序的一些场景。必须在运行iOS 8且带有触摸id传感器的真实设备上执行这些操作。使用模拟器时,所有场景均按预期工作,因为触摸ID对话框从未显示

我们正在开发一个应用程序,在这个应用程序中,我们使用触摸ID从钥匙链中读取一个秘密

我们发现,当您在上一次读取后立即从钥匙链读取时,如果第一次使用PIN码读取密码,则第二次读取不会返回字符串值。如果用户第一次使用指纹,第二次将显示触摸ID对话框,并且另一次读取成功

下面是一个示例应用程序:

下面是使用KeyChainTouchIderError演示应用程序的一些场景。必须在运行iOS 8且带有触摸id传感器的真实设备上执行这些操作。使用模拟器时,所有场景均按预期工作,因为触摸ID对话框从未显示

场景1(工作)

  • 将价值存储在由 ksecattrace仅在设置此设备时才可访问
  • 从钥匙链中读取, 使用指纹解锁
  • 不要耽搁
  • 从钥匙链读取,使用 要解锁的指纹或PIN
场景2(设备故障):

  • 仅当SSCodes设置此设备时,将值存储在受KSecatacAccessible保护的密钥链中
  • 读取钥匙链,使用PIN解锁
  • 不要耽搁
  • 阅读钥匙链。使用设备时,不会显示触摸ID对话框,并且从钥匙链返回空字符串。但是,在使用模拟器时,可以正确检索存储在钥匙链中的值
场景3(工作):

  • 仅当SSCodes设置此设备时,将值存储在受KSecatacAccessible保护的密钥链中
  • 读取钥匙链,使用PIN解锁
  • 等500毫秒
  • 阅读钥匙链。用户将看到一个对话框,在使用指纹或PIN后,用户可以再次读取该秘密
演示应用程序中可用的按钮

保存-仅当SSCodes设置此设备时,将密钥写入受KSecattraccessible保护的密钥链

读取-从钥匙链读取秘密

移除-从钥匙链中移除秘密

快速-用于执行场景1和场景2

带延迟的快速-用于执行场景3

评论

我们最好的猜测是,PIN解锁的动画(向下滑动,持续约250ms)会干扰第二次读取。使用指纹解锁时没有动画。不过这只是一个猜测

关于场景2为什么会出现问题,有什么想法吗?是否需要做些什么来等待钥匙链再次“可读”