Cordova 3.4 e InAppBrowser

Ultimamente mi sto parecchio concentrando sul discorso APP HTML5 con Cordova ( o Phonegap, chiamatelo come vi pare, io uso il primo perchè di PhonegapBuild non me ne frega una mazza ).

Oramai siamo arrivati alla versione 3.4, direi una versione piuttosto stabile.
Una cosa però, oggi, mi ha fatto uscire fuori di testa pesantemente.
Sto realizzando una app che ha, nella sua tabbar, un bel link per una pagina HTML esterna.

Procedo come al mio solito: accedo alla mia cartella delle app, apro il terminale del mio fido iMac, e digito:

cordova create "nomeapp" "com.nomeazienda.nomeapp" "nomeapp"

Successivamente

cd nomeapp

cordova platform add android

cordova platform add ios

Cosa ho fatto?

Ho semplicemente inserito le due piattaforme iOs e Android all’interno del progetto.

Per coloro che non fossero avvezzi alle nuove dinamiche Cordova, è molto facilitato il compito di gestire tutti i file ed i plugin, e io vi consiglio sicuramente di usare il terminale. Risparmierete una montagna di ore di prove, copia ed incolla, e incazzamenti vari.

Dentro la cartella nomeapp, chiaramente, avrò la struttura creatami da Cordova. Quella che vi interessa è la cartella WWW, che contiene i files HTML della vostra app. Cordova, in fase di build, si occuperà di copiare i files dentro la cartella platform/android.

Bene. Ma cosa vi sto a spiegare tutto questo torrone, tanto sicuramente siete più bravi di me.

Se poi avete bisogno di una mano, contattatemi qui:

Vengo al problema InAppBrowser: molto semplice. Non funzionava.
Niente da fare. Eppure nel file config.xml di base, la whitelist era a posto ( se per a posto consideriamo un * ).
Semplicemente i miei link esterni si aprivano nell’app stessa, senza alcuna possibilità di tornare indietro. Risultato? Fallimento su tutta la linea, una pagina web che si apre in _self è peggio che un calcio nel culo. Allora ho provato a forzare l’app a considerare NON in whitelist il mio dominio.

Da:

<access origin="*" />

a:

<access origin="http://www.google.com" />

Ho quindi rifatto il build di entrambe le piattaforme con un bel

cordova build

e poi ho lanciato l’app nel mio device Android:

cordova run --device android

Risultato? LA MAGIA.
InAppBrowser è tornato a funzionare come per magia, e per giunta su entrambi i domini!

Regola d’oro quindi: aggiungete a manina santa i domini che dovranno comunicare con la vostra app. Vi risparmierete un bel mal di testa.

Aggiornamento dell 18:50

Ho provato la stessa soluzione su XCode: le bestemmie.
Sul mio iPhone 3GS mi da problemi di Whitelist, a prescindere da cosa metta, dovrò approfondire come risolverlo, presumo che sia sufficiente mettere a posto nel file .plist.
Sul simulatore, invece, perfetto, apre l’InAppBrowser perfettamente.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *