如何访问iOS上由PhoneGap创build的HTML5本地存储?

我们正在从PhoneGap过渡到真正的本机iPhone应用程序,我们需要访问存储在由PhoneGap创build的HTML5本地存储中的用户数据。 我们如何获得这些数据,以便我们可以为用户创build一个无缝的更新过程?

我还没有尝试过Mattias的方式,但是我直接访问了webkit本地存储数据库,然后导入了包含在iPhone SDK中的sqlite3库以提取我需要的值。 这就是你如何访问由PhoneGap创build的localstorage:

NSString *databaseName = @"file__0.localstorage"; //Get Library path NSArray *libraryPaths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSString *libraryDir = [libraryPaths objectAtIndex:0]; NSString *databasePath = [libraryDir stringByAppendingPathComponent:@"WebKit/LocalStorage/"]; NSString *databaseFile = [databasePath stringByAppendingPathComponent:databaseName]; BOOL webkitDb; NSFileManager *fileManager = [NSFileManager defaultManager]; webkitDb = [fileManager fileExistsAtPath:databaseFile]; if (webkitDb) { MMWebKitLocalStorageController* wkc = [[MMWebKitLocalStorageController alloc] init]; [wkc updateUserFromLocalStorage:databaseFile]; } 

我不认为目前有任何本地API访问本地存储,但你可以尝试创build一个Web视图与一些JavaScript转储本地存储,即JSON。

创build一个具有实现webViewDidFinishLoad:方法的UIWebViewDelegate委托的UIWebViewDelegate ,并使用stringByEvaluatingJavaScriptFromString:方法触发转储。

就像这样,首先要在网页视图中加载页面:

 <html> <head> <script> // download and insert JSON-js here // https://github.com/douglascrockford/JSON-js function dumpLocalStorageToJSON() { d = {}; for(i = 0; i < localStorage.length; i++) d[localStorage.key(i)] = localStorage.getItem(localStorage.key(i)); return JSON.stringify(d); } </script> </head> </html> 

然后完成加载委托方法:

 - (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *localStorageAsJSON = [webView stringByEvaluatingJavaScriptFromString:@"dumpLocalStorageToJSON();"]; // parse JSON and do something useful }