ios 清空全部key chain以及userDefaults相關
阿新 • • 發佈:2022-01-07
清空相關資訊,再構造唯一id等可做一鍵新機
清空全部key chain
+ (void)clearKeyChain { NSMutableDictionary *query = [NSMutableDictionary dictionaryWithObjectsAndKeys: (__bridge id)kCFBooleanTrue, (__bridge id)kSecReturnAttributes, (__bridge id)kSecMatchLimitAll, (__bridge id)kSecMatchLimit, nil]; NSArray *secItemClasses = [NSArray arrayWithObjects: (__bridge id)kSecClassGenericPassword, (__bridge id)kSecClassInternetPassword, (__bridge id)kSecClassCertificate, (__bridge id)kSecClassKey, (__bridge id)kSecClassIdentity, nil]; for (id secItemClass in secItemClasses) { NSLog(@"secItemClass %@",secItemClass); [query setObject:secItemClass forKey:(__bridge id)kSecClass]; CFTypeRef result = NULL; SecItemCopyMatching((__bridge CFDictionaryRef)query, &result); if (result != NULL) CFRelease(result); NSDictionary *spec = @{(__bridge id)kSecClass: secItemClass}; SecItemDelete((__bridge CFDictionaryRef)spec); } }
清空userDefaults 使用者相關
+ (void)clearUserDefaults { NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier]; [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain]; [[NSUserDefaults standardUserDefaults] synchronize]; NSString *path = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject; path本文章僅供學習參考,如有版權侵犯,請聯絡作者修改,轉載請註明出處!= [path stringByAppendingPathComponent:@"Preferences"]; NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil]; for (NSString * filename in fileList) { NSString *filepath = [path stringByAppendingPathComponent:filename]; BOOL isDir= NO; [[NSFileManager defaultManager] fileExistsAtPath:filepath isDirectory:(&isDir)]; if (!isDir && [filename hasSuffix:@".plist"] && (![filename isEqualToString:appDomain])) { NSString *suitename = [filename stringByDeletingPathExtension]; NSUserDefaults *userDefaults = [[NSUserDefaults alloc] initWithSuiteName:suitename]; [userDefaults removePersistentDomainForName:suitename]; [[NSFileManager defaultManager] removeItemAtPath:filepath error:nil]; } } }