2012-01-30 23 views
5

Chúng tôi đang chuyển từ PhoneGap sang ứng dụng iPhone thực sự có nguồn gốc và chúng tôi cần truy cập dữ liệu người dùng được lưu trữ trong bộ nhớ cục bộ HTML5 do PhoneGap tạo. Làm cách nào để chúng tôi nhận được dữ liệu đó để chúng tôi có thể tạo quy trình cập nhật liền mạch cho người dùng?Làm cách nào để truy cập bộ nhớ cục bộ HTML5 được tạo bởi PhoneGap trên iOS?

Trả lời

4

Tôi chưa thử cách Mattias' nhưng tôi chỉ truy cập cơ sở dữ liệu lưu trữ cục bộ webkit trực tiếp và sau đó nhập khẩu sqlite3 lib đi kèm với SDK iPhone để trích xuất các giá trị mà tôi cần. Đây là cách bạn truy cập localstorage được tạo bởi PhoneGap:

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

Tốt. Bạn có biết liệu đây có phải là tài liệu của Apple ở đâu đó không? –

+0

Không. Tôi đã nhận được đường dẫn từ việc mở ứng dụng PhoneGap của mình trong iExplorer và tìm một tệp sqlite trong myApp/WebKit/LocalStorage/file__0.localstorage Tôi sẽ cập nhật câu trả lời của mình để bao gồm tên tệp. –

+1

Chỉ cần FYI, nhưng với 5.1, vị trí của các thay đổi localStorage để sống trong Thư viện/Cache. –

3

Tôi không nghĩ rằng hiện tại có bất kỳ API gốc nào để truy cập bộ nhớ cục bộ nhưng bạn có thể thử tạo chế độ xem web với một số JavaScript để lưu trữ cục bộ vào JSON.

Tạo UIWebView có số UIWebViewDelegate ủy quyền thực hiện phương thức webViewDidFinishLoad: và sử dụng phương pháp stringByEvaluatingJavaScriptFromString: để kích hoạt đổ.

Something như thế này, đầu tiên các trang để tải trong giao diện 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> 

Sau đó kết thúc phương pháp tải đại biểu:

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    NSString *localStorageAsJSON = [webView stringByEvaluatingJavaScriptFromString:@"dumpLocalStorageToJSON();"]; 
    // parse JSON and do something useful 
} 
Các vấn đề liên quan