Apache Cordova permite-navegación anulada por permitir-intención

Queremos que todos los enlaces de la aplicación puedan abrirse en el navegador externo del sistema, con la excepción de una selección de nombres de host.

Intentamos poner <allow-navigation href="*.hostname.com/*"/> , pero esto se anula cuando se usa <allow-intent href="http://*/*" /> and <allow-intent href="https://*/*" como las etiquetas de intención para todos los demás enlaces de la aplicación.

El resultado esperado sería que nuestros nombres de host se abran dentro de la aplicación, pero se abren en el navegador externo en su lugar.

He intentado ver toda la documentación reciente y ayuda disponible en la red, pero no pude encontrar una respuesta a mi solución. Espero que ustedes lo sepan.

Editar: se olvidó de mencionar que ejecutar la última cordova CLI y el plugin más reciente lista blanca con el complemento inappbrowser.

Sinceramente,

Daniel

Prueba a cambiar las etiquetas <allow-* > a esto:

 <allow-intent href="*.hostname.com/*" <allow-navigation href="https://*/*" <allow-navigation href="http://*/*" <allow-access href="https://*/*" <allow-access href="http://*/*" 

La etiqueta <allow-navigation> es para controlar las URLs a las que se puede navegar la webview de Cordova.

Vea este artículo para una mejor comprensión de la lista blanca de Cordova.

Creo que necesitas hacerlo manualmente. Puede utilizar el complemento navegador de inApp para lograr esto.

  1. Compruebe el enlace es interno / externo (Al marcar el hipervínculo contiene su nombre de host contiene o no)
  2. Si es externa, llame al navegador del sistema y abra el enlace cordova.InAppBrowser.open('http://external-domain.name', '_system', 'location=yes');
  3. Si es interno, abra el enlace dentro de InAppBrowser cordova.InAppBrowser.open('http://yourdomain.name', '_blank', 'location=yes');

Puede ignorar el tercer paso si no lo necesita.

Código completo:

 $(document).on("click","a",function(e){ var hrefs = $(this).attr("href"); if(hrefs.indexOf("yourdomain") > -1) { //Open link inside inAppBrowser cordova.InAppBrowser.open(hrefs, '_blank', 'location=yes'); e.preventDefault();//To prevent default click } else { //Open link inside system browser cordova.InAppBrowser.open(hrefs, '_system', 'location=yes'); e.preventDefault();//To prevent default click } }) 
  • Generación de código para iOS y android
  • Servicio de notificación de Google / Apple Push (APNS / GCM)
  • Factores que afectan a FPS en dispositivos móviles en Unity
  • ¿Cómo puedo crear un borde diagonal en React Native?
  • En iOS tenemos algo como Gradle Build Flavors en Android
  • Android cómo agrupar tareas asíncronas como en iOS
  • Cómo obtener acceso a la API de phonegap desde una página remota
  • Cómo manejar el tipo de datos fcm notificaciones cuando la aplicación no se está ejecutando o estado cerrado en iOS similar a Android?
  • Formato de audio para iOS y Android
  • Android: equivalente a IOS UIActionSheet
  • La fecha de Javascript no es válida en iOS
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.