2016-10-04 7 views
8

kontekstu:

  • Mamy aplikacji Cordova ładowania strony internetowej online. (My w zasadzie używać Cordova do wtyczek)
  • Przechowujemy cookie korzystając $cookies.put()
  • To działa poprawnie w przeglądarkach desktopowych i na iOS (jak długo używamy ważności na cookie)

Problem:

W systemie Android, jeśli użytkownik zabije aplikację w 30 sekund po tym, jak $cookies.put() zostanie wywołany, ciasteczko zniknie przy następnym uruchomieniu.

Jeśli użytkownik zaczeka dłużej niż 30 sekund (jak 35 sekund lub dłużej), wszystko działa poprawnie.

Pytanie:

Jak możemy zmusić cookie być zapisany natychmiast (lub przynajmniej znacznie szybciej)?

Uwagi:

  • Dodawanie opcji na cookie niczego nie zmienia
  • Próbowałem wymienić przeglądarkę systemową o przejściu przy użyciu cordova-plugin-crosswalk-webview ale to nie to samo
+1

Czy próbowałeś już lokalnego magazynu? Domyślne opcje zabezpieczeń w Safari mogą powodować problem z plikami cookie dla niektórych użytkowników. –

+1

Problem dotyczy tylko systemu Android. – jrobichaud

+1

Ale dlaczego używasz ciasteczek? –

Odpowiedz

2

Miałem ten sam problem i zrobiłem małą wtyczkę (nadal trwa), aby to naprawić.

Ujawnia metodę flush, która zastosuje modyfikacje plików cookie (wstaw i usuń) do trwałej pamięci.

link to cordova-plugin-cookie-manager

Zapraszam do tego przyczynić.

+0

Sprawdzone działanie, dzięki! :RE – GabLeRoux

1

CookieManager projektowanie w systemie Android utrudnia wdrożenie. The webview i cookiemanager, które zawierają własne bazy danych in_memory i są zsynchronizowane ze sobą, dlatego nie ma potrzeby synchronizowania dwóch z nich.

Urządzenie removeSessionCookie nie zapewnia wywołania zwrotnego ani żadnego sposobu jego zakończenia, a metoda ta została zaimplementowana w klasycznych wersjach .

Oto kilka rozwiązań, w których można synchronizować pomiędzy HttpUrlCookieManager i android webkit cookie manager

Sync up link 1

Inną rzeczą, aby pamiętać, tutaj jest podczas korzystania $cookie.put() definiuje cookies należy przesłać wraz z resztą nagłówki HTTP do klienta, ale jeśli używasz third party api's, aby uzyskać cookies, to może już nie zawierać plików cookie z poziomu client, co może skutkować niepożądanymi efektami ubocznymi.

można zapoznać się tutaj odpowiedni link jako sugerowane przez autora z tego postu - author' post i tu jest link do protokołów mają być wykorzystywane przy definiowaniu cookies link here

Oto kolejny link, który natknąłem który może pomóc trochę

link here

lub korzystać z tego samego repozytorium/bazę danych webview a HttpUrlConnection można stworzyć swój własny program obsługi wprowadzone w followin g wątek stosu Stack thread

Mam nadzieję, że ci to pomoże.

+1

Moim najlepszym przypuszczeniem jest zaimplementowanie wtyczki, która wywołuje 'CookieManager.flush()', ponieważ 'sync()' jest przestarzałe. https://developer.android.com/reference/android/webkit/CookieManager.html#flush() – jrobichaud

Powiązane problemy