Attualmente sto studiando diverse alternative per creare un'applicazione mobile di messaggistica istantanea per iOS e Android, utilizzando un server XMPP (probabilmente ejabberd) come back-end. I requisiti principali sono una bella interfaccia utente e, naturalmente, buone prestazioni sulla maggior parte dei dispositivi.
Ho identificato tre diverse alternative, due delle quali includono l'uso dell'SDK Marmalade
Opzione A): usa Marmalade C ++, creando l'interfaccia utente con le librerie Marmalade come IwNUI / INUI. In questa opzione, l'interfaccia utente è creata in codice C ++. La mia ipotesi è che questo dovrebbe essere buono nelle prestazioni, tuttavia non sono sicuro di quanto sia facile ottenere un'interfaccia utente personalizzata che abbia un aspetto buono / moderno, ad esempio altre app di alta qualità. Un altro vantaggio: sceglierei iOS / Android con una base di codice.
Opzione B): anche Marmalade, che usa l'API c ++ s3eWebView per caricare pagine Web locali contenute nel pacchetto dell'applicazione. L'interfaccia utente sarebbe progettata in queste pagine Web utilizzando HTML / CSS / JavaScript. Per la logica dell'applicazione, è possibile utilizzare JavaScript o C ++, in quanto esiste un ponte JavaScript ( link ) per comunicare tra codice C ++ e codice JavaScript. Punterebbe anche su iOS / Android in un colpo solo.
Opzione C): Non-Marmalade: vai con due basi di codice. Utilizza Objective-C (ad esempio "modo standard") per iOS e Google Android SDK per Android. Costruisci l'app due volte.
Attualmente mi sto orientando verso l'opzione B, in quanto ciò consentirebbe l'uso di una base di codice e sfruttare le tecnologie HTML5 / CSS / JavaScript esistenti (particolarmente utili per l'interfaccia utente), insieme alla possibilità di utilizzare C ++. Tuttavia, la mia preoccupazione è se la risposta del dispositivo / interfaccia utente sarà accettabile con questo. Ho eseguito alcuni test preliminari per cose semplici come il caricamento di menu a tendina CSS3 in un s3eWebView tramite C ++, e questo mi sembra abbastanza reattivo (cioè il menu scende rapidamente e senza intoppi).