PhoneGap

  • Hallo,

    ich habe einige Fragen zu PhoneGap und dazu auch die Suche bemüht. McPringle hat hier einen sehr guten Beitrag geschrieben. Allerdings ist das Bild noch nicht ganz rund, daher mache ich einen neuen Thread zum Thema PhoneGap v.a. unter iOS und Android auf:
    • Muss man sich PhoneGap so vorstellen, dass im Grunde eine WebApp (offline) in einen Webview verpackt wird, die dann so tut, als wäre sie eine App?
    • Ist es (zumindet unter iOS) immer noch so, dass man kaum debuggen kann? Inzwischen kann man ja sehr gut mit Safari (Mac) eine JS-Debug-Brücke auf angeschlossene iOS-Geräte aufbauen - auch wenn dort ein UIWebView in einer App läuft. Geht das auch mit PhoneGap?
    • Ist es tatsächlich so, dass die PhoneGap-SDK oder-Frameworks aktualisiert werden müssen, wenn z.B. ein neues Xcode veröffentlicht wird? Wie schnell geht das?
    • Wie sind die Erfahrungen beim AppStore-Review? Was sagt Apple z.B. zur nicht oder nicht völlig UI-Guidelines-konformen Oberfläche? Ich stelle mir gerade jQuery UI als Oberfläche vor ...
    • Dazu: Wie aufwendig ist es, die UI an die verschiedenen nativen Welten zu adaptieren?
    • Wie gut ist der Zugriff auf systemnahe API (Kamera usw.)? McPringle sprach von einem Barcodescanner.
    • Wie schnell sind PhoneGap-Apps, vor allem auch unter Android?
    • Spart man wirklich Zeit, wenn man z.B. iOS- und Android-Projekte gemeinsam realisieren will, oder ist die Portierung besser?
    • Wenn das alles HTML/CSS/JS-basiert ist, scheidet Threading wohl aus .. wie performant ist das Ganze bei der Vorbereitung größerer/komplexerer Table-Strukturen (z.B. 10.000 Einträge), die man nativ u.U. in Threads aufteilen würde?

    Versteht mich nicht falsch: Ich bin mit Leib und Seele iOS-Entwickler. Ein Kunde (oder besser: dessen IT-Leiter) kam aber auf die Idee, dass es besser und günstiger sei, die anstehende App, die nicht übermäßig komplex, aber auch nicht sehr trivial ist, in PhoneGap umsetzen zu wollen, anstelle nativ iOS und Android. Er denkt auch an Windows 8 ...

    Danke Euch!
  • Es gibt eine Studie, welche verschiedene Cross-Platform-Frameworks erläutert. Link >> visionmobile.com/product/cross…orm-developer-tools-2012/
    Dort findest du auch einige Informationen über phonegap, siehe:
    Cross Platform Developer Tools: Products & Tech

    PhoneGap targets web developers who want to create native smartphone apps (iOS, Android, Blackberry,
    Symbian, Bada, Windows Phone 7) and distribute them through native app stores. PhoneGap applications
    are, at the core, HTML, CSS and JavaScript developed in standard development environments like
    Dreamweaver or Eclipse. The developer can use JavaScript to call native platform APIs. The build process
    packages the web code, together with the PhoneGap library, into a native application execution shell.
    PhoneGap apps are therefore hybrid web apps. App UIs are rendered as “webViews” by the native
    platform’s javascript engine and browser (which run “chromeless”). The app payload comprises web code,
    the native wrapper plus an API bridge between the web code and the native platform.

    Ich hatte mir mal vor längerer Zeit verschiedene Cross-Platform-Frameworks angeschaut. Letztendlich bin ich zu dem Entschluss gekommen, dass es nicht für alle Arten von Apps geeignet ist. Gerade bei komplexen Apps bzw. Performance kritischen Apps wird es schwierig. Auch werden nicht alle Funktionen auf allen Plattformen gleich gut unterstützt. Schlimmstenfalls bist du länger damit beschäftigt Workarounds zu finden, als wenn du die App 2x nativ schreibst. Für weniger komplexe/Zeitkritische Apps scheint es aber ein möglicher Weg zu sein. Kommt halt sehr auf das gewünschte Ergebnis an. Für einfache Apps (z.B. laden von Daten über eine Webschnittstelle und anzeigen mittels TableView/DetailView) ist es sicher ein gangbarer Weg.

    Evtl. hilft es sich ein paar mittels phonegap realisierte Apps anzuschauen: phonegap.com/app/
  • Ich sollte letzte Woche ein vorhandenes PhoneGap Projekt auf den iPads eines Kunden installieren. Da das Xcode Projekt schon ein wenig älter war und das PhoneGap Framework nicht enthalten war, habe ich mir die Version 1.2 von der PhoneGap Webseite herunter geladen. Damit konnte ich das Projekt dann auch, nach einer Änderung in den Projekt-Einstellungen und einer Änderung im Objective-C Code, direkt compilieren und testen. Allerdings funktionierte bei der App der Sound nicht wie gewünscht. Nach etlichen Tests und Versuchen war bei PhoneGap 1.4.1 wieder Sound vorhanden, obwohl das ursprüngliche Projekt noch die Version 1.0 verwendet hatte.

    Leider war auch ein Befehl im verwendeten JavaScript nicht mehr kompatibel mit dem JavaScript von WebKit unter iOS 4.3/5.1. WebKit oder JavaScript war auch nicht so freundlich mir eine Fehlermeldung auszugeben und hat die Verarbeitung einfach an der Stelle mit dem nicht mehr unterstützen Befehl abgebrochen. Wirklich toll und sehr hilfreich, wenn man keine Ahnung von JavaScript hat. :(

    Ich werde um PhoneGap Apps in Zukunft einen großen Bogen machen. Der Aufwand lohnt sich nicht und die Apps fühlen sich nicht wirklich native an.

    In den nächsten Wochen werde ich für einen anderen Kunden eine bereits im App Store vorhandene PhoneGap App für iOS durch eine neu zu entwickelnde native iOS App ersetzen. Die vorhandene App ist einfach nur gruselig, weil diese sehr träge ist und z.B. keine Transitions beim Wechsel der Anzeige enthält, wie man es von einer iOS App eigentlich erwarten würde. Der Kunde hat eingesehen, dass diese PhoneGap App nicht wirklich iOS App Like und keinesfalls repräsentativ für diese Firma ist. Die Kosten für die Entwicklung dieser PhoneGap App hätte sich der Kunde jedenfalls sparen können.
  • Hi, ich habe vor einer Woche eine PhoneGap / Cordova App für iOS realisiert.

    Ziel ist es, die Webseite des Kunden (Tablet optimiert) für Aussendienstmitarbeiter oder Interessenten lokal auf den iPad speichern und jederzeit auch ohne Internet darauf zugreifen zu können.

    Habe soeben eine Mail bekommen, dass die App nun "Ready for sale" ist. Hochgeladen hab ich diese letzten Freitag.


    Zu deinen Fragen:
    Muss man sich PhoneGap so vorstellen, dass im Grunde eine WebApp (offline) in einen Webview verpackt wird, die dann so tut, als wäre sie eine App?
    PhoneGap verbindet Gerätefunktionen der Frameworks mit Javascript, welches auf allen Plattformen (iOS, Android, WP, Bada, ... , sofern unterstützt), gleich funktioniert.
    Beispiel: Kontakte suchen, anlegen, löschen - Netzwerkstatus abrufen (3G, EDGE, WLAN, Kein Netz,...)


    Ist es (zumindet unter iOS) immer noch so, dass man kaum debuggen kann? Inzwischen kann man ja sehr gut mit Safari (Mac) eine JS-Debug-Brücke auf angeschlossene iOS-Geräte aufbauen - auch wenn dort ein UIWebView in einer App läuft. Geht das auch mit PhoneGap?
    Teilweise hatte ich Probleme, als der Code z.B. Syntaxfehler hatte und dann die komplette App (außer HTML und CSS) nicht geladen wurde. Da half auch das Debugging im Safari nichts.
    Aber ansonsten kommst du mit "console.log" schon weit. Außerdem ist die eingebaute Konsole im Safari echt Gold wert.


    Ist es tatsächlich so, dass die PhoneGap-SDK oder-Frameworks aktualisiert werden müssen, wenn z.B. ein neues Xcode veröffentlicht wird? Wie schnell geht das?
    Kann ich dir nicht sagen, habe nur PhoneGap während der Entwicklung von 2.2.0 auf 2.3.0 geupdatet, da für mich relevante Änderungen drin waren.


    Wie sind die Erfahrungen beim AppStore-Review? Was sagt Apple z.B. zur nicht oder nicht völlig UI-Guidelines-konformen Oberfläche? Ich stelle mir gerade jQuery UI als Oberfläche vor ...
    Meine App hält sich an keine UI Styleguides von Apple, sieht aber trotzdem hochwertig aus. Sofern du nicht irgendwas zusammenfrickelst, sollte das kein Problem darstellen.


    Dazu: Wie aufwendig ist es, die UI an die verschiedenen nativen Welten zu adaptieren?
    Wenn du es richtig machst (CSS Media Queries, Retina support,...), brauchst du nichts verändern. Du solltest bei den Funktionen, die du verwenden willst, aber zuerst schauen, ob die Zielplattformen das behersschen. Beispiel: HTML5 Local Storage


    Wie gut ist der Zugriff auf systemnahe API (Kamera usw.)? McPringle sprach von einem Barcodescanner.
    Sehr angenehm, es gibt wahnsinnig viele Plugins, ich habe eins zum Downloaden und Entpacken einer Zip-Datei (in der die HTML Files liegen,) benötigt. Dieses gibt es aktuell nur für iOS, also muss ich für Android etwas anderes suchen und trotzdem schauen, dass ich mein Javascript nicht anpassen muss.


    Wie schnell sind PhoneGap-Apps, vor allem auch unter Android?
    PhoneGap benutzt UIWebViews, diese dürfen nicht auf den schnellen JS JIT Compiler "Nitrous" zurückgreifen, somit ist die App immer gefühlt langsamer, als eine native. Wie es auf Android aussieht kann ich dir leider nicht sagen.


    Spart man wirklich Zeit, wenn man z.B. iOS- und Android-Projekte gemeinsam realisieren will, oder ist die Portierung besser?
    In der kurzen Zeit habe ich eine komplette App auf die Beine gestellt, die Portierung auf Android ist auch bis auf den Download der ZIP Datei kein Problem. Dort muss ich allerdings eine Alternative finden und sicher noch ein paar Tage investieren, auch, weil ich noch nie eine App für Android komplett fertiggestellt habe.


    Wenn das alles HTML/CSS/JS-basiert ist, scheidet Threading wohl aus .. wie performant ist das Ganze bei der Vorbereitung größerer/komplexerer Table-Strukturen (z.B. 10.000 Einträge), die man nativ u.U. in Threads aufteilen würde?
    Gut erkannt, Javascript wird sowieso on the fly interpretiert und ist deshalb nicht die sinnvollste Sprache für komplexe Berechnungen oder viele Datensätze. Wenn die App arbeitet/rechnet, hängt der Rest. Das sollte vermieden werden, oder visuell gezeigt. Ich habe während des Downloads eine Fortschrittleiste eingebaut, soetwas wäre auch für Berechnungen durchaus denkbar.
    Außerdem wird, wie oben schon beschrieben, nicht die schnelle "Nitrous"-Engine verwendet (die Besitzt nur der Safari als Alleinstellungsmerkmal).
    Also ist eine Webseite im Safari geöffnet immer schneller, als eine PhoneGap App, auch wenn es der selbe Code ist.


    Hoffe dass ich helfen konnte.
    Grüße

    Patrick