iOS Apps mit Webtechnologien erstellen
Ein Überblick
Michael Kühnel
Internet seit über 10 Jahren (seit Netscape 4.7).
Worum geht es
UIWebView
Apache Cordova (PhoneGap)
Appcelerator Titanium
Verschiedene Möglichkeiten HTML, CSS, JavaScript native iOS Apps zu erstellen.
Titanium: Sonderrolle, weil es hier nur die Möglichkeit gibt, seine Views mit JavaScript zu erstellen.
Native Apps = Native Toolchain
Voraussetzungen
Apple Macintosh
iOS SDK
Xcode IDE
UIKit Framework, iPhone-Simulator, weitere Tools, Compiler etc.
iOS Developer Program ($99/Jahr )
- Xcode kostenlos
- iOS Developer Program notwendig:
- - zum testen auf devices
- - zum veröffentlich in App Store
UIWebView
You use the UIWebView class to embed web content in your application. To do so,
you simply create a UIWebView object, attach it to a window, and send it a
request to load web content.
Siehe developer.apple.com
Rudimentärste Möglichkeit.
Fakten
»Container« für Webinhalte
Bestandteil des Apple UIKit Frameworks
Kann »interne« und »externe« Inhalte laden
Build Prozess über Xcode
Native APIs teilweise über HTML5 APIs nachrüstbar:
More to come: Vibration API, Device orientation API, Mobile Device APIs.
Device APIs bereits Bestandteil von Cordova/Phonegap.
Vorteile
»Freiheit« in der Webentwicklung:
Serverseitige -> Datenbanken, Skriptsprachen etc.
Clientseitig -> Datenbanken, CSS und JavaScript Frameworks etc.
Gleiche Code-Basis ggf. für andere Plattformen nutzbar.
Nachteile
Performance: Andere JavaScript Engine als in Mobile Safari
Rudimentäre iOS SDK und Objective-C Kentnisse nötig
Gute, auch deutsche Tutorials zu dem Thema vorhanden.
Apache Cordova (PhoneGap)
Apache Cordova is a platform for building native mobile applications using
HTML, CSS and JavaScript.
Siehe incubator.apache.org/cordova
Fakten
»Container« für Webinhalte
Kann nur mit »internen« Inhalten (HTML, CSS, Javascript) umgehen
Build Prozess über Xcode
Zusätzliche Javascript Device APIs:
Accelerometer ,
Camera ,
Capture ,
Compass ,
Connection ,
Contacts ,
Device ,
Events ,
File ,
Geolocation ,
Media ,
Notification ,
Storage
Vorteile
»Freiheit« in der Webentwicklung:
Clientseitig -> CSS und JavaScript Frameworks etc.
Alle wichtigen Geräte APIs werden unterstützt
Gleiche Code-Basis für andere Devices nutzbar:
Unterstützt zur Zeit 7 mobile Plattformen.
Open Source und kostenlos
Dabei liegt der Teufel im Detail:
- Nicht alle Plattformen unsterstützen alle APIs
- Und nicht im ganzen Umfang
Nachteile
Performance: Andere JavaScript Engine als in Mobile Safari
Kein Einsatz von serverseitigen Scriptsprachen möglich
Appcelerator Titanium SDK
Create rich native iOS, Android, hybrid, and mobile web apps from a single JavaScript-based SDK.
Siehe appcelerator.com
Fakten
JavaScript basierte Plattform
»JavaScript« -> »Objective C« Bridge
Man programmiert JavaScript und die App nutzt letzlich native APIs
Unterstütztung von JavaScript Modulen nach der CommonJS Module Specification
Build Prozess über Titanium Studio
Vorteile
Native UI Elemente
Performance
Gleiche Code-Basis für andere Devices nutzbar:
Unterstützt zur Zeit 3 mobile Plattformen.
Dabei liegt der Teufel im Detail:
- Nicht alle Plattformen unsterstützen alle APIs
- Und nicht im ganzen Umfang
Nachteile
Pure JavaScript Lösung. Kein HTML, kein CSS.
Kein Einsatz von serverseitigen Scriptsprachen möglich
Kommerzieles Produkt mit dem eine Firma Geld verdienen muss. Siehe Preistabelle .
Nicht nur Logik, sondern auch Views werden per JavaScript programmiert.
Extrakosten für: Support, Extensions, Cloud Services etc.
Fazit
»Richtige« Apps benötigen »richtige« APIs
Kein Unterschied an API Features zwischen Cordova und Titanium SDK
Letzlich eine Sache der persönlichen Präferenz:
Performance vs. Flexibilität …
Vorhandenes Wissen … etc …
Will ich Javascript meine Views programmieren?
Geht natürlich auch mit Phonegap und z.B. Sencha Touch.
Direkter Vergleich einer App in Entwicklung
»Workout Log« auf github
Bis jetzt nur UI, wenig Funktionalität
Alternativen
Weitere Möglichkeiten ohne Objective C native iOS Applikationen zu erstellen
RubyMotion
RubyMotion is a revolutionary toolchain for iOS.
It lets you quickly develop and test native iOS applications for iPhone or iPad,
all using the awesome Ruby language you know and love.
Siehe rubymotion.com
Corona
With Corona, you will develop mobile apps in record time.
Develop in Lua, an easy-to-learn language that coupled with our elegant APIs allow
you to add features like Facebook and physics in just a few lines of code.
Siehe coronalabs.com
Appendix – Links
Mobile JavaScript/CSS Frameworks