Mobile Anwendungen mit Apache Cordova

54
Apache Cordova Vortrag

Transcript of Mobile Anwendungen mit Apache Cordova

Page 1: Mobile Anwendungen mit Apache Cordova

ApacheCordova

Vortrag

Page 2: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

User Group allgemein

Windows 10 Dev: wahrscheinlich Okt-Dez

Mai: Big Data mit MS Tooling (Yvette, 28.5.)

Wearables!!!

Nachtrag für Perceptual Computing Vortrag Handpose von MS Research für Kinect zur

Hand-/Fingererkennung: http://www.golem.de/news/handpose-microsoft-entwickelt-kinect-fuer-die-hand-1504-113667.html

Page 3: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Tag des Bieres

Page 4: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Apache Cordova

Vorstellung

Entwicklung für mobile Endgeräte

Was ist Cordova? - und was nicht?

Entwicklungsumgebungen

Hands-On: Cordova-App

Weitergehende Themen: Hardware, Plugins, Sicherheit, IndexedDB, REST, OAuth, …

Page 5: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

erminas GmbH

Standort: Oldenburg

Gegründet: 2009

Schwerpunkte Professionelle Softwareentwicklung .NET Entwicklung (Web, SharePoint, Server) Mobile (Cordova, Xamarin, Sitrion ONE) Open Text Web Site Management Atlassian Jira/Confluence

Page 6: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

erminas GmbH – Was wir machen Beratung rund um mobile Apps

Welche Technologien? Hybrid oder nativ, was anderes? Was gibt es zu beachten? Testing von Apps (insb. Usability, Performance)

Entwicklung von hybriden Apps Cordova Xamarin

Anbindung von Apps an Backend-Systeme

Partner von Sitrion ONE

Page 7: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

erminas GmbH

Hilmar Bunjes

Christopher Wennhold

Page 8: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Entwicklung für mobile Endgeräte

Page 9: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Möglichkeiten mobiler Entwicklung Wie kann man mobil entwickeln?

Quelle: www.ibm.com

Page 10: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Native Application

Nativ: Entwicklung direkt für eine Plattform

Nutzung der vorgesehenen Sprache Android: Java Android iOS: Swift (früher Objective-C) Windows (Phone): .NET Blackberry: C++/Qt, HTML/JS, ActionScript/AIR, Android

Volle Nutzung der Plattform

Höchste Performance

Kaum Wiederverwendung von Entwicklungen

Page 11: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Web Application

Web: Webseite als App

App-Symbol öffnet Webseite

War mal recht beliebt, hat aber nachgelassen

Alle Nachteile vereint nicht nativ kein offline langsam kein Systemzugriff

Page 12: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Hybrid Application

Cordova

Mischung aus Native und Web Application

Native dort, wo notwendig

Rest HTML/JS

Page 13: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Hybrid Application Sonderfall

Xamarin

Eher Hybrid Development

Entwicklung der Apps in .NET (incl. Async, Generics, …)

Umsetzung in Native Apps

Nutzer merkt keinen Unterschied

Große Teile der Applikation können wiederverwendet werden

GUI Designer (Xamarin.Forms) vorhanden

Sehr breite Nutzerbasis (Entwickler und Unternehmen)

Page 14: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

„Container“ Application

Sitrion ONE

Hub für anfallende Aufgaben / Informationen

Schnelles Entwickeln kleiner Apps / „Micro-App“

Anbindung Backend:SAP, Oracle, SQL Server, salesforce, Office365

Nativ auf Endgeräten

BYOD

Keine Speicherung von Daten außerhalbdes Unternehmens

Schnelles Ausrollen

Page 15: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Apache Cordova

Page 16: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Was ist Cordova?

Apache Cordova is a platform for building native mobile applications using HTML, CSS and JavaScript

und

Apache Cordova is a set of device APIs that allow a mobile app developer to access native device function

PhoneGap Entwickelt von Nitobi 2011 von Adobe aufgekauft Freigabe der Basis an Apache Kommerziell: PhoneGap Build zum App Bau

Page 17: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Also was ist Cordova?

Native Container für Application

Chromeless Browser – Webseite ohne Rahmen

Zugriff auf die Plattform via Interfaces

Sammlung von Plugins

Erweiterungsmöglichkeiten durch Plugins

Page 18: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Zugriff auf System API

JavaScript Cordova System API

Page 19: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Unterstützte Plattformen

Android 2.3+/API10 (bald ab 4+/API14+)

BlackBerry 10

iOS 5+

Windows Phone 8+

Windows 8+

BB < 10 bis 3.2.0

Firefox OS

Amazon Fire OS

Tizen

Ubuntu

Page 20: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Plattform Zugriff (iOS, Android, Win, BB)Accelerometer

Camera

Compass (BB ab 10)

Contacts

File

Geolocation

Media (BB ab 10)

Network

Notification (alert, sound, vibration)

Storage

Page 21: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Vorteile von Cordova

Schneller Einstieg mit HTML/CSS/JS Wissen

Viele Entwickler in dem Bereich

Keine native Entwicklung für mehrere Plattformen

Verwendung von Web-Frameworks (jQuery, AngularJS, …)

Viel Wiederverwendung

Open Source

Page 22: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Nachteile von Cordova

Anwendung ist nicht nativ

User Experience anders als nativ

Anwendung fühlt sich langsamer an

Keine Desktop-Applikation

(Kein Zugriff auf System API, sondern nur über Plugins)

Gewisse Einschränkungen App-Größe Abspielen von Videos (Android)

Page 23: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Entwicklungsumgebungen – CLI

Konsole – Direkt von Apache Cordova

Benötigt: Node.js, git

Plattform-spezifische Projekte werden automatisch erstellt Anpassung über Merges / Hooks möglich

Emulator und Debug Unterstützung

Volle Unterstützung aller Plattformen

Eventuell viel Handarbeit

Freie Wahl der HTML/JS IDE

Page 24: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Entwicklungsumgebungen – Visual Studio Visual Studio 2013 / 2015

„Tools for Apache Cordova“

Kostenlos (wenn VS vorhanden)

Supported (Dev & Debug) Android 2.3.3+ (4.4+ bevorzugt) iOS 6, 7, und 8 (Mac benötigt) Windows 8 and 8.1 Windows Phone 8 and 8.1

Android Emulator integriert

Page 25: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Entwicklungsumgebungen – Visual Studio Sehr einfache Unterstützung

Es funktioniert einfach

Direktes Debugging aus dem VS Auch für iOS!

Tools wie ReSharper direkt integriert

Plugin aus Git installieren noch etwas problematisch

Starke Weiterentwicklung

Tools: https://www.microsoft.com/en-us/download/details.aspx?id=42675

Page 26: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Entwicklungsumgebungen – Eclipse I PhoneGap Entwicklungsumgebung

Eclipse-basierend

Windows, Mac, Linux

Android Emulator kann angeschlossen werden

Debugging

Jede Plattform hat ein eigenes Projekt

Ende 2013 quasi eingestellt

Page 27: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Entwicklungsumgebungen – Eclipse II Eclipse THyM (The Hybrid Mobile)

0.1.0 im Jan 2015 vorgestellt

Juni 2015: 1.0 geplant

Ziel: Neue Eclipse Cordova Plattform

Supported von RedHat

Page 28: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Entwicklungsumgebungen – PhoneGap PhoneGap Desktop App

0.1.1 Beta von Dez 2014

Open Source von Adobe

Windows / Mac

Node.js benötigt

Integration mit PhoneGap Build Tools

Page 29: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Entwicklungsumgebungen – Telerik Telerik AppBuilder

„Integrated Cloud Environment“

Device Simulator für iOS, Windows Phone und Android

Kostenpflichtig

IDE-Auswahl frei

Page 30: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Entwicklungsumgebungen – weitere WebStorm (jetbrains)

NetBeans (Oracle)

Page 31: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Aufbau Cordova App

App erstellen

cordova create test_app

Page 32: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Aufbau Cordova App

Plattformen verwalten

cordova platform ls

Plattformen hinzufügen (nur wenn SDK auch vorhanden ist)

cordova platform add <platform>

Page 33: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Aufbau Cordova App

Anwendung Info

cordova info

Page 34: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Aufbau Cordova App

Anwendung erstellen (platform optional)

cordova build <platform> (=>prepare + compile)

Starten, emulieren oder testen

cordova emulate <platform>

cordova run <platform>

cordova serve

Beispiel Android dir:

Page 35: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Aufbau Cordova App

Einstieg Entwicklung

Anwendung ist im Grunde HTML/CSS/JS

Wichtig: Initialisierung beim Event „deviceready“

Page 36: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Hands-OnErste Cordova Anwendung mit Visual Studio und Tools for Apache Cordova

Page 37: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Pause

Page 38: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Tiefergehende Themen

Page 39: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Cordova Events

deviceready: Cordova (Container + JS geladen) document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() { // Now safe to use device APIs}

pause/resume: Anwendung in den Hintergrund verlagert Bei Android nach Ausführung vorher möglich Bei iOS nur Reaktion nach Aktivierung möglich (+ resign/active für

Lock möglich)

online / offline: Device „denkt“, wir sind online oder offline

backbutton / menubutton / searchbutton Android / Windows Events

Page 40: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Push Notifications

Push Plugin: https://github.com/phonegap-build/PushPlugin

Plattform-spezifische Push Services werden unterstützt

Die Nachrichten werden von einem Server aus geschickt

Diverse Dienste zur Vereinfachung des Handlings Azure Mobile Services Amazon SNS Google Cloud

Page 41: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Bibliotheken

jQuery Mobile Bekannt durch jQuery Einfacher Einstieg

Sencha Touch Basiert auf ExtJS Bringt teilweise UI mit Einstieg komplex

AngularJS / ngTouch Sehr einfache Entwicklung Einstieg „mittel-komplex“

Page 42: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

GUI Elemente

Je nach Anwendung selbst machen oder fertiges Framework

Sehr abhängig vom Aufwand und gewünschter Einarbeitung

Bootstrap: http://getbootstrap.com/

Onsen UI (frei): http://onsen.io AngularJS und jQuery Mobile supported

Supersonic UI (frei): http://www.appgyver.com/supersonic/ui AngularJS supported

Page 43: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Sicherheit

Einsatz typischerweise wie Webseiten

VPN als sicherer Kanal möglich

HTTPS-Verschlüsselung immer notwendig, wenn personalisierte und schützenswerte Informationen Wichtig: Echtes Zertifikat und TLS

OAuth zur Autorisierung mit Hilfe von OAuth-Services

Page 44: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Plugin Entwicklung

Zugriff auf die Hardware und das System mit Plugins

Bereitstellung der nativen APIs als JS Schnittstelle

Beispiel: https://github.com/wildabeast/BarcodeScanner

Page 45: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Speicher / WebStorage

WebStorage Name/Value Pairs: Nur Zeichenketten (also serialisieren) localStorage: Spezifisch für die Origin sessionStorage: Spezifisch für die Session Ähnlich Cookies, aber nicht im HTTP Header Quasi überall unterstützt (IE8+) 5-10 MB Speicherplatz typischerweise

Page 46: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Speicher / Datenbank

Web SQL Database Datenbank im Browser mit SQL-Dialekt FF/IE unterstützen es nicht, mobile Plattformen schon

IndexedDB Ebenfalls DB-ähnliche Speicherung Breit unterstützt in neueren Versionen: Android 4.4+,

IE10+, iOS Speicher

Chrome: 20% von 50% des freien Speichers (wenn überschritten: Alles wird gelöscht) Firefox: Kein Limit, aber BLOBs > 50MB erfordern

Erlaubnis

Page 47: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Speicher / Plugins – File API

Zugriff auf lokales Dateisystem auf allen Plattformen Dateisysteme auf Geräten:

https://github.com/apache/cordova-plugin-file/blob/master/doc/index.md

Beispiel: cordova.file.dataDirectory für allg. Daten Auch temp und cache Verzeichnisse verfügbar

Beispiel lesen: window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function(dir) {

dir.getFile("log.txt", {create:true}, function(file) {…});});

Mehr Beispiele: http://www.raymondcamden.com/2014/11/05/Cordova-Example-Writing-to-a-file

Page 48: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Datenaustausch (REST, OData, …) Nutzung bestehender JavaScript Frameworks

Bspw. http://www.getbreezenow.com/breezejsvar query = breeze.EntityQuery .from("Customers") .where("CompanyName", "startsWith", "A") .orderBy("CompanyName");

Beispiel mit Angular JS folgt

Page 49: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

AngularJS

MVC-Framework bei Google (weiter)entwickelt

Ziel: Dynamische Web-Apps erstellen

Auszeichnung des HTML Codes durch Angular-spezifische Ausdrücke

Zwei-Wege Data-Binding (Model / DOM)

Beispiel:<div ng-app ng-init="qty=1;cost=2">

<b>Invoice:</b><div>Quantity: <input type="number" min="0" ng-

model="qty"></div><div>Costs: <input type="number" min="0"

ng-model="cost"></div><div><b>Total:</b> {{qty * cost | currency}}</div>

</div>

Page 50: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Best Practices

Applikationen immer als Single Page Application (SPA) Neues Laden dauert lange und fühlt sich nicht gut an

Touch Events statt Click Events Click Events werden mobil später gefeuert

Nicht auf Netzwerk verlassen Netzwerk kann immer ausfallen Netzwerk kann immer langsam sein Nie die App darunter leiden lassen online/offline Events sind nicht zuverlässig – Ajax nutzen

Page 51: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Best Practices

Auf Geräten testen Simulatoren / Emulatoren geben Hinweise auf das Gerät Es fühlt sich aber nie so an Mehrere verschiedene Geräte testen

Design Guidelines beachten iOS: https://

developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/index.html

Android: https://developer.android.com/design/index.html WP: https://

msdn.microsoft.com/library/windows/apps/hh465424.aspx BB: http://developer.blackberry.com/design/bb10/

Page 52: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Best Practices

Hooks für verschiedene Plattformen Keine Merges mehr verwenden Soviel wie möglich einheitlich machen (insb. JavaScript) Design sollte Plattform-spezifisch sein

Page 53: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Weitere Web Links

cordova in einer Windows App Zertifikat:

http://cordova.apache.org/news/2014/11/11/windows-cert.html Platform spezifisch: winstore-jscompat:

https://github.com/MsopenTech/winstore-jscompat

Plugins Phonegap Push Notifications: https://github.com/phonegap-

build/PushPlugin Barcode Scanner:

https://github.com/wildabeast/BarcodeScanner

JavaScript Frameworks Angular.js: https://angularjs.org/ Mobile angular.js: http://mobileangularui.com/

Page 54: Mobile Anwendungen mit Apache Cordova

23. Apr 2015

Danke!

[email protected]@erminas.de

Tel.:0441/249 287-0