Tengo una aplicación web híbrida que usa Objective C y Javascript.
El código javascript activa una llamada a wkwebkit en iOS que extrae una entrada de archivo zip (imagen) utilizando el paquete ZipZap.
Los datos de la imagen en el archivo zip se representan como una mancha y luego se muestran en la pantalla.
El código para extraer una entrada de archivo zip en un blob (binario -> base64 ascii -> binario -> blob) utiliza los siguientes pasos:
La razón por la que estoy usando la conversión base64 es para crear una cadena que podría enviarse desde Objective C al javascript.
El código se ejecuta en un bucle en la lista de entradas zip.
Funciona bien en las entradas de la lista, pero en algún momento recibo un mensaje de error de atob(): "carácter no válido para base64".
En este estado, el valor de la cadena ASCII base64 codificada muestra "(nulo)".
Desde este punto, todas las entradas del archivo zip devuelven el mismo error y la cadena ASCII base64 codificada muestra "(nulo)".
Entonces, la única forma de recuperarse es recargar el programa que reinicializa WKWebView.
Cuando ejecuto una versión pura de la aplicación web en un dispositivo iOS (por ejemplo, no híbrido, a través del navegador, por ejemplo, safari), el programa también falla después de un tiempo con un error similar (el búfer de blob muestra "nulo"), así que no No creo que esto sea un problema en el lado del código iOS Objective C.
Como referencia, el programa funciona bien en otros sistemas operativos, por ejemplo, aplicación híbrida en Android, aplicación web pura en Android/Linux/Windows/Mac en el navegador.
A partir de esto, sospecho que WebView en iOS se encuentra en mal estado.
Idealmente, quiero resolver el problema para que no ocurra en primer lugar.
Hasta ahora no he encontrado cómo hacerlo, así que estoy buscando una forma de recuperarme sin tener que volver a cargar el programa.
¿Hay alguna forma de restablecer WKWebView sin tener que volver a cargar el programa?
Gracias