'$ cookies.put ()' benötigt 30 Sekunden, um den Cookie auf der Festplatte unter Android zu speichern

8

Kontext:

  • Wir haben eine cordova-Anwendung, die eine Online-Website lädt. (Wir verwenden grundsätzlich cordova für die Plugins)
  • Wir speichern einen Cookie mit $cookies.put()
  • Es funktioniert gut in Desktop - Browsern und auf iOS (solange wir die Verfallszeit auf der Cookie)

Problem:

Bei Android, wenn der Benutzer die Anwendung 30 Sekunden nach dem Aufruf von $cookies.put() beendet, wird der Cookie beim nächsten Neustart gelöscht.

Wenn der Benutzer mehr als 30 Sekunden (35 Sekunden oder länger) wartet, funktioniert alles.

Frage:

Wie können wir die sofortige Speicherung des Cookies erzwingen (oder zumindest viel schneller)?

Hinweise:

  • Das Hinzufügen von Optionen auf dem Cookie ändert nichts
  • Ich habe versucht, den Systembrowser durch einen Zebrastreifen zu ersetzen, indem ich cordova-plugin-crosswalk-webview verwendete aber es macht das gleiche
jrobichaud 04.10.2016, 00:49
quelle

2 Antworten

2

Ich hatte das gleiche Problem und habe ein kleines Plugin (noch in Arbeit) gemacht, um das zu beheben.

Es stellt die flush-Methode zur Verfügung, die Ihre Cookie-Änderungen (put und remove) auf den persistenten Speicher anwendet.

Link zum cordova-plugin-cookie-manager

Fühlen Sie sich frei, etwas beizutragen.

    
LeBodro 07.12.2016, 15:11
quelle
1

Der CookieManager -Design im Android macht es schwierig zu implementieren. Die webview und die cookiemanager , die ihre eigenen in_memory Datenbanken enthalten und miteinander synchronisiert sind, müssen daher nicht synchronisiert werden.

Die removeSessionCookie bietet keinen Callback oder irgendeinen Weg um sie abzuschließen und da diese Methode in den WebView classic Versionen implementiert wurde.

Hier sind einige Lösungen, mit denen Sie zwischen HttpUrlCookieManager und android webkit cookie manager

synchronisieren können

Link 1 synchronisieren

Eine andere Sache, die hier zu beachten ist, ist, wenn Sie $cookie.put() verwenden, definiert cookies zusammen mit den restlichen HTTP-Headern zum Client, aber wenn Sie third party api's verwenden, um cookies it zu erhalten enthält möglicherweise keine Cookies mehr nur von client , was zu unerwünschten Nebenwirkungen führen kann.

Sie können auf den Link verweisen, wie vom Autor zu diesem Post vorgeschlagen - Autorpost und hier ist der Link für die Protokolle, die beim Definieren der Cookies verwendet werden Link hier

Hier ist ein weiterer Link, über den ich gestolpert bin, der vielleicht ein wenig helfen kann

Link hier

oder um dasselbe Repository / die gleiche Datenbank von webview und HttpUrlConnection zu verwenden, können Sie Ihren eigenen Handler erstellen, wie er im folgenden Stack-Thread implementiert ist: Stack-Thread

Ich hoffe, es kann Ihnen ein wenig helfen.

    
Pritish Vaidya 14.10.2016 16:19
quelle

Tags und Links