es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Los webkit.messageHandlers no funcionan en iPad.

Resumir el problema

Registré mi aplicación de iOS en la App Store, pero fue rechazada.
Básicamente funciona bien en el iPhone.
Pero he escuchado que hay una función que no funciona correctamente en el iPad.
La aplicación tiene parcialmente un webview.
En mis pruebas, no funcionó en iPads (15.2, 15.1). Es posible que tampoco funcione en versiones más antiguas.
La llamada a webkit.messageHandlers desde el webview no funciona.

Describir lo que has intentado

Al comienzo del proyecto, desarrollamos utilizando la sintaxis moderna de JavaScript.
Sin embargo, la sintaxis import/export en la versión de iOS 14.2 causó problemas y solucionó problemas de compatibilidad de código con webpack.
No he probado la solución porque no puedo entender por qué los iPhones y iPads se comportan de manera diferente.

Mi código

import { checkAndroid, checkIos } from "../../js/utils/index.js";

const step1El = document.querySelector("#step1");
const step2El = document.querySelector("#step2");
const btnEl = document.querySelector("button");

btnEl.onclick = function () {
  if (!step1El.checked)
    return alert("Please agree to the Blockchain Simplified Authentication Service Terms and Conditions");
  if (!step2El.checked)
    return alert("Please agree to the Collection and Use of Personal Information Terms and Conditions");

if (checkAndroid()) window.Android.agree();
  if (checkIos()) webkit.messageHandlers.agree.postMessage(""); // no funciona en el iPad
};

document.querySelector(".tos<em>btn").onclick = () => {
  if (checkAndroid()) window.Android.goTermsConditions(true);
  if (checkIos()) webkit.messageHandlers.goTermsConditions.postMessage(true); // no funciona en el iPad
};
document.querySelector(".policy</em>btn").onclick = () => {
  if (checkAndroid()) window.Android.goCollectionAgreement();
  if (checkIos()) webkit.messageHandlers.goCollectionAgreement.postMessage(""); // no funciona en el iPad
};
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Resumen del problema

    La aplicación de iOS fue rechazada por la App Store debido a que hay una funcionalidad que no funciona correctamente en el iPad. Específicamente, la función del webview no está funcionando cuando se llama a webkit.messageHandlers desde el webview. El problema fue descubierto durante las pruebas en iPads con versiones de iOS 15.2 y 15.1. Es posible que el problema también exista en versiones más antiguas de iOS.

    Soluciones intentadas

    Inicialmente, el proyecto fue desarrollado utilizando la sintaxis moderna de JavaScript. Sin embargo, la sintaxis de import/export causó problemas de compatibilidad con webpack en la versión de iOS 14.2. El código se corrigió para solucionar este problema, pero no está claro por qué la aplicación funciona de manera diferente en iPhones y iPads. Aún no se ha intentado ninguna solución.

    Código

    El código incluye “event listeners” para el botón y otros dos elementos, que llaman a funciones dependiendo del tipo de dispositivo. Si el dispositivo es un Android, se utiliza el objeto window.Android para llamar a las funciones. De lo contrario, se utiliza webkit.messageHandlers para llamar a las funciones en un dispositivo iOS. Sin embargo, esta funcionalidad no está funcionando correctamente en iPads.

Comments are closed.