Cross-Platform Mobile Apps

Ähnliche Dokumente
App Entwicklung mit Hilfe von Phonegap. Web Advanced II - SS 2012 Jennifer Beckmann

MOBILE ENTERPRISE APPLICATION PLATFORM (MEAP)

Mobile Apps mit. React-Native. Manuel

Mobile Apps mit. React-Native. Manuel

Dokumentation für Popup (lightbox)

MOBILE ENTERPRISE APPLICATION PLATFORM (MEAP)

Eine App, viele Plattformen

MOBILE ON POWER MACHEN SIE IHRE ANWENDUNGEN MOBIL?!

Zentrale Informatik. Cross-platform Apps. Andrea Grössbauer David Meier. 11/11/15 Lunchveranstaltungen HS16 - Crossplatform Apps 1

Cross-Platform Mobile Development mit Xamarin Mark

Cross-Platform Apps mit HTML5/JS/CSS/PhoneGap

Entwicklung und Integration mobiler Anwendungen. <Speaker> Oracle Deutschland B.V. & Co. KG

Cross Platform Development mit SharePoint

JS goes mobile: Eine Übersicht. Frederik von Berg w11k / thecodecampus

» Technologien, Trends, Visionen Architekturen für mobile Anwendungen

Mobile Apps mit DSLs. und entfernter Codegenerierung. Codierst Du noch oder generierst Du schon? Powered by

Cross-Platform Mobile mit.net

Präsentation Von Laura Baake und Janina Schwemer

Cross Plattform App Developement. Simon Groth

Jörg Neumann Acando GmbH

Ein UI in zwei Welten - Controls in HTML5 und WPF. Timo Korinth

Mobile Development in.net mit Xamarin

Responsive Web Design

Ein mobiler Electronic Program Guide

Öko APEX Hybride Lösung für Smartphones mit APEX und PhoneGap

Online-Publishing mit HTML und CSS für Einsteigerinnen

Einführung in die Cross-Plattform Entwicklung Das Intel XDK

How To: Wie entwickle ich mit SharpDevelop Anwendungen für die PocketPC-Platform

JavaScript Frameworks für Mobile

FULLSCREEN. ShoPWArE VollBIlD-PluGIn. handbuch

Möglichkeiten, Vorteile und Grenzen der Cross-Plattform-Entwicklung

Einführung Responsive Webdesign

Apps entwickeln mit HTML und Javascript

Perspektiven: Spiele in ios

Möglichkeiten, Vorteile und Grenzen der Cross-Plattform-Entwicklung

Responsive Webdesign

Good Practice: Entwicklung einer Smartphone App mit Unterstützung von Open Text WSM. OpenText Websolutions Usergroup,

APEX und Phonegap? Das kann APEX doch mit HTML5! APEX connect Düsseldorf, 10. Juni 2015 Daniel Horwedel. APEX und Phonegap?

Relution Enterprise Appstore. Enable Enterprise Mobility. 2.5 Release Note

Workshop I. Technische Differenzierung mobiler Kommunikationslösungen am Beispiel NPO/NGO Kommunikation. 7. Juni 2011

Mobile App development mit Xamarin. Christian Hassa Andreas Willich TechTalk Software AG

Mobile Software. Oliver Lietz Dipl.-Ing. Oliver Lietz Mobile Software. 2.Termin. Weitere Plattformen Einrichtung Entwicklungsumgebungen

Mobile Applications. Adrian Nägeli, CTO bitforge AG

JavaScript in Drupal

Vaadin TouchKit. W3L AG

Autorensysteme für mobile Anwendungen - Totgesagte leben länger. Prof. Dr. Michael Bauer Autorensysteme

Agile Testautomatisierung im XING Mobile Team

Appery.io Mobile Apps schnell und einfach entwickeln

Mit Cloud Power werden Sie zum

TUT1 Javascript-Frameworks zum Erstellen von plattformunabhängigen mobilen Anwendungen

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Einführung in die Cross-Plattform Entwicklung Zugriff auf Sensoren mit dem Intel XDK

Webdesign Grundlagen. Michael Kraft, M.A. WS 2012/2013

Agon Solutions. The native web mobile Architekturen mit HTML5 und PhoneGap. Ihre Prozesse in besten Händen.

ADF Mobile konkret Best Practices Live erklärt. Jan Ernst

Content-Verwertungsmodelle und ihre Umsetzung in mobilen Systemen

Naviki GPS-Anwendungsentwicklung für Mobiltelefone

Firefox Add-ons. Präsentation in WAP WS09/10 von Christoph ASCHBERGER, Andreas BERTOLIN, Robert MUTTER und Yunzhou XU

Webseiten werden mobil Planung geht vor

Programmierung mobiler Geräte

WEBAPPS MEDIEN ZWISCHEN TECHNOLOGIE UND GESELLSCHAFT PROF. DR. MANFRED THALLER JONAS SCHOPHAUS UNI KÖLN WS 2012

Die Geschichte und die Entwicklung der Apps

Ein mobiler Electronic Program Guide für Android

TechCommToGo (DE) conbody section title TechCommToGo - so einfach wie Kaffee machen. / title / section. section p image / p

Use Cases, Mockups, Prototyping Von der Idee zur App

Integration mobiler Endgeräte in Medizinprodukte und Medizintechnik-nahe Produkte

Moderne Benutzeroberflächen für SAP Anwendungen

PLATTFORMÜBERGREIFENDE ENTWICKLUNG VON APPS

Native App Design. Entwicklungsmethoden & deren Einfluss auf die Usability. Master-Seminar WS12/13 Karsten Nolte. Freitag, 8.

Mobile Lösungen im industriellen Umfeld

Agile Testautomatisierung im XING Mobile Team

Marcus Ross. PhoneGap. Mobile Cross-Plattform-Entwicklung mit Apache Cordova & Co. dpunkt.verlag

Enterprise Mobility, Live! Pascal Kaufmann, Swisscom IT Services AG 12. Juni 2013

re-lounge GmbH MEDIENBÜRO

AdOps Technische Spezifikationen

Vom Prototypen zur Anwendung

Mobile Angebote Strategie einer Verwaltung. Freie und Hansestadt Hamburg Dr. Ursula Dankert

Architekturen mobiler Multi Plattform Apps

Mobile Plattformen. Die mobile E-Marketingstrategie von Schweiz Tourismus

Mobile Anwendungen mit Qooxdoo Mobile erstellen

Android Apps entwickeln

Mobile Apps: Was verbirgt sich hinter dem Hype?

1 Definition der Selektoren Einbinden der CSS 3 Möglichkeiten Farbangaben Schriftformatierung Abstände...

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Firmenpräsentation. Stand: Bornholdt Lee GmbH Erste Brunnenstraße Hamburg

From Agile Project Management to Continuous Integration Thomas Bergmüller

Informatik Sommercamp 2012

Christian Immler. Der Crashkurs für Android, und Windows Phone. Mit 309 Abbildungen

Dr. Thomas Meinike Hochschule Merseburg

Android-Testautomatisierung mit Robotium

HFT App. Prof. Dr. Gerhard Wanner Michael Kolb B.Sc. Sonntag, 26. Mai 13

Programmierschnittstelle API 2 für CMS Day Communiqué: Beispiele Standort

Transkript:

Cross-Platform Mobile Apps 05. Juni 2013

Martin Wittemann Master of Science (2009) Arbeitet bei 1&1 Internet AG Head of Frameworks & Tooling Tech Lead von qooxdoo

Plattformen Java ME 12 % Rest 7 % Android 26 % ios 55 % Mobile-Phone + Tablet, Stand: 21.05.2013, Quelle: http://netmarketshare.com/operating-system-market-share.aspx?qprid=8&qpcustomd=1&qpct=3

Plattformen Java ME 12 % Rest 7 % ios & Andoid 81 % Mobile-Phone + Tablet, Stand: 21.05.2013, Quelle: http://netmarketshare.com/operating-system-market-share.aspx?qprid=8&qpcustomd=1&qpct=3

Plattformen

Plattformen Objective-C Java

Plattformen Webtechnologien

Plattformen Webtechnologien

Webtechnologien HTML JAVASCRIPT CSS

Mobile Apps Device API / App Stores Cross-Platform

Mobile Apps Device API / App Stores Native Apps Cross-Platform

Mobile Apps Device API / App Stores Native Apps Mobile Website Cross-Platform

Mobile Apps Device API / App Stores Native Apps Hybrid Apps Mobile Website Cross-Platform

Mobile Apps Device API / App Stores Native Apps Hybrid Apps Mobile Website Cross-Platform

Native Entwicklung SDK Code Test Build SDK Code Test Build

Webtechnologien Build SDK Code Test Build

Webtechnologien SDK Code Test Build Build Build Build Build...

Herausforderungen Programmierung der Oberfläche

Programmierung der Oberfläche Normal: Pressed:

Programmierung der Oberfläche <!DOCTYPE html> <html> <head> <style type="text/css" media="screen">.button { -webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; border: 1px solid #B4B4B4; background-color: white; color: #666; cursor: pointer; font-weight: 700; text-align: center; padding: 2px 20px; margin-top: 4px; height: 30px; width: auto; line-height: 30px; font-size: 15px; font-family: Helvetica; } Normal: Pressed:.button:active { background-image:-webkit-gradient(linear,center top,center bottom,from( #4583fd),to(#194ae4)); background-image:-webkit-linear-gradient(top, #4583fd, #194ae4); background-image:-moz-linear-gradient(top, #4583fd, #194ae4); background-image:linear-gradient(to bottom, #4583fd, #194ae4); color:#fff } </style> </head> <body> <div class="button">button</div> </body> </html>

Herausforderungen Programmierung der Oberfläche Cross-Browser Unterschiede

Cross-Browser Unterschiede

Cross-Browser Unterschiede! Unterschiedliche Versionen können zu unterschiedlichen Bugs / Feature-Sets führen [1] Quelle: http://caniuse.com/#feat=transforms3d

Cross-Browser Unterschiede! Unterschiedliche Versionen können zu unterschiedlichen Bugs / Feature-Sets führen Beispiel 3D Transforms Unterstützt von ios und ab Android 3.0 [1] Feature Checks zur Laufzeit --> zukunftssicher [1] Quelle: http://caniuse.com/#feat=transforms3d

Cross-Browser Unterschiede! Unterschiedliche Versionen können zu unterschiedlichen Bugs / Feature-Sets führen Beispiel 3D Transforms Unterstützt von ios und ab Android 3.0 [1] Feature Checks zur Laufzeit --> zukunftssicher [1] Quelle: http://caniuse.com/#feat=transforms3d

Herausforderungen Programmierung der Oberfläche Cross-Browser Unterschiede Probleme mit dem Scrolling

Scrolling-Probleme fix beweglich fix

Scrolling-Probleme fix beweglich fix

Scrolling-Probleme fix beweglich fix position: fixed bzw. overflow: scroll

Scrolling-Probleme fix beweglich fix position: fixed bzw. overflow: scroll! Natives scrolling ab ios 5.0 und Android 3.0 [1] [1] Quelle: http://caniuse.com/#feat=css-fixed

Herausforderungen Programmierung der Oberfläche Cross-Browser Unterschiede Probleme mit dem Scrolling Beschränkter Zugriff auf die Hardware Keine Distribution über die AppStores

PhoneGap

PhoneGap Verpacken

PhoneGap Verpacken Installieren

Herausforderungen Programmierung der Oberfläche Cross-Browser Unterschiede Probleme mit dem Scrolling Beschränkter Zugriff auf die Hardware Keine Distribution über die AppStores

Frameworks qooxdoo

Frameworks qooxdoo Cross-Browser Kompatibilität Umfangreiche Widget-Sets Vorgefertigte Themes Scrolling via iscroll Eigene Scrolling-Lösung - Natives Scrolling LGPL / EPL - GPL / Commercial MIT

qooxdoo Mobile Beispiel JavaScript var page = new qx.ui.mobile.page.navigationpage(); page.settitle("hello World"); page.addlistener("initialize", function() { var button = new qx.ui.mobile.form.button("button"); button.addlistener("tap", function() { alert("hello World"); }); page.getcontent().add(button); });

Sencha-Touch Beispiel JavaScript Ext.define('Button.view.Main', { extend: 'Ext.Container', xtype: 'main', requires: ['Ext.TitleBar' ], config: { items: [{ title: 'Welcome', items: [{ docked: 'top', xtype: 'titlebar', title: 'Hello World' }, { title : 'Button', items : { xtype : 'button', text : 'Button', margin: 10, handler: function () { alert("hello World"); } } }] } ] } });

jquery-mobile Beispiel HTML <div data-role="header" data-position="fixed"> <h1>hello World</h1> </div> <a id="button" href="#" data-role="button" style="margin: 10px;"> Button </a> JavaScript $("#button").on("tap", function() { alert("hello World"); });

Widgets

Vordefinierte Themes ios Android Custom

Entwicklung Objekt-Orientierung Data-Binding Entwicklungsumgebung Tooling

Objekt-Orientierung qooxdoo qx.class.define("bicycle", { extend : Vehicle, members : { speed : 0, speedup : function(increment) { this.speed += increment; } } }); class Bicycle extends Vehicle { } int speed = 0; void speedup(int increment) { speed += increment; }

Objekt-Orientierung

Data-Binding Model View

Data-Binding Model binding View

Data-Binding Model binding View

Data-Binding Webservice Store Model binding

Data-Binding Webservice load Store Model binding

Data-Binding Webservice load Store create Model binding

Data-Binding JSON-P Service Mobile-List clb([{!! 'date': '2013-04-21',!! 'time': '11:00:00',!! 'hometeam': 'Ladenburg',!! 'awayteam': 'Bretten',!! 'homescore': '26',!! 'awayscore': '19'! },{!! 'date': '2013-04-28',!! 'time': '15:00:00',!! 'hometeam': 'Bretten',!! 'awayteam': 'Villingendorf',!! 'homescore': '19',!! 'awayscore': '8'! },{!! 'date': '2013-05-05',!! 'time': '15:00:00',!! 'hometeam': 'Bretten',!! 'awayteam': 'Freiburg',!! 'homescore': '24', Data-Binding

Data-Binding JSON-P Service clb([{!! 'date': '2013-04-21',!! 'time': '11:00:00',!! 'hometeam': 'Ladenburg',!! 'awayteam': 'Bretten',!! 'homescore': '26',!! 'awayscore': '19'! },{!! 'date': '2013-04-28',!! 'time': '15:00:00',!! 'hometeam': 'Bretten',!! 'awayteam': 'Villingendorf',!! 'homescore': '19',!! 'awayscore': '8'! },{!! 'date': '2013-05-05',!! 'time': '15:00:00',!! 'hometeam': 'Bretten',!! 'awayteam': 'Freiburg',!! 'homescore': '24', Data-Binding var store = new qx.data.store.jsonp(url); // View var page = new qx.ui.mobile.page.navigationpage(); page.addlistener("initialize", function() { var list = new qx.ui.mobile.list.list({ configureitem : function(item, data, row) { } }); Mobile-List item.settitle( data.gethometeam() + " vs. " + data.getawayteam() ); store.bind("model", list, "model"); page.getcontent().add(list); });

Data-Binding JSON-P Service clb([{!! 'date': '2013-04-21',!! 'time': '11:00:00',!! 'hometeam': 'Ladenburg',!! 'awayteam': 'Bretten',!! 'homescore': '26',!! 'awayscore': '19'! },{!! 'date': '2013-04-28',!! 'time': '15:00:00',!! 'hometeam': 'Bretten',!! 'awayteam': 'Villingendorf',!! 'homescore': '19',!! 'awayscore': '8'! },{!! 'date': '2013-05-05',!! 'time': '15:00:00',!! 'hometeam': 'Bretten',!! 'awayteam': 'Freiburg',!! 'homescore': '24', Data-Binding var store = new qx.data.store.jsonp(url); // View var page = new qx.ui.mobile.page.navigationpage(); page.addlistener("initialize", function() { var list = new qx.ui.mobile.list.list({ configureitem : function(item, data, row) { } }); Mobile-List item.settitle( data.gethometeam() + " vs. " + data.getawayteam() ); store.bind("model", list, "model"); page.getcontent().add(list); });

Data-Binding JSON-P Service clb([{!! 'date': '2013-04-21',!! 'time': '11:00:00',!! 'hometeam': 'Ladenburg',!! 'awayteam': 'Bretten',!! 'homescore': '26',!! 'awayscore': '19'! },{!! 'date': '2013-04-28',!! 'time': '15:00:00',!! 'hometeam': 'Bretten',!! 'awayteam': 'Villingendorf',!! 'homescore': '19',!! 'awayscore': '8'! },{!! 'date': '2013-05-05',!! 'time': '15:00:00',!! 'hometeam': 'Bretten',!! 'awayteam': 'Freiburg',!! 'homescore': '24', Data-Binding var store = new qx.data.store.jsonp(url); // View var page = new qx.ui.mobile.page.navigationpage(); page.addlistener("initialize", function() { var list = new qx.ui.mobile.list.list({ configureitem : function(item, data, row) { } }); Mobile-List item.settitle( data.gethometeam() + " vs. " + data.getawayteam() ); store.bind("model", list, "model"); page.getcontent().add(list); });

Data-Binding JSON-P Service clb([{!! 'date': '2013-04-21',!! 'time': '11:00:00',!! 'hometeam': 'Ladenburg',!! 'awayteam': 'Bretten',!! 'homescore': '26',!! 'awayscore': '19'! },{!! 'date': '2013-04-28',!! 'time': '15:00:00',!! 'hometeam': 'Bretten',!! 'awayteam': 'Villingendorf',!! 'homescore': '19',!! 'awayscore': '8'! },{!! 'date': '2013-05-05',!! 'time': '15:00:00',!! 'hometeam': 'Bretten',!! 'awayteam': 'Freiburg',!! 'homescore': '24', Data-Binding var store = new qx.data.store.jsonp(url); // View var page = new qx.ui.mobile.page.navigationpage(); page.addlistener("initialize", function() { var list = new qx.ui.mobile.list.list({ configureitem : function(item, data, row) { } }); Mobile-List item.settitle( data.gethometeam() + " vs. " + data.getawayteam() ); store.bind("model", list, "model"); page.getcontent().add(list); });

Development JS

Development JS run

Development JS run error

Development JS run debugger

Dev Tools Settings

Tooling

Tooling create JS

Tooling create JS var x = 123; function a() { return true;

Tooling LOG Warning: x is g Warning: unused Warning:... lint create JS var x = 123; function a() { return true;

Tooling LOG Warning: x is g Warning: unused Warning:... lint create JS var x = 123; function a() { return true; test Test

Tooling LOG Warning: x is g Warning: unused Warning:... lint api API create JS var x = 123; function a() { return true; test Test

Tooling LOG Warning: x is g Warning: unused Warning:... lint api API create JS var x = 123; function a() { return true; test Test build JS var x=123;func tion a(){retur n true;}

Tooling LOG Warning: x is g Warning: unused Warning:... lint api API create JS var x = 123; function a() { return true; test Test build JS var x=123;func tion a(){retur n true;} PhoneGap App

Fazit Webtechnologien und Frameworks... sind geeignet um mobile Apps zu schreiben ermöglichen Multi-Platform-Lösungen reduzieren Entwicklungsaufwände machen Spaß!

Danke @wittemann martin.wittemann@1und1.de http://qooxdoo.org