我們正在從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. PhoneGap - 本地存儲
- 3. 如何刪除由Cloudant Synch創建的本地數據存儲
- 4. 本地存儲HTML5
- 5. html5本地存儲
- 6. 如何使用phonegap(HTML5/Javascript)在Android上播放本地存儲的mp4視頻?
- 7. 如何在瀏覽器中存儲由jQuery創建的本地存儲元素?
- 8. 如何從PhoneGap的外部存儲訪問地圖圖塊?
- 9. html5 SD卡上的本地存儲
- 10. 如何創建本地存儲庫並上傳到GitHub上的存儲庫?
- 11. HTML5中的本地存儲
- 12. 的JavaScript:從訪問本地存儲對象[對象]在HTML5
- 13. 使用Java的HTML5本地存儲訪問
- 14. 如何訪問本地PC上的仿真Azure存儲
- 15. HTML5本地存儲 - 多個removeItem問題
- 16. 使用html5訪問iOS上的本地音樂(特別是iPhone)
- 17. html5 localstorage存儲和訪問
- 18. 本地存儲與PhoneGap
- 19. PhoneGap Userlogin本地存儲
- 20. Phonegap本地存儲undefIned
- 21. 從Rails應用程序訪問HTML5本地存儲
- 22. 從本地android代碼訪問html5存儲
- 23. HTML5本地存儲和Chrome
- 24. HTML5本地存儲錯誤
- 25. 使用HTML5本地存儲
- 26. HTML5本地存儲排序
- 27. 本地存儲使用html5
- 28. HTML5:使用本地存儲
- 29. 訪問存儲在由.map()創建的數組中的值?
- 30. 如何訪問本地存儲數據或將本地存儲數據發送到節點/快速路由
不錯。你知道這是否由蘋果公司記錄嗎? – 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