how to remove html5 local storage of an iOS app using UIWebview

后端 未结 2 1862
北荒
北荒 2020-12-17 06:20

I have an app that uses UIWebview which is used to browser different sites/urls. I am in need of an option \"clear client data\" similar to iOS mobile safari \"Remove All we

相关标签:
2条回答
  • 2020-12-17 06:36

    Note, that, if you’re using PhoneGap, you’ll also have to clear their internal backup of the localstorage cache:

    //Remove the localstorage db
    NSString *path = [[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"Backups"] stringByAppendingPathComponent:@"localstorage.appdata.db"];
    [[NSFileManager defaultManager] removeItemAtPath:path error:nil];
    
    //Also remove the cached versions
    path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
    for (NSString *string in [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil]) {
        if ([[string pathExtension] isEqualToString:@"localstorage"]) {
            [[NSFileManager defaultManager] removeItemAtPath:path error:nil];
        }
    }
    
    0 讨论(0)
  • 2020-12-17 06:52

    You should be able to do it cleaning the content of the Caches directory of your app:

    EDIT: Update code as suggested by @RaphaelSchweikert because of wrong error management.

    // first, remove the cookies. 
    NSHTTPCookie *cookie;
    NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (cookie in [storage cookies]) {
        [storage deleteCookie:cookie];
    }
    
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
    NSArray *array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
    for (NSString *string in array) {
        NSLog(@"Removing %@", [path stringByAppendingPathComponent:string]);
    if ([[string pathExtension] isEqualToString:@"localstorage"])
        [[NSFileManager defaultManager] removeItemAtPath:[path stringByAppendingPathComponent:string] error:nil];
    }
    

    Inside that folder on my simulator I see many .localstorage files ;-) Try and let me know

    0 讨论(0)
提交回复
热议问题