[webkit-help] How to get persistent html5 localStorage and webApplicationCache in Xcode?

Conti ewconti at gmail.com
Mon Sep 26 08:56:41 PDT 2011


I abandoned my desire to use websqldb - it just does not want to 
co-operate at all and I was unable to get any help from apple, 
stackoverflow, irc or webkit-help so I gave up.

I have localStorage and offline application cache working, and they are 
persistent to some degree - the data does persist while the app is 
running and even after the app is exited the localstorage data is 
retained on disk, but the problem is when the app is launched again it 
erases everything on disk and starts off blank. I need the offline data 
and localstorage data to persist long-term - across application launches 
and system reboots.

Here is some example code, hopefully someone can spare a few minutes to 
help me this time.

Xcode version is 4.2b7 this is an OS X app NOT iOS

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{

     // Define some preferences
     WebPreferences *prefs = [webView preferences];
     [prefs setCacheModel:WebCacheModelPrimaryWebBrowser];
     [prefs setJavaEnabled:NO];
     [prefs setJavaScriptEnabled:YES];
     [prefs setJavaScriptCanOpenWindowsAutomatically:NO];
     [prefs setPlugInsEnabled:NO];
     [prefs setPrivateBrowsingEnabled:NO];
     [prefs setDefaultFontSize:16];
     [prefs setDefaultFixedFontSize:13];

     // Define some private preferences

     // Enable developer extras (web inspector)
     [prefs setDeveloperExtrasEnabled:YES];

     // Define application cache quota
     static const unsigned long long defaultTotalQuota = 10 * 1024 * 
1024; // 10MB
     static const unsigned long long defaultOriginQuota = 5 * 1024 * 
1024; // 5MB
     [prefs setApplicationCacheTotalQuota:defaultTotalQuota];
     [prefs setApplicationCacheDefaultOriginQuota:defaultOriginQuota];

     // Enable offline web application cache
     [prefs setOfflineWebApplicationCacheEnabled:YES];

     // Enable localStorage
     [prefs _setLocalStorageDatabasePath:@"~/Library/Application 
Support/My webView/LocalStorage/"];
     [prefs setLocalStorageEnabled:YES];


     // Load WebView Content

     //For remote connection
     NSString *url = @"http://someurl/somepath";
     NSURL *urlRequest = [NSURL URLWithString:url];

     //Request timeout
     NSInteger requestTimeout = 10;

     //Load request
     [[webView mainFrame] loadRequest:[NSURLRequest 
requestWithURL:urlRequest 
cachePolicy:NSURLRequestReturnCacheDataElseLoad 
timeoutInterval:requestTimeout]];

}

Thanks in advance,

-Conti


More information about the webkit-help mailing list