2016-05-10 9 views
5

Vogliamo che tutti i collegamenti all'app possano essere aperti nel browser esterno del sistema, ad eccezione di una selezione di nomi host.Apache Cordova autorizza la navigazione sovrascritta da intent-intent

Abbiamo provato a inserire <allow-navigation href="*.hostname.com/*"/>, ma questo viene sovrascritto quando si utilizza <allow-intent href="http://*/*" /> and <allow-intent href="https://*/*" come tag di intento per tutti gli altri collegamenti nell'app.

Il risultato previsto sarebbe l'apertura dei nostri nomi di host all'interno dell'applicazione, ma si aprono invece sul browser esterno.

Ho provato a guardare tutta la documentazione recente e l'aiuto disponibile in rete, ma non sono riuscito a trovare una risposta alla mia soluzione. Spero che voi ragazzi sappiate.

Modifica: dimenticato di menzionare eseguiamo l'ultima cordova CLI e l'ultimo plug-in whitelist con il plugin inappbrowser.

Cordiali saluti,

Daniel

+0

dove vede questo problema? su iOS? Android? entrambi? Su cordova-ios 4.1.1 questo dovrebbe essere corretto – jcesarmobile

+0

@Thrinaria ti suggeriamo di dare un'occhiata a questo link - http://stackoverflow.com/questions/37127660/cordova-wrapper-app-where-internal-links-load- in-app-external-links-load-in-bro che ha trattato un problema simile – Gandhi

+0

@jcesarmobile 6.1 sia Android che iOS. – Thrinaria

risposta

0

Credo che hai bisogno di farlo manualmente. È possibile utilizzare il plug-in inApp Browser per ottenere ciò.

  1. Controllare il collegamento è interna/esterna (Controllando il collegamento ipertestuale contiene il nome host contiene o no)
  2. Se è chiamata esterna del browser del sistema e aprire il link cordova.InAppBrowser.open('http://external-domain.name', '_system', 'location=yes');
  3. Se è interno aperto il link all'interno InAppBrowser cordova.InAppBrowser.open('http://yourdomain.name', '_blank', 'location=yes');

si può ignorare 3 ° passaggio se non ne hai bisogno.

codice 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 
     } 
}) 
1

prova a modificare le <allow-*> tag per questo:

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

Il tag è <allow-navigation> per controllare gli URL del WebView Cordova si può navigare nella direzione.

Guardate questo article per una migliore comprensione della Whitelist di Cordova.

+0

allow-access dovrebbe essere solo i.e.

Problemi correlati