È consigliabile utilizzare la stessa base di codice per la nostra app Web mobile e l'app per PhoneGap? Sono pensati per essere simili, la versione di PhoneGap ci lascia solo fare di più. Possiamo rilevare se non è in esecuzione su PhoneGap e sequestrare le chiamate all'API phonegap o ha più senso separarle.Utilizzo della stessa base di codice per phonegap e web?
risposta
Vorrei utilizzare lo stesso codice di base. L'intero punto di PhoneGap è convertire i tuoi siti mobili in app. Non è così difficile rilevare le funzionalità e lo schermo immobiliare a seconda dei casi. Il problema con codebase separati è solitamente il costo della gestione doppia dei tuoi contenuti e stili. Se necessario, puoi separare quelli in una risorsa condivisa e raggrupparli in fase di runtime/accesso, ma personalmente continuerei a tenere tutto insieme.
Questo blog copre il problema di rilevamento (vedere anche i commenti): http://bennolan.com/2011/08/22/phonegap-detection.html. Il punto cruciale è però if (window.PhoneGap){...}
Grazie per il link – fancy
Certo, è possibile utilizzare la maggior parte della stessa base di codice. Alcune API phonegap sono le stesse in html5 (ad esempio localStorage) quindi non c'è differenza nel codice.
Se si utilizza il servizio di generazione di phonegap, verrà aggiunto il file di script phonegap.js/cordova.js alla radice del progetto. Basta includerlo nel tuo html tutto il tempo. Poi si può rilevare se l'applicazione è in esecuzione all'interno di PhoneGap:
var isPhonegap = function() {
return (typeof(cordova) !== 'undefined' || typeof(phonegap) !== 'undefined');
}
if (isPhonegap()) {
// phonegap.js/cordova.js exists.. now let's handle the onDeviceReady event
} else {
// in-browser
}
Se avete bisogno di un po 'di codice di avvio comuni, metterlo in una funzione e chiamare questa funzione dal gestore onDeviceReady e il blocco altro sopra.
Se l'API di phonegap che stai chiamando non ha esattamente lo stesso nome di html5 (perché ha il prefisso Moz * o WebKit *, per esempio), basta avvolgere entrambi all'interno di un nuovo nome. Per esempio:
var requestFileSystem = (isPhonegap() ? requestFileSystem : window.WebKitRequestFileSystem);
Se l'API PhoneGap si sta utilizzando HTML5 davvero non ha alcun equivalente, cercare di duplicare la funzionalità da soli in javascript, se possibile, altrimenti si perde la funzionalità solo nel browser. Ma assicurati che degrada abbastanza bene senza quella funzione.
Nota: per testare le funzioni dei dispositivi mobili come l'accelerometro, la geolocalizzazione, ecc. Nel browser, verificare Ripple Chrome extension.
molto utile, solo un commento: nella riga 5 c'è un errore non è " iPhonegap "deve essere" isPhonegap ". Grazie! –
risolto, grazie :) – chrisben
ho capito un modo per mantenere intatta la base di codice web ...
Il problema attuale con l'utilizzo del costruito in manifestazione deviceready, è che quando la pagina viene caricata, non si ha modo di raccontare l'app: "Ehi questo NON funziona su un dispositivo mobile, non è necessario attendere che il dispositivo sia pronto per l'avvio".
Nella parte nativa del codice, ad esempio per iOS, in MainViewController.m c'è un metodo viewDidLoad, vi mando una variabile javascript che poi ho verificare la presenza nel codice web, se tale variabile è intorno , aspetterò per avviare il codice per la mia pagina fino a quando tutto è pronto (ad esempio, il navigatore di geolocalizzazione)
Sotto MainViewController.m:
- (void) viewDidLoad { [super viewDidLoad]; NSString* jsString = [NSString stringWithFormat:@"isAppNative = true;"]; [self.webView stringByEvaluatingJavaScriptFromString:jsString]; }
indice.html il codice va in questo modo:
function onBodyLoad() { document.addEventListener("deviceready", onDeviceReady, false); } function onDeviceReady(){; myApp.run(); } try{ if(isAppNative!=undefined); }catch(err){ $(document).ready(function(){ myApp.run(); }); }
- 1. Utilizzo di web worker in PhoneGap
- 2. PhoneGap, jQueryMobile e servizio Web
- 3. Utilizzo di funzioni all'interno della stessa classe
- 4. Utilizzo della stessa direttiva su più elementi
- 5. Jquery Codice mobile per lo sfarfallio della navigazione con PhoneGap
- 6. Utilizzo di PhoneGap come contenitore nativo per un'applicazione Rails 3
- 7. lavoro QR scanner di codice per PhoneGap
- 8. Utilizzo di node.js per pubblicare la pagina Web di base con CSS e JS include
- 9. Utilizzo: counter_cache e: tocco nella stessa associazione
- 10. Utilizzo waypoint di base
- 11. PhoneGap - Condivisione della funzionalità per e-mail, Twitter e Facebook
- 12. Utilizzo di importazioni statiche e qualità della leggibilità del codice?
- 13. Utilizzo di due versioni diverse della stessa dipendenza del nodo
- 14. PhoneGap FileTransfer con autenticazione HTTP di base
- 15. Utilizzo di base del pasteboard per iPhone
- 16. Utilizzo di più database all'interno della stessa applicazione
- 17. Utilizzo della stessa opzione più volte in Argparse di Python
- 18. come eseguire più siti sulla stessa base di codice in ColdFusion base su dominio o sottodominio
- 19. Utilizzo di QVTKWidget e QOpenGLWidget nella stessa UI?
- 20. Android - Codice sorgente per PhoneGap cordova.jar
- 21. Utilizzo di OpenID con PhoneGap e Window Phone 7
- 22. Utilizzo della presa Web con Tomcat 7
- 23. Utilizzo di POST e urllib2 per accedere all'API Web
- 24. Utilizzo di CMake con più compilatori per la stessa lingua
- 25. Utilizzo della riproduzione 2.0 per creare un servizio web
- 26. Utilizzo di Eclipse con arabo e inglese sulla stessa riga
- 27. Utilizzo della parallelizzazione per raschiare pagine Web con R
- 28. Generazione di codice per iOS e Android
- 29. Utilizzo di panda su pd.read_excel() per più fogli di lavoro della stessa cartella di lavoro
- 30. Utilizzo di MAX() e COUNT() nella stessa query
sarete tenuti a eseguire in manutenzione all'inferno, prima o poi, secondo me, non ...: S –
dare un'occhiata http: // StackOverflow. it/questions/10347539/detect-between-a-mobile-browser-or-a-phonegap-application/10348353 # 10348353 – Futur