使用touchid 在回调界面 长时间卡主的问题;(reply 的block 在私有队列中进行判断,刷新ui必须在主线程中进行)
解决方案:
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:@"使用touch ID来打开" reply:^(BOOL success, NSError *authenticationError) {
dispatch_async(dispatch_get_main_queue(), ^{
if (success) {
//push
} else {
//弹出输入框
}
});
}];
- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error;
这个方法是验证设备是否可以进行指纹验证.如果不行,可以根据传入的error所获取的code来判断原因.一般失败的情况是没有设置指纹,或者指纹无效. 还有一个情况就是硬件不支持指纹验证功能的,那么在 LAContext *myContext = [[LAContext alloc] init]; 这一步的时候,myContext会是nil. authError也是nil.所以这时候应该增加一个判断myContext是否等于nil.目前的error枚举里面没有硬件支持这项.
一些需要注意的地方(测试环境为xcode6 beta2, iOS beta2)
1. a) 在 iPhone5 上的时候,LAContext *myContext = [[LAContext alloc] init]; 初始化的对象为 nil.
2. b) 在5s 上没有设置指纹密码时, error = -7 (LAErrorTouchIDNotEnrolled)
3. c) 点击 aler 上面的 “输入密码时”,error = -3 (LAErrorUserFallback)
4. d) 点击确认 aler 上面的”取消”时. error = -2 (LAErrorUserCancel)
5. e) 输入错误指纹时.一共有三次机会,三次全部错误后, error = -1 (LAErrorAuthenticationFailed)
6. f) 对LAContext对象操作了 (iOS 系统语言为是英文) myContext.localizedFallbackTitle = @”使用指纹解锁”; myContext.cancelButtonVisible = NO; myContext.fallbackButtonVisible = NO; 返回了 error = -1007 经过反复测试,只要设置了localizedFallbackTitle ,都会产生1007的 error code. 控制 fallbackButtonVisible 的 setter 方法无法隐藏 fallbackbutton.
解决方案:
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:@"使用touch ID来打开" reply:^(BOOL success, NSError *authenticationError) {
dispatch_async(dispatch_get_main_queue(), ^{
if (success) {
//push
} else {
//弹出输入框
}
});
}];
- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error;
这个方法是验证设备是否可以进行指纹验证.如果不行,可以根据传入的error所获取的code来判断原因.一般失败的情况是没有设置指纹,或者指纹无效. 还有一个情况就是硬件不支持指纹验证功能的,那么在 LAContext *myContext = [[LAContext alloc] init]; 这一步的时候,myContext会是nil. authError也是nil.所以这时候应该增加一个判断myContext是否等于nil.目前的error枚举里面没有硬件支持这项.
一些需要注意的地方(测试环境为xcode6 beta2, iOS beta2)
1. a) 在 iPhone5 上的时候,LAContext *myContext = [[LAContext alloc] init]; 初始化的对象为 nil.
2. b) 在5s 上没有设置指纹密码时, error = -7 (LAErrorTouchIDNotEnrolled)
3. c) 点击 aler 上面的 “输入密码时”,error = -3 (LAErrorUserFallback)
4. d) 点击确认 aler 上面的”取消”时. error = -2 (LAErrorUserCancel)
5. e) 输入错误指纹时.一共有三次机会,三次全部错误后, error = -1 (LAErrorAuthenticationFailed)
6. f) 对LAContext对象操作了 (iOS 系统语言为是英文) myContext.localizedFallbackTitle = @”使用指纹解锁”; myContext.cancelButtonVisible = NO; myContext.fallbackButtonVisible = NO; 返回了 error = -1007 经过反复测试,只要设置了localizedFallbackTitle ,都会产生1007的 error code. 控制 fallbackButtonVisible 的 setter 方法无法隐藏 fallbackbutton.