2012-01-30 12 views
5

हम फोनगैप से वास्तव में देशी आईफोन ऐप में स्थानांतरित हो रहे हैं और हमें फोनगैप द्वारा बनाए गए HTML5 स्थानीय स्टोरेज में संग्रहीत उपयोगकर्ता डेटा तक पहुंचने की आवश्यकता है। हम उस डेटा पर कैसे प्राप्त करते हैं ताकि हम उपयोगकर्ता के लिए एक निर्बाध अद्यतन प्रक्रिया बना सकें?मैं आईओएस पर फोनगैप द्वारा बनाए गए एचटीएमएल 5 स्थानीय स्टोरेज का उपयोग कैसे करूं?

उत्तर

4

मैं मैटिस 'जिस तरह से, लेकिन मैं प्रयास नहीं किया है बस वेबकिट स्थानीय स्टोरेज डेटाबेस को सीधे एक्सेस किया और फिर आवश्यक मूल्यों को निकालने के लिए आईफोन एसडीके के साथ शामिल sqlite3 lib आयात किया। इस प्रकार आप फोनगैप द्वारा बनाए गए स्थानीय स्टोरेज तक पहुंचते हैं:

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]; 
} 
+0

नाइस। क्या आपको पता है कि यह ऐप्पल द्वारा कहीं दस्तावेज किया गया है? –

+0

नहीं। मुझे iExplorer में अपना फोनगैप ऐप खोलने और myApp/WebKit/LocalStorage/file__0.localstorage में एक स्क्लाइट फ़ाइल ढूंढने का मार्ग मिला है, मैं फ़ाइल नाम शामिल करने के लिए अपना उत्तर अपडेट करूंगा। –

+1

बस एफवाईआई, लेकिन 5.1 के साथ, स्थानीय स्टोरेज का स्थान लाइब्रेरी/कैश के तहत रहने के लिए बदल जाता है। –

3

मुझे नहीं लगता कि वर्तमान में स्थानीय संग्रहण तक पहुंचने के लिए कोई मूल एपीआई है लेकिन आप कुछ जावास्क्रिप्ट के साथ एक वेब दृश्य बनाने का प्रयास कर सकते हैं जो स्थानीय स्टोरेज को यानी JSON को डंप करता है।

एक UIWebView एक UIWebViewDelegate प्रतिनिधि कि webViewDidFinishLoad: विधि को लागू करता है और एक डंप को गति प्रदान करने 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 
} 
संबंधित मुद्दे