Dopo una serie di grattacapi sono riuscito a risolvere un problema che mi ha tenuto attivo per diverse ore in quanto stavo cercando la soluzione nel posto sbagliato. La questione era aprire un link esterno all'app nel browser dove, nonostante una lunga serie di tentativi che hanno visto installare e disinstallare il plugin necessario quale cordova-plugin-inappbrowser oppure utilizzare ngCordova tramite il metodo $cordovaInAppBrowser, ottenevo sempre lo stesso risultato ovvero, al lancio di window.open(url, '_system', 'location=yes') nessuna azione veniva effettuata (quindi nessun browser aperto) e nessun errore veniva segnalato in console.
Il problema in realtà non stava né all'interno dei plugin né nel codice di Ionic dell'app bensì era dovuto ad una questione di permessi da gestire all'interno del file config.xml (non quello nella cartella platform Android che si aggiornerà di conseguenza bensì quello nella root dell'app di Ionic):
Fig. 1 - Ionic - file config.xml nella root dell'app
Le righe di codice da modifica/inserire per far sì che l'app sia abilitata ad aprire URL esterni sono le seguenti:
<access origin="*" launch-external="yes"/>
<allow-navigation href="*"/>
Che visto direttamente nel codice xml del file config.xml sono:
Fig. 2 - Ionic - file config.xml modificato abilitando i permessi di apertura di url esterni
Ricompilando l'app il risultato è stato immediato.
Spero che questo articolo gioverà a qualcuno in termini di tempo guadagnato.
Ciao,
ho riscontrato anche io il problema che descrivi e mi sono messo alla ricerca della soluzione.
Sono finito nel tuo sito, ben fatto, che descriveva il problema e forniva la soluzione.
Ma inserendo quelle 2 righe nel mio file config.xml non ho risolto il problema.
Anzi ti dirò di più non riesco nemmeno a visualizzare nome e icona dell'app (questo anche prima dell'intervento delle 2 riche).
Riesci a darmi una mano?
Grazie
Giovanni
Ciao Giovanni,
se non visualizzi neanche il nome e l'icona dell'app è probabile che il tuo problema sia ancora a monte da quello descritto se non diverso.
Prova a vedere se ci sono o nel caso aggiungere, queste righe nel file config.xml:
E questa nell'index.html o pagina principale:
Se non risolve il problema servono maggiori dettagli sul tuo caso perché potrebbe non trattarsi di quello in oggetto.
<?xml version="1.0" encoding="UTF-8" ?>
<widget xmlns = "http://www.w3.org/ns/widgets"
xmlns:gap = "http://phonegap.com/ns/1.0"
id = "com.phonegap.example"
versionCode = "10"
version = "1.0.0">
<name>Report Lite</name>
<description>
CONDIVISIONE DATI E ACCESSO ALLA MESSAGGISTICA
Versione lite del portale, studiata e realizzata per la condivisione dati dei report condivisi e accesso diretto alla piattaforma di messaggistica Whatsapp
</description>
<icon src="icona.png">
<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" />
</widget>
****************************************
Questo è il mio file Config.xml
ho inserito anche la stringa che mi hai suggerito nell'index
(<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">)
Ma non ho avuto risultati positivi.
La mia App prevede 3 pagine che sono correttamente visualizzate ma quando cerco di aprire un link esterno questo non si apre.
L'articolo è riferito al framework ionic mentre nel tuo caso non sembra che lo stai utilizzando, questo potrebbe essere uno dei motivi per il quale la soluzione in questione non si adatta al tuo caso.
Posso provare a suggerirti di inserire i link in questo modo:
<a href="#" onclick="window.open('http://www.link.it', '_system'); return false;">www.link.it</a>
Assicurandoti di aver installato il plugin:
cordova plugin add cordova-plugin-inappbrowser
Grazie per la risposta!
Solo un'ultima cosa, l'installazione del plugin devo farla all'interno del file config.xml o dentro ogni pagina ove presente il link verso l'esterno?
Ciao Giovanni,
i plugin sono installati a livello di applicazione, non di pagine.
Ti consiglio di prendere visione della documentazione ufficiale per chiarimenti sul tema: https://cordova.apache.org/docs/it/latest/guide/cli/#aggiungere-funzionalit\%C3\%A0-di-plugin
scusate una domanda, come si fa a chiudere una finestra aperta tramite inappbrowser _system?
magari riuscendone a leggere un parametro sulla url