Saving PHP SESSION Cookie en Cordova iOS 6+

Estoy actualizando una aplicación Cordova iOS 5.1.1 (escrito todavía en jQuery) a la plataforma iOS 6.1.1 ya que Apple rechaza aplicaciones que todavía utilizan UIWebView. Encuentro la migración bastante difícil ya que mi aplicación está utilizando la carga de archivos JS a través de Ajax, almacenando datos en localStorage y almacenando cookies de sesión de PHP y todos estos datos deben ser accesibles ahora también.

He añadido el plugin de cordova-plugin-migrate-localstorage para migrar los datos de almacenamiento local que UIWebView estaba utilizando y funciona bien. Sin embargo, no puedo encontrar / implementar una solución cómo guardar las cookies, especialmente PHP Session ID ya que es obligatorio que no cambie para cada solicitud, ya que PHP backend devuelve los datos dependiendo de los datos del SESSION.

He probado la mayoría de los plugins que se mencionaron, por ejemplo cordova-plugin-cookie-sync, cordova-plugin-cookie-inject etc. pero ninguno parece trabajar y almacenar el ID de sesión.

Desafortunadamente sólo puedo probar la aplicación en el simulador ya que ninguno de mis dispositivos tiene i así que también me pregunto si hay una solución que no exige tener un dispositivo físico?

¿Estoy haciendo un error y debería permanecer en la plataforma iOS 5.1.1 y añadir wkWebView? Traté de jugar un poco y simplemente agregar el wkWebView Engine a él, pero no parece saber cómo cargar archivos locales de JS.

Pregunta hecha hace 3 años, 5 meses, 1 días - Por pixelpioneerbbb5


2 Respuestas:

  • Para almacenar las cookies de sesión de PHP en una aplicación Cordova iOS 6+ puedes utilizar el plugin cordova-plugin-wkwebview-file-xhr que te permitirá cargar archivos locales de JavaScript en wkWebView.

    Para usar este plugin, primero debes instalarlo en tu proyecto Cordova. Puedes hacerlo ejecutando el siguiente comando en la terminal en la carpeta de tu proyecto Cordova:

    
    cordova plugin add cordova-plugin-wkwebview-file-xhr
    

    Una vez que hayas instalado el plugin, puedes realizar los siguientes pasos para guardar las cookies de sesión:

    • En tu archivo `config.xml`, asegúrate de añadir el siguiente permiso para permitir el uso de cookies:
    xml
    
        
            NSAllowsArbitraryLoads
            
        
    
    
    • Luego, puedes usar JavaScript para enviar las cookies a WKWebView. Un ejemplo de cómo puedes hacerlo es el siguiente:
    javascript
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "https://tudominio.com/tupagina.php", true);
    xhr.withCredentials = true; // Este es el parámetro clave para enviar las cookies
    xhr.send();
    

    Con estos pasos deberías poder almacenar las cookies de sesión de PHP en tu aplicación Cordova iOS 6+ de forma adecuada. No olvides probar la aplicación en un dispositivo físico si es posible para verificar su funcionamiento correcto. ¡Espero que esta información te sea de ayuda!

    Respondida el Dec 19, 2020 a las 13:42 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Migración de SESSION en Cordova 6+

    Almacenamiento local

    Utiliza el complemento cordova-plugin-migrate-localstorage para migrar el almacenamiento local.

    Cookies

    Las cookies no se migran automáticamente. Utiliza el complemento cordova-plugin-cookie para administrar las cookies. Almacena el ID de SESSION en una cookie segura (con atributos secure y httponly).

    Prueba sin dispositivo físico

    Utiliza un emulador de iOS o Android que admita wkWebView. Para iOS, instala el complemento cordova-plugin-ios-wkwebview-engine para habilitar wkWebView.

    Recomendaciones

    Migra a Cordova 6+ y utiliza los complementos mencionados para administrar el almacenamiento local y las cookies. Almacena el ID de SESSION en una cookie segura. Utiliza un emulador que admita wkWebView para las pruebas.

    WkWebView en Cordova 5.1.1*

    Agregar wkWebView a Cordova 5.1.1 es complejo y no se recomienda. Es mejor migrar a Cordova 6+ donde wkWebView es compatible de forma predeterminada.

    Respondida el Dec 19, 2020 a las 13:43 - por Gemini

    Votos positivos: 0 | Votos negativos: 0