Aplicación Wrapper de Córdoba donde los vínculos internos cargan en la aplicación, los enlaces externos cargan en el navegador

Tengo una simple aplicación Cordova wrapper que apunta a una página web externa, sin definir ninguna de sus propias vistas.

Quiero que todos los enlaces internos de ese dominio se carguen dentro de la aplicación , pero todos los enlaces externos ( http://twitter.com , etc) que se cargan en el navegador del sistema , por lo que las páginas tienen la funcionalidad de retroceso / avance.

En una aplicación normal con vistas, podría establecer target='_system' para cargar enlaces en el navegador predeterminado, o usar el cordova-plugin-inappbrowser para abrir explícitamente enlaces en una vista de navegador web. Desafortunadamente en este caso no tengo la capacidad de editar el código del lado del servidor, así que necesito una solución que funcione dentro de la aplicación.

Si defino el config.xml como tal, los enlaces internos y externos se cargan en la aplicación.

 <content src="http://example.com/" /> <access origin="*" /> <allow-navigation href="*" /> 

Si defino el config.xml con config.xml allow-intent , los enlaces internos y externos se abren en el navegador del sistema.

 <content src="http://example.com/" /> <access origin="*" /> <allow-navigation href="*" /> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> 

Otros han sugerido el uso de javascript personalizado para sustituir el target a _system , sin embargo, ya que no tengo mis propias opiniones realmente no puedo hacer eso.

¿Es posible definir allow-intent para el cordova-plugin-whitelist de tal forma que incluya todas las URL que no sean el dominio interno ?

¿O necesitaré de alguna manera anular shouldStartLoadWithRequest en MainViewController y luego llamar [[UIApplication sharedApplication] openURL:url] ?

One Solution collect form web for “Aplicación Wrapper de Córdoba donde los vínculos internos cargan en la aplicación, los enlaces externos cargan en el navegador”

Ok, después de algunos experimentos y sugerencias de Hayyaan , pude llegar a una combinación de allow-navigation y allow-intent que sirvió a mi propósito.

 <content src="https://example.com/" /> <access origin="*" /> <allow-navigation href="about:*" /> <allow-navigation href="https://example.com/*" /> <allow-navigation href="https://*.example.com/*" /> <allow-navigation href="https://*.facebook.com/*" /> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> 

Ahora todos los enlaces internos del dominio del sitio web se cargan en la aplicación , mientras que los enlaces externos se cargan en el navegador del sistema .

Nota, he incluido <allow-navigation href="https://*.facebook.com/*" /> para permitir la carga de bibliotecas de Facebook de lo contrario recibí un error.

 ERROR Internal navigation rejected - <allow-navigation> not set for url='https://staticxx.facebook.com/connect/xd_arbiter.php? 

Y también se incluyó <allow-navigation href="about:*" /> para evitar un error de about:blank .

 ERROR Internal navigation rejected - <allow-navigation> not set for url='about:blank' 

Espero que esto ayude a alguien con el mismo problema 🙂

  • Rellenar formulario en WebView con Javascript
  • Android - después de cargar URL con webview puedo cambiar el color de fondo
  • Android WebView: sólo carga HTML, no carga JS o CSS (en algunos dispositivos)
  • Icono iónico de Android no es el mismo tamaño / proporción original
  • La vista web de Android SKIPS javascript incluso con setJavascriptEnabled (true) y WebChromeClient
  • Vista web de Android, cargando archivo javascript en la carpeta de activos
  • Identificador de dispositivo móvil único permanente (Evercookie?)
  • ¿Por qué se detiene el Javascript cuando presiona mucho tiempo en un dispositivo Android o iOS?
  • JavaScript / HTML5 audio: reproduce el archivo mp3 cargado por el usuario mediante el selector de archivos en Android Chrome
  • JavaScript visibilitchange Evento no dispara en Chrome móvil
  • JavaScript: Detectar pellizco para aplicar zoom cuando 'usuario-escalable' está establecido en sí
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.