2014-09-02 24 views
14

Tôi đang phát triển một ứng dụng lai (chỉ dành cho iOS và Android) bằng PhoneGap/Cordova và muốn sử dụng HTML5 localStorage để lưu trữ nội dung để truy cập ngoại tuyến.iOS 7 webview và localStorage persistence

http://caniuse.com/#search=localStorage nói - "Trong iOS 5 & 6 dữ liệu cục bộ được lưu trữ ở một vị trí đôi khi có thể bị xóa bởi hệ điều hành".

  1. Tình huống với webview iOS 7 (và sau này), trong trường hợp nào localStorage sẽ tồn tại hoặc bị xóa (bởi hệ điều hành hoặc người dùng)?

  2. Bản cập nhật cho ứng dụng có rõ ràng localStorage không?

  3. Điều gì về việc người dùng xóa lịch sử trình duyệt trên Safari - điều đó cũng áp dụng cho chế độ xem web?

  4. Tôi có cần phải lo lắng (hoặc thậm chí tôi có thể kiểm soát được) trong đó trên hệ thống tệp, localStorage được tạo. Tôi hiểu nó không nên được sao lưu trên iCloud.


tôi nhận được một thiết bị (iPad) và kiểm tra hệ thống tập tin tôi thấy rằng tập tin localStorage là trong ~/Library/Caches trong sandbox ứng dụng, xem hình dưới đây.

Từ các tài liệu:

https://developer.apple.com/icloud/documentation/data-storage/index.html dữ liệu mà có thể được tải xuống lại hoặc tái sinh nên được lưu trữ trong thư mục/Library/Caches. Ví dụ về các tệp bạn nên đưa vào thư mục Caches bao gồm tệp bộ nhớ cache của cơ sở dữ liệu và nội dung có thể tải xuống, chẳng hạn như các tệp tạp chí, báo và ứng dụng bản đồ được sử dụng.

Tôi chỉ đơn giản là đang làm điều này để thiết lập dữ liệu:

localStorage.setItem('foo','this is the FOO value'); 
    localStorage.setItem('bar','and this is the BAR value'); 

enter image description here

+0

Có thể trùng lặp. xem http://stackoverflow.com/a/39097517/6237235 – Iceman

Trả lời

2

Nếu bạn đang sử dụng cordova, vấn đề đã được cố định thời gian dài trước đây, ngay cả đối với iOS 5 và iOS 6. Bạn shouldn đừng lo lắng nếu bạn đang sử dụng phiên bản mới nhất của cordova.

+1

Xin chào, cảm ơn bạn - bạn có liên kết đến thông tin thêm không? Tôi có thể chỉ làm localStorage.setItem ('foo', 'FOO value'); hoặc tôi cần một plugin vv? – KevInSol

+0

Tôi không có liên kết, tôi chỉ theo dõi phát triển cordova và đọc từ lâu. nó phải nằm trên blog cordova hoặc phonegap, nơi chúng xuất bản mỗi phiên bản thay đổi, nhưng tôi không nhớ phiên bản này đã được sửa ở đâu. Hoặc bạn có thể thử tìm kiếm trên cordova jira – jcesarmobile

+1

Tôi không có liên kết, nhưng tôi * đã xem qua mã nhiều lần và tôi có thể xác minh rằng sự cố này đã được khắc phục (và đã lâu rồi). Sử dụng localStorage trong niềm vui của bạn. (Nếu bạn đang nhắm mục tiêu WP7/8, tôi sẽ ở lại với 'setItem', nhưng nếu không bạn có thể tham khảo nó bằng cách sử dụng' localStorage.foo = "FOO value" '). Hãy ghi nhớ có một giới hạn kích thước ở đây, do đó, không đi * quá * điên. Ngoài ra, xóa bộ nhớ cache của Mobile Safari sẽ không ảnh hưởng đến ứng dụng của bạn (sandbox) và nó cũng sẽ tiếp tục tồn tại trên một bản cập nhật (nhưng * không * xóa + cài đặt lại). –

3

Nếu bạn vẫn gặp sự cố với Cordova-iOS v4, hãy thử plugin NativeStorage. https://www.npmjs.com/package/cordova-plugin-nativestorage.

Nó đã đặt, đặt và nhận các chức năng triển khai các khả năng nền tảng như tùy chọn chia sẻ Android và iOS NSUserDefaults giúp lưu trữ dữ liệu an toàn như được cho phép.

cordova plugin add cordova-plugin-nativestorage 

NativeStorage.putObject("reference_to_value",<object>, <success-callback>, <error-callback>); 

NativeStorage.getObject("reference_to_value",<success-callback>, <error-callback>); 
0

Như những người khác đã đề cập tôi nghĩ rằng đặt cược tốt nhất của bạn là sử dụng các plugin NativeStorage:

https://www.npmjs.com/package/cordova-plugin-nativestorage

Để trả lời câu hỏi của bạn:

  1. Dữ liệu localStorage được giữ trong một thư mục bộ nhớ cache trong hệ thống tệp và bộ nhớ cache được hệ điều hành làm sạch thường xuyên (ví dụ: khi thiết bị ở mức thấp trên dung lượng đĩa).
  2. Không, không tự động (nhưng có thể vì lý do trong 1, ở trên).
  3. Không, chúng riêng biệt.
  4. Không, không phải là tôi biết.
Các vấn đề liên quan