ios 清空全部key chain以及userDefaults相关
清空相关信息,再构造唯一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]; } } }
本文章仅供学习参考,如有版权侵犯,请联系作者修改,转载请注明出处!
浙公网安备 33010602011771号