Cordova Wrapper App donde los enlaces internos cargan en la aplicación, enlaces externos cargados en el browser

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

Me gustaría que todos los enlaces internos de ese dominio se carguen dentro de la aplicación , pero todos los enlaces externos ( http://twitter.com , etc.) se carguen en el browser del sistema , por lo que las páginas tienen funcionalidad Atrás / Adelante.

En una aplicación normal con vistas, podría configurar target='_system' para cargar enlaces en el browser pnetworkingeterminado, o usar el cordova-plugin-inappbrowser para abrir explícitamente los enlaces en una vista del browser web. Lamentablemente, en este caso, no tengo la capacidad de editar el código del lado del server, por lo que necesita una solución que funcione dentro de la aplicación.

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

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

Si defino config.xml con allow-intent , se abrirán enlaces internos y externos en el browser del sistema.

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

Otros han sugerido usar javascript personalizado para anular el target en _system , sin embargo, dado que no tengo mis propias vistas, realmente no puedo hacer eso.

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

¿O tendré que anular de alguna manera shouldStartLoadWithRequest en MainViewController y luego llamar a [[UIApplication shanetworkingApplication] openURL:url] ?

Ok, después de algunos experimentos y sugerencias de Hayyaan , pude llegar a una combinación de permiso de navigation y permiso allow-intent que cumplió 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 website se cargan en la aplicación , mientras que los enlaces externos se cargan en el browser del sistema .

Tenga en count que <allow-navigation href="https://*.facebook.com/*" /> para permitir la carga de las 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 incluye <allow-navigation href="about:*" /> para evitar un error para about:blank .

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

Espero que esto ayude a otra persona con el mismo problema 🙂