2014-09-02 11 views
14

Zajmuję się tworzeniem aplikacji hybrydowej (tylko dla systemów iOS i Android) przy użyciu aplikacji PhoneGap/Cordova i chcę używać HTML5 localStorage do przechowywania treści do dostępu w trybie offline.Wykonywanie trwałych i trwałych informacji przez przeglądarkę iOS 7

http://caniuse.com/#search=localStorage mówi - "W iOS 5 & 6 danych localStorage jest przechowywanych w miejscu, które może być czasami usuwane przez system operacyjny."

  1. Jaka jest sytuacja z iOS 7 (i później) WebView, w jakich przypadkach będzie localStorage utrzymują, lub uzyskać wyczyszczone (przez system operacyjny lub użytkownik)?

  2. Czy aktualizacja aplikacji wyczyści plik localStorage?

  3. Co dzieje się z opróżnianiem historii przeglądarki przez przeglądarkę Safari - czy dotyczy to również widoku webowego?

  4. Czy muszę się martwić (lub mogę nawet kontrolować), gdzie w systemie plików tworzony jest plik localStorage. Rozumiem, że nie powinno się tworzyć kopii zapasowej w usłudze iCloud.


Dostałem urządzenia (iPad) i sprawdzanie systemu plików widzę, że plik localStorage jest w ~/Library/Caches wewnątrz aplikacji piaskownicy, patrz niżej obraz.

Od docs:

https://developer.apple.com/icloud/documentation/data-storage/index.html Dane, które można pobrać ponownie lub regenerowane powinny być przechowywane w katalogu/Library/buforuje. Przykłady plików, które należy umieścić w katalogu pamięci podręcznej, obejmują pliki pamięci podręcznej bazy danych i materiały do ​​pobrania, takie jak te używane przez czasopisma, gazety i aplikacje map.

ja po prostu robi to, aby ustawić dane:

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

enter image description here

+0

Prawdopodobny duplikat. zajrzyj na http://stackoverflow.com/a/39097517/6237235 – Iceman

Odpowiedz

2

Jeśli używasz Cordova, że ​​problem został rozwiązany dawno temu, nawet dla iOS 5 i iOS 6. Użytkownik powinnam nie martw się, jeśli używasz najnowszej wersji Cordova.

+1

Witam, dziękuję - czy masz link do dalszych informacji? Czy mogę po prostu zrobić localStorage.setItem ("foo", "FOO wartość"); czy potrzebuję wtyczki itp.? – KevInSol

+0

Nie mam linków, po prostu śledzę rozwój cordova i czytam to dawno temu. Powinien być na blogu cordova lub phonegap, gdzie publikują zmiany każdej wersji, ale nie pamiętam wersji, w której to zostało naprawione. Lub możesz spróbować wyszukać na cordova jira – jcesarmobile

+1

Nie mam linku, ale * przeszukałem * kod kilka razy i mogę sprawdzić, czy ten problem został naprawiony (i był przez jakiś czas). Użyj localStorage dla twojej przyjemności. (Jeśli kierujesz się na WP7/8, pozostanę przy 'setItem', ale poza tym możesz odwoływać się do niego używając' localStorage.foo = "FOO value" '). Pamiętajcie, że istnieje tu limit rozmiaru, więc nie idźcie za * zbyt * zwariowani. Ponadto wyczyszczenie pamięci podręcznej Mobile Safari nie wpłynie w ogóle na twoją aplikację (piaskownica), a także będzie trwała przez aktualizację (ale * nie * a usuń + zainstaluj ponownie). –

3

Jeśli nadal napotykasz problem z Cordova-iOS v4, spróbuj użyć wtyczki NativeStorage. https://www.npmjs.com/package/cordova-plugin-nativestorage.

Posiada funkcje ustawiania, wstawiania i pobierania, które implementują funkcje platformy, takie jak preferencje udostępniane w systemie Android, i NSUserDefault systemu iOS, dzięki czemu przechowywanie danych jest tak bezpieczne, jak dozwolone.

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

Jak wspominają inni myślę, że najlepiej jest użyć wtyczki NativeStorage:

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

Aby odpowiedzieć na Twoje pytania:

  1. Dane localStorage jest przechowywana w katalogu pamięci podręcznej w systemie plików, a pamięć podręczna jest często czyszczona przez system operacyjny (na przykład, gdy na urządzeniu jest mało miejsca na dysku).
  2. Nie, nie automatycznie (ale może z przyczyn wymienionych w 1 powyżej).
  3. Nie, są oddzielne.
  4. Nie, niestety nie jestem tego świadomy.
Powiązane problemy