1. 程式人生 > 其它 >ios 清空全部key chain以及userDefaults相關

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]; } } }
本文章僅供學習參考,如有版權侵犯,請聯絡作者修改,轉載請註明出處!