私のアプリでタッチIDアクセスを統合しようとしています。私は正常にそれを統合しました。ここではそのコードです:私は、iPhoneの設定からすべての指紋を削除すると、今チェックする方法iOSのTouch IDに指紋を追加しない
dispatch_queue_t highPriorityQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.75 * NSEC_PER_SEC), highPriorityQueue, ^{
dispatch_async(dispatch_get_main_queue(), ^{
LAContext *context = [[LAContext alloc] init];
isTouchExists = [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nil];
if (isTouchExists) {
NSString * keychainItemIdentifier;
NSString * keychainItemServiceName;
keychainItemIdentifier = @"fingerprintKeychainEntry";
keychainItemServiceName = [[NSBundle mainBundle] bundleIdentifier];
NSData * pwData = [@"the password itself does not matter" dataUsingEncoding:NSUTF8StringEncoding];
NSMutableDictionary * attributes = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
(__bridge id)(kSecClassGenericPassword), kSecClass,
keychainItemIdentifier, kSecAttrAccount,
keychainItemServiceName, kSecAttrService, nil];
CFErrorRef accessControlError = NULL;
SecAccessControlRef accessControlRef = SecAccessControlCreateWithFlags(
kCFAllocatorDefault,
kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
kSecAccessControlUserPresence,
&accessControlError);
if (accessControlRef == NULL || accessControlError != NULL)
{
NSLog(@"Cannot create SecAccessControlRef to store a password with identifier “%@” in the key chain: %@.", keychainItemIdentifier, accessControlError);
}
attributes[(__bridge id)kSecAttrAccessControl] = (__bridge id)accessControlRef;
attributes[(__bridge id)kSecUseNoAuthenticationUI] = @YES;
attributes[(__bridge id)kSecValueData] = pwData;
CFTypeRef result;
OSStatus osStatus = SecItemAdd((__bridge CFDictionaryRef)attributes, &result);
if (osStatus != noErr)
{
NSError * error = [[NSError alloc] initWithDomain:NSOSStatusErrorDomain code:osStatus userInfo:nil];
NSLog(@"Adding generic password with identifier “%@” to keychain failed with OSError %d: %@.", keychainItemIdentifier, (int)osStatus, error);
}
//other my code for success
}
});
});
、このコードは動作し、パスコードを要求します。だから私の質問は:
どのようにタッチIDのために追加された指紋がないことを知ることができますか?
アプリのセキュリティのためのパスコード画面を既に構築しているため、iOSデバイスのパスコード画面を表示したくありません。それで、タッチIDアクセスのために少なくとも1つの指紋があるデバイスをチェックするオプションはありますか?
ありがとうございます。
======== EDIT 1 ===========
それはまた、私の側に取り組んでいます。問題は、Touch IDを尋ねるたびにチェックする必要があることです。 viewWillAppear
またはapplicationDidBecomeActive
のステータスを取得する必要があります。アプリでタッチIDアクセスを使用するたびに、フィンガーランタイムを削除するため、コードに反映されない可能性があります。毎回フェッチする必要があります。
は、[この]に複製する可能性があります(https://stackoverflow.com/questions/38790185/how-to-find-finger-print-touch- id-count) – ovo