我们正在从PhoneGap过渡到真正的本机iPhone应用程序,我们需要访问存储在由PhoneGap创建的HTML5本地存储中的用户数据。我们如何获得这些数据,以便我们可以为用户创建无缝更新过程?如何访问iOS上由PhoneGap创建的HTML5本地存储?
5
A
回答
4
我还没有尝试过的Mattias'的方式,但我只是直接访问webkit本地存储数据库,然后导入iPhone SDK附带的sqlite3库以提取我需要的值。这是您访问由PhoneGap创建的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];
}
3
我不认为目前有任何本地API用于访问本地存储,但您可以尝试使用一些将本地存储转储为JSON的JavaScript创建Web视图。
创建UIWebView
具有UIWebViewDelegate
委托,它实现了webViewDidFinishLoad:
方法和使用方法stringByEvaluatingJavaScriptFromString:
触发转储。
事情是这样的,第一页在Web视图加载:
<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
}
相关问题
- 1. Phonegap本地存储
- 2. html5本地存储
- 3. 如何在浏览器中存储由jQuery创建的本地存储元素?
- 4. html5 SD卡上的本地存储
- 5. 本地存储与PhoneGap
- 6. 如何访问本地PC上的仿真Azure存储
- 7. 从Rails应用程序访问HTML5本地存储
- 8. HTML5:使用本地存储
- 9. HTML5本地存储排序
- 10. 使用HTML5本地存储
- 11. HTML5本地存储和Chrome
- 12. 如何访问本地存储数据或将本地存储数据发送到节点/快速路由
- 13. HTML5本地存储 - 创建并写入json文件?
- 14. 如何在Ubuntu14上为HDP安装创建本地存储库?
- 15. 访问由其他用户创建的S3存储桶
- 16. 带有PhoneGap的iOS 6中的持久存储(WebSQL和本地存储)
- 17. 如何使用html5本地存储创建自动完成论坛?
- 18. 由虚拟框中的netbeans创建的访问本地主机
- 19. 任何HTML5本地存储包装?
- 20. 如何访问由$ HTTP和HTML5的FileReader
- 21. 如何访问存储在iOS设备上的音乐文件?
- 22. 无法访问本地存储在离子ios 10
- 23. iOS今日扩展可以访问本地存储吗?
- 24. 如何创建GAE数据存储的本地副本?
- 25. 在设备的本地存储上创建Android保存文件?
- 26. HTML5本地存储来保存笔记
- 27. 如何访问Android上的SMS存储?
- 28. Firefox本地存储外部访问
- 29. 访问线程本地存储
- 30. 访问javascript和C#本地存储,asp.net
不错。你知道这是否由苹果公司记录吗? – 2012-02-01 00:13:33
没有。我从iExplorer中打开PhoneGap应用程序并在myApp/WebKit/LocalStorage/file__0.localstorage中找到sqlite文件,我将更新我的答案以包含文件名。 – 2012-02-01 15:02:27
仅供参考,但5.1,localStorage的位置更改为在Library/Caches下生存。 – 2012-03-09 03:46:41