Quali sono i pro e i contro dell’uso di Apache Cordova (Phonegap) per costruire la tua app per iOS?

Non ho mai fatto un serio sviluppo iOS, ma ho fatto un'app PhoneGap che'è nell'app store di iOS e per un breve periodo è stata nel Google Play store (l'abbiamo tirata fuori perché alcuni dispositivi Android non stavano rendendo correttamente la nostra app - Bisogna testare molti dispositivi Android).

Mi considero ben esperto nello sviluppo web, ed ero entusiasta delle caratteristiche che PhoneGap porta alle app web. Seguire la strada delle web app HTML5 mi è sembrato il percorso più sensato.

Pros

  • Non devi imparare nessun nuovo linguaggio se sei già uno sviluppatore web decente
  • E' molto veloce da prototipare
  • Anche se non l'abbiamo usato;Anche se alla fine l'abbiamo usato, jQuery mobile è abbastanza pulito e rende ancora più veloce il prototipo
  • Tante opzioni di libreria per quasi tutto ciò che si può desiderare
  • E' davvero bello e divertente
  • Se si vuole, si può bypassare l'app store ospitando i file su un server, e utilizzare la cache delle app per rendere le cose più veloci. Cambiare la vostra app è solo cambiare una pagina web e il suo file manifest della cache
  • Gestire le immagini per più dispositivi è molto più facile con CSS e media queries di quanto non lo sia per un progetto xcode iOS e un progetto Android con i suoi ldpi, hdpi, xdpi, e qualsiasi dpi.
  • Più facile creare grafica vettoriale secondo le specifiche di progetto
  • Cavolo, è semplicemente più facile far sì che le cose siano uguali;s semplicemente più facile ottenere cose che siano esattamente come il design (tranne se ci si preoccupa della compatibilità cross-browser)

Cons

  • Ci sono un sacco di browser mobili là fuori (lo stato dei browser è peggio che mai in termini di quanti diversi browser di merda dobbiamo supportare - una volta era solo ie, ma indovina quante persone sono su Android 2.x)
  • Ci sono un sacco di dispositivi mobili là fuori con hardware, dimensioni dello schermo e velocità di rete variabili
  • Alcune caratteristiche che siete abituati ad usare non ci sono per tutti i dispositivi (posizione: static per esempio) e dato che quelli sono probabilmente i dispositivi più scadenti, usare uno shim javascript (come iScroll) è fuori questione se ci si preoccupa delle prestazioni
  • Sembra che ci siano alcuni problemi di versione con il plugin facebook-connect per phonegap (cordova) e le ultime versioni di phonegap solo su iOS - Per far funzionare facebook connect e PhoneGap ho dovuto usare una vecchia versione di PhoneGap
  • La documentazione per PhoneGap stesso è abbastanza decente, ma è ancora nuova;è ancora nuovo, quindi non molte persone hanno informazioni affidabili sulle versioni attuali (almeno questo era il caso 3-4 mesi fa)
  • Da quando ho dovuto usare una vecchia versione di PhoneGap, ho scoperto che alcune delle loro funzioni api avrebbero causato errori javascript. Ho dovuto bypassare lo zucchero che forniscono e chiamare PhoneGap.exec direttamente sul loro com.phonegap.whateverFunctionality - Era brutto, ma funzionava
  • Ci sono complicazioni con il collegamento ad altre app come le mappe di Google
  • Ho scoperto che il salvataggio dei contatti non funzionava su tutte le versioni di iOS
  • jQuery Mobile + Backbone è più una spina nel fianco di quanto si pensi
  • Per ottenere transizioni ordinate può essere un dolore
  • Ci sono meno strutture in javascript per la modularizzazione di applicazioni su largaapplicazioni su larga scala rispetto a Objective-C o Java
  • Il test faceva schifo - non più tanto http://labs.adobe.com/technologies/shadow/

Sento che alla fine i contro hanno superato i pro. Tuttavia, armati di questa conoscenza, non progetteremmo la nostra app mobile allo stesso modo. Per esempio, volevamo un'esperienza simile a quella nativa con una navigazione staticamente posizionata nell'header e nel footer. Se la compatibilità cross-browser e le prestazioni sono una preoccupazione, non si vuole fare questo. Eviterei anche gli angoli pesantemente arrotondati. Android 2.x non se la cava così bene.

Se la tua app è semplice, allora te lo consiglio. Mi è piaciuto molto il processo e vedere la mia web app come un'app installata. Ma sappiate che è più difficile di quanto sembri.