SlideShare una empresa de Scribd logo
1 de 68
Descargar para leer sin conexión
© 2013 Mayflower GmbH
Thomas Steur I 25. Juni 2013
Native Cross-Platform-Apps
mit Titanium Mobile und Alloy
© 2013 Mayflower GmbH
Titanium Mobile
Ablauf
‣ Was ist Titanium?
‣ Unterschied zu anderen Technologien
‣ Beispiel-Applikation
‣ Alloy-Framework
‣ Deployment
‣ Debugging
‣ Titanium API‘s
‣ Fragen
© 2013 Mayflower GmbH
Vorstellung
@tsteur
‣ Apple / Google / Mobile Fanboy
‣ Senior Developer bei Mayflower
‣ Piwik Mobile Developer
‣ Titanium Mobile Nutzer
seit 4 Jahren
‣ Autor „Titanium Mobile -
Multi Platform Apps mit JavaScript“
© 2013 Mayflower GmbH
eBook
Titanium Mobile
‣ Via Kindle, iTunes & Co
‣ Perfekt für den Einstieg
Wer kennt
Titanium Mobile?
© 2013 Mayflower GmbH
Oder hat sich schon einmal darüber informiert...
Wer verwendet
Titanium Mobile?
© 2013 Mayflower GmbH
Oder hat es schon einmal versucht...
Was ist
Titanium Mobile?
© 2013 Mayflower GmbH
Und warum könnte es überhaupt interessant sein?
© 2013 Mayflower GmbH
Apps mit JavaScript
Cross-Platform
© 2013 Mayflower GmbH
Geht doch schon lange...
Schon mal was von
Browser gehört?
© 2013 Mayflower GmbH
Nativ!
Der Unterschied... Titanium ist... - wait for it -
© 2013 Mayflower GmbH
Aber das ist doch...
PhoneGap
auch...
© 2013 Mayflower GmbH
Und was bringt es mir?
Was heisst Nativ?
Native
Performance
© 2013 Mayflower GmbH
Native
UI-Widgets
© 2013 Mayflower GmbH
© 2013 Mayflower GmbH
UI-Widgets
Ein nativer Dialog
© 2013 Mayflower GmbH
UI-Widgets
Weitere UI-Widgets
© 2013 Mayflower GmbH
UI-Widgets
Anpassbarkeit
© 2013 Mayflower GmbH
Themengruppe
So funktioniert‘s
© 2013 Mayflower GmbH
Apache License V2
Lizenz
Titanium im
Vergleich
© 2013 Mayflower GmbH
© 2013 Mayflower GmbH
Titanium im Vergleich
Native App-Entwicklung
Pro Titanium...
‣ Sie entwickeln Ihre Apps nicht für jede Plattform neu
‣ App läuft auf allen Plattformversionen
‣ Lediglich JavaScript-Kenntnisse nötig
‣ Schnellere Entwicklung
‣ Kann $$$ sparen
© 2013 Mayflower GmbH
Titanium im Vergleich
Native App-Entwicklung
Aber...
‣ "Write once, run anywhere" stimmt nur zu ca. 90%
‣ Viele, aber nicht alle nativen API‘s verwendbar
‣ Weniger Flexibilität
‣ Nicht die volle Kontrolle
© 2013 Mayflower GmbH
Titanium im Vergleich
Web-Applikationen
Pro Titanium...
‣ Native UI-Widgets
‣ Bessere User-Experience
‣ Mehr Hardwarefunktionalitäten
‣ Native Performance
‣ Source-Code Verschlüsselung
© 2013 Mayflower GmbH
Titanium im Vergleich
Web-Applikationen
Aber...
‣ Höhere Einarbeitung
‣ Build-Time ist einiges länger
‣ Release-Management
© 2013 Mayflower GmbH
Titanium kann nativ und Web! Warum nicht von allem profitieren?
Was nun?
© 2013 Mayflower GmbH
Veranstaltungen in Berlin
Beispiel
© 2013 Mayflower GmbH
var window = Ti.UI.createWindow({
  title: "Veranstaltungen in Berlin"
});
window.open();
var table = Ti.UI.createTableView();
if ("iphone" == Ti.Platform.osname) {
table.style =
Ti.UI.iPhone.TableViewStyle.GROUPED;
}
window.add(table);
© 2013 Mayflower GmbH
var query = 'select * from upcoming.venue
where location="berlin"';
Ti.Yahoo.yql(query, displayVenues);
function displayVenues(result) {
result.venue.forEach(function (venue) {
table.appendRow({
title: venue.name,
hasChild: true,
venue: venue});
});
}
© 2013 Mayflower GmbH
table.addEventListener('click', select);
function select (event) {
var detailWin = require('eventdetail');
detailWin.open(event.row.venue);
}
© 2013 Mayflower GmbH
var win1 = Ti.UI.createWindow({title: venue.name});
var win2 = Ti.UI.createWindow({title: venue.name});
var tab1 = Ti.UI.createTab({
title: "Webseite",
icon: "web.png",
window: win1
});
var tab2 = Ti.UI.createTab({
title: "Karte",
icon: "karte.png",
window: win2
});
var tabGroup = Ti.UI.createTabGroup({
tabs: [tab1, tab2]
});
tabGroup.open();
Die Detailansicht
© 2013 Mayflower GmbH
var website = Ti.UI.createWebView({
url: venue.url
});
win1.add(website);
Die Webseitenansicht
© 2013 Mayflower GmbH
var mapview = Ti.Map.createView();
mapview.addAnnotation({
latitude: venue.latitude,
longitude: venue.longitude,
title: venue.name,
subtitle: venue.address
});
win2.add(mapview);
Die Kartenansicht
© 2013 Mayflower GmbH
MVC-Framework für Titanium
Alloy
© 2013 Mayflower GmbH
views/mywidget.xml
Alloy - View
<Alloy>
<Window id="foo">
<Label platform="ios,mobileweb" formFactor="tablet"
class="text">Label Text</Label>
<Button title="Hello World"
onClick="helloworld"/>
</Window>
</Alloy>
© 2013 Mayflower GmbH
controllers/mywidget.js
Alloy - Controller
function helloworld() {
alert('Hallo Welt');
}
// Öffne das Fenster
$.foo.open();
© 2013 Mayflower GmbH
styles/mywidget.tss
Alloy - Style
"#foo": {
title: L("Hello World"),
backgroundColor: "white"
}
".text": {
color: "red",
font: {fontSize: 24}
}
"Button[formFactor=tablet]": {
backgroundColor: "red"
}
© 2013 Mayflower GmbH
Oder was Alloy daraus macht
Ohne Alloy...
if (true && !
Alloy.isTablet) {
$.__views.__alloyId0 =
Ti.UI.createLabel({
color: "red",
font: {fontSize: 24},
text: "Label Text",
id: "__alloyId0"
});
$.__views.index.add($._
_views.__alloyId0);
}
$.__views.myButtonID =
Ti.UI.createButton({
backgroundColor:
"red",
id: "myButtonID",
title: "Hello World"
});
$.__views.index.add($._
_views.myButtonID);
function Controller() {
function helloworld() {
alert("Hello World");
}
require("alloy/controllers/
BaseController").apply(this,
Array.prototype.slice.call(argu
ments));
arguments[0] ? arguments[0]
["__parentSymbol"] : null;
arguments[0] ? arguments[0]
["$model"] : null;
arguments[0] ? arguments[0]
["__itemTemplate"] : null;
var $ = this;
var exports = {};
var __defers = {};
$.__views.index =
Ti.UI.createWindow({
title: "Hello World",
backgroundColor:
"white",
id: "index"
});
$.__views.index &&
$.addTopLevelView($.__views.ind
ex);
$.__views.myButtonID.addEven
tListener("click",
helloworld) :
__defers["$.__views.myButton
ID!click!helloworld"] =
true;
exports.destroy =
function() {};
_.extend($, $.__views);
exports.open = function() {
$.index.open();
};
__defers["$.__views.myButton
ID!click!helloworld"] &&
$.__views.myButtonID.addEven
tListener("click",
helloworld);
_.extend($, exports);
}
var Alloy =
require("alloy"), Backbone =
Alloy.Backbone, _ = Alloy._;
module.exports = Controller;
© 2013 Mayflower GmbH
models/user.js
Alloy - Model
exports.definition = {
configuration : {
columns: {
username:"string",
password:"string"
},
adapter: {
type: "sql",
collection_name: "user"
},
},
...
};
© 2013 Mayflower GmbH
Alloy
Widgets
<Require type="widget"
src="com.appcelerator.bouncylogo"
id="logo" />
© 2013 Mayflower GmbH
Test & Release
Deployment
© 2013 Mayflower GmbH
Deployment
Titanium Studio
© 2013 Mayflower GmbH
Deployment
Titanium Studio
© 2013 Mayflower GmbH
Deployment
Titanium Studio
© 2013 Mayflower GmbH
Deployment
Titanium Studio
Android iOS
© 2013 Mayflower GmbH
titanium build --platform ios --device-family ipad --target simulator
Titanium CLI
© 2013 Mayflower GmbH
Logaufrufe, Crash Logs und interaktives Debugging
Debugging
© 2013 Mayflower GmbH
Debugging
Interaktives Debugging
© 2013 Mayflower GmbH
Wenn es mal wieder etwas mehr sein darf
Titanium erweitern
© 2013 Mayflower GmbH
Daten speichern und abrufen
Arbeiten mit Daten
© 2013 Mayflower GmbH
Arbeiten mit Daten
Application Properties
var key = "sound_enabled";
if (!Ti.App.Properties.hasProperty(key)) {
Ti.App.Properties.setBool(key, true);
}
var soundEnabled = Ti.App.Properties.getBool(key)
Ein Key/Value-Store für App-bezogene Eigenschaften.
© 2013 Mayflower GmbH
Arbeiten mit Daten
SQLite
var db = Ti.Database.install("/user.db", "userDB");
var resultSet = db.execute("SELECT * FROM user");
Eine leichtgewichtige Datenbank.
© 2013 Mayflower GmbH
Arbeiten mit Daten
HTTP Requests
var xhr = Ti.Network.createHTTPClient({
onload: onSuccess,
onerror: onError,
timeout: 5000
});
xhr.open("GET", "https://api.github.com/events");
xhr.send();
Mit Webservices kommunizieren
© 2013 Mayflower GmbH
Kontextbewusstsein, das Erspüren der aktuellen Situation eines
Benutzers und die Reaktion darauf
Standortdienste
© 2013 Mayflower GmbH
Standortdienste
Geolocation
// Einmalige Abfrage der Position
Ti.Geolocation.getCurrentPosition(callback);
// Verfolgen der Position
Ti.Geolocation.addEventListener("location", callback);
function callback(event) {
// Genauigkeit in Meter, Höhe in Meter
// Breitengrad / Längengrad
// Aktuelle Geschwindigkeit und mehr
}
© 2013 Mayflower GmbH
Standortdienste
Kompass
// Einmalige Abfrage der Richtung
Ti.Geolocation.getCurrentHeading(callback);
// Verfolgen der Richtung
Ti.Geolocation.addEventListener("heading", callback);
function callback(event) {
// Genauigkeit in plattformspezifischer Einheit
// Deklination in Grad östlich vom
magnetischen und geografischen Norden
// Geomagnetische Daten (X / Y / Z) und mehr
}
© 2013 Mayflower GmbH
Standortdienste
Karten anzeigen
var mapView = Ti.Map.createView({
userLocation: true,
mapType: Ti.Map.STANDARD_TYPE,
region: {latitude: 49.417108,
longitude: 11.114382,
latitudeDelta: 0.35,
longitudeDelta: 0.80}
});
win.add(mapView);
© 2013 Mayflower GmbH
Standortdienste
Karten anzeigen
‣ Routen
‣ Annotationen
‣ Labels
‣ Hybridansicht
‣ Kartenansicht
‣ Luftbildansicht
© 2013 Mayflower GmbH
Bilder, Fotos, Videos & Co
Medien
© 2013 Mayflower GmbH
Medien
Bilder und Videos aufnehmen
Ti.Media.showCamera({
success: onSuccess,
cancel: onCancel,
error: onError,
saveToPhotoGallery: true,
allowEditing: true
});
© 2013 Mayflower GmbH
Medien
Ton aufnehmen
var recorder = Ti.Media.createAudioRecorder({
compression: Ti.Media.AUDIO_FORMAT_AAC,
format: Ti.Media.AUDIO_FILEFORMAT_MP3
});
recorder.start();
var file = recorder.stop();
© 2013 Mayflower GmbH
Medien
Video abspielen
var videoPlayer = Ti.Media.createVideoPlayer({
url: "bigBuckBunny.m4v"
});
videoPlayer.start();
© 2013 Mayflower GmbH
Medien
Audio abspielen
var audioStream = Ti.Media.createAudioPlayer({
url: "http://example.com/music.mp3"
});
audioStream.start();
© 2013 Mayflower GmbH
Das Nutzerverhalten messen, um Ihre App zu optimieren.
Analytics
© 2013 Mayflower GmbH
Analytics
Ein Beispiel
// Eine Navigation findet statt
Ti.Analytics.navEvent("Dashboard", "Accounts");
// Ein benutzerdefiniertes Event
Ti.Analytics.featureEvent(
"report.date.changed",
{period: "week"}
);
© 2013 Mayflower GmbH
Themengruppe
Weitere Funktionen
‣ Kontakte auslesen und schreiben
‣ Zugriff auf den Kalender (nur Android)
‣ Integration von Facebook Connect, Graph API und Dialoge
‣ Internationalisierung
‣ Accelerometer
‣ Gestures
‣ Animationen
‣ Accessibility-Hilfen
‣ Multitasking (Background Tasks)
‣ Viele Events, beispielsweise, wenn die App in den Hintergrund geht
‣ Auslesen von Systemdaten wie Batteriestatus, Gerätemodell und Betriebssystem
‣ Arbeiten mit XML, Streams und Binärdaten
‣ Androids Intents und Services
‣ Push Notifications und iAd (nur iOS)
© 2013 Mayflower GmbH
Ressourcen
Getting started
‣ KitchenSink
‣ API-Referenz und Dokumentation
‣ Forum
© 2013 Mayflower GmbH
Fragen?
© 2013 Mayflower GmbH
Kontakt
Vielen Dank für Ihr Interesse!
Mayflower GmbH
Gneisenaustraße 10/11
97074 Würzburg
thomas.steur@mayflower.de
Tel.: +49 931 359 65 11 55
Thomas Steur

Más contenido relacionado

La actualidad más candente

Neos CMS - Das CMS der nächsten Generation - IPC 2015
Neos CMS - Das CMS der nächsten Generation - IPC 2015Neos CMS - Das CMS der nächsten Generation - IPC 2015
Neos CMS - Das CMS der nächsten Generation - IPC 2015die.agilen GmbH
 
Html5 workshop Peter Voringer
Html5 workshop   Peter VoringerHtml5 workshop   Peter Voringer
Html5 workshop Peter VoringerMayflower GmbH
 
Programmieren für das Web - Vorlesung 13
Programmieren für das Web - Vorlesung 13Programmieren für das Web - Vorlesung 13
Programmieren für das Web - Vorlesung 13Kay Strobach
 
Cross Platform ist ein alter Hut, Zeit ihn abzustauben - XPCon
Cross Platform ist ein alter Hut, Zeit ihn abzustauben - XPConCross Platform ist ein alter Hut, Zeit ihn abzustauben - XPCon
Cross Platform ist ein alter Hut, Zeit ihn abzustauben - XPConChristian Heilmann
 
CMS-Technologien für Next Generation Websites
CMS-Technologien für Next Generation WebsitesCMS-Technologien für Next Generation Websites
CMS-Technologien für Next Generation WebsitesProdosh Banerjee
 
Microsoft und die Open Source Community - Leaving the death star behind
Microsoft und die Open Source Community - Leaving the death star behindMicrosoft und die Open Source Community - Leaving the death star behind
Microsoft und die Open Source Community - Leaving the death star behindChristian Heilmann
 
#wpdm - Plugin-Entwicklung für den TinyMCE
#wpdm - Plugin-Entwicklung für den TinyMCE#wpdm - Plugin-Entwicklung für den TinyMCE
#wpdm - Plugin-Entwicklung für den TinyMCENico Danneberg
 
Responsive Webdesign in a Nutshell - webinale 2015
Responsive Webdesign in a Nutshell - webinale 2015Responsive Webdesign in a Nutshell - webinale 2015
Responsive Webdesign in a Nutshell - webinale 2015die.agilen GmbH
 

La actualidad más candente (8)

Neos CMS - Das CMS der nächsten Generation - IPC 2015
Neos CMS - Das CMS der nächsten Generation - IPC 2015Neos CMS - Das CMS der nächsten Generation - IPC 2015
Neos CMS - Das CMS der nächsten Generation - IPC 2015
 
Html5 workshop Peter Voringer
Html5 workshop   Peter VoringerHtml5 workshop   Peter Voringer
Html5 workshop Peter Voringer
 
Programmieren für das Web - Vorlesung 13
Programmieren für das Web - Vorlesung 13Programmieren für das Web - Vorlesung 13
Programmieren für das Web - Vorlesung 13
 
Cross Platform ist ein alter Hut, Zeit ihn abzustauben - XPCon
Cross Platform ist ein alter Hut, Zeit ihn abzustauben - XPConCross Platform ist ein alter Hut, Zeit ihn abzustauben - XPCon
Cross Platform ist ein alter Hut, Zeit ihn abzustauben - XPCon
 
CMS-Technologien für Next Generation Websites
CMS-Technologien für Next Generation WebsitesCMS-Technologien für Next Generation Websites
CMS-Technologien für Next Generation Websites
 
Microsoft und die Open Source Community - Leaving the death star behind
Microsoft und die Open Source Community - Leaving the death star behindMicrosoft und die Open Source Community - Leaving the death star behind
Microsoft und die Open Source Community - Leaving the death star behind
 
#wpdm - Plugin-Entwicklung für den TinyMCE
#wpdm - Plugin-Entwicklung für den TinyMCE#wpdm - Plugin-Entwicklung für den TinyMCE
#wpdm - Plugin-Entwicklung für den TinyMCE
 
Responsive Webdesign in a Nutshell - webinale 2015
Responsive Webdesign in a Nutshell - webinale 2015Responsive Webdesign in a Nutshell - webinale 2015
Responsive Webdesign in a Nutshell - webinale 2015
 

Destacado

Vom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftVom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftMayflower GmbH
 
Pair Programming Mythbusters
Pair Programming MythbustersPair Programming Mythbusters
Pair Programming MythbustersMayflower GmbH
 
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...Mayflower GmbH
 
The innerHTML Apocalypse
The innerHTML ApocalypseThe innerHTML Apocalypse
The innerHTML ApocalypseMario Heiderich
 

Destacado (7)

Responsive Webdesign
Responsive WebdesignResponsive Webdesign
Responsive Webdesign
 
Usability im web
Usability im webUsability im web
Usability im web
 
Vom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftVom Entwickler zur Führungskraft
Vom Entwickler zur Führungskraft
 
Pair Programming Mythbusters
Pair Programming MythbustersPair Programming Mythbusters
Pair Programming Mythbusters
 
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
 
The innerHTML Apocalypse
The innerHTML ApocalypseThe innerHTML Apocalypse
The innerHTML Apocalypse
 
Agile Anti-Patterns
Agile Anti-PatternsAgile Anti-Patterns
Agile Anti-Patterns
 

Similar a Native Cross-Platform-Apps mit Titanium Mobile und Alloy

Die Zukunft der Webstandards - Webinale 31.05.2010
Die Zukunft der Webstandards - Webinale 31.05.2010Die Zukunft der Webstandards - Webinale 31.05.2010
Die Zukunft der Webstandards - Webinale 31.05.2010Patrick Lauke
 
Mobile Web Development from Scratch
Mobile Web Development from ScratchMobile Web Development from Scratch
Mobile Web Development from ScratchNokiaAppForum
 
Einführung in die webOS Programmierung
Einführung in die webOS ProgrammierungEinführung in die webOS Programmierung
Einführung in die webOS ProgrammierungMarkus Leutwyler
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...Marc Müller
 
Rapid Application Development mit Grails und AngularJS
Rapid Application Development mit Grails und AngularJSRapid Application Development mit Grails und AngularJS
Rapid Application Development mit Grails und AngularJSOPITZ CONSULTING Deutschland
 
Mobile Anwendungen mit SenchaTouch
Mobile Anwendungen mit SenchaTouchMobile Anwendungen mit SenchaTouch
Mobile Anwendungen mit SenchaTouchMayflower GmbH
 
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)Christian Janz
 
Automatisierung im DWH - Sich das Leben erleichern mit dem ODI
Automatisierung im DWH - Sich das Leben erleichern mit dem ODIAutomatisierung im DWH - Sich das Leben erleichern mit dem ODI
Automatisierung im DWH - Sich das Leben erleichern mit dem ODIOPITZ CONSULTING Deutschland
 
Sencha Touch & PhoneGap
Sencha Touch & PhoneGapSencha Touch & PhoneGap
Sencha Touch & PhoneGapStefan Kolb
 
Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Jürg Stuker
 
Präsentation webservices
Präsentation webservicesPräsentation webservices
Präsentation webservicesxxtesaxx
 
Microsoft Azure in der Unternehmenspraxis
Microsoft Azure in der UnternehmenspraxisMicrosoft Azure in der Unternehmenspraxis
Microsoft Azure in der UnternehmenspraxisPOINT. Consulting GmbH
 
Android Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickelnAndroid Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickelnAndré Krämer
 
Webinar: Was die Top eCommerce Firmen über Ihre Performance auf Web- & Mobile
Webinar: Was die Top eCommerce Firmen über Ihre Performance auf Web- & MobileWebinar: Was die Top eCommerce Firmen über Ihre Performance auf Web- & Mobile
Webinar: Was die Top eCommerce Firmen über Ihre Performance auf Web- & MobileSOASTA
 
Was die Top eCommerce Firmen über Ihre Performance auf Web & Mobile
Was die Top eCommerce Firmen über Ihre Performance auf Web & MobileWas die Top eCommerce Firmen über Ihre Performance auf Web & Mobile
Was die Top eCommerce Firmen über Ihre Performance auf Web & MobileSOASTA
 
E-Commerce Architektur aus Sicht eines Dienstleisters, IPC 2013
E-Commerce Architektur aus Sicht eines Dienstleisters, IPC 2013E-Commerce Architektur aus Sicht eines Dienstleisters, IPC 2013
E-Commerce Architektur aus Sicht eines Dienstleisters, IPC 2013Stefan Willkommer
 
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...Oliver Busse
 
Sencha Touch und PhoneGap
Sencha Touch und PhoneGapSencha Touch und PhoneGap
Sencha Touch und PhoneGapIndiginox
 

Similar a Native Cross-Platform-Apps mit Titanium Mobile und Alloy (20)

jQuery Mobile
jQuery MobilejQuery Mobile
jQuery Mobile
 
Die Zukunft der Webstandards - Webinale 31.05.2010
Die Zukunft der Webstandards - Webinale 31.05.2010Die Zukunft der Webstandards - Webinale 31.05.2010
Die Zukunft der Webstandards - Webinale 31.05.2010
 
Mobile Web Development from Scratch
Mobile Web Development from ScratchMobile Web Development from Scratch
Mobile Web Development from Scratch
 
Einführung in die webOS Programmierung
Einführung in die webOS ProgrammierungEinführung in die webOS Programmierung
Einführung in die webOS Programmierung
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
 
Rapid Application Development mit Grails und AngularJS
Rapid Application Development mit Grails und AngularJSRapid Application Development mit Grails und AngularJS
Rapid Application Development mit Grails und AngularJS
 
Mobile Anwendungen mit SenchaTouch
Mobile Anwendungen mit SenchaTouchMobile Anwendungen mit SenchaTouch
Mobile Anwendungen mit SenchaTouch
 
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
 
Automatisierung im DWH - Sich das Leben erleichern mit dem ODI
Automatisierung im DWH - Sich das Leben erleichern mit dem ODIAutomatisierung im DWH - Sich das Leben erleichern mit dem ODI
Automatisierung im DWH - Sich das Leben erleichern mit dem ODI
 
Sencha Touch & PhoneGap
Sencha Touch & PhoneGapSencha Touch & PhoneGap
Sencha Touch & PhoneGap
 
Forms 12c und der Oracle SB
Forms 12c und der Oracle SBForms 12c und der Oracle SB
Forms 12c und der Oracle SB
 
Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006
 
Präsentation webservices
Präsentation webservicesPräsentation webservices
Präsentation webservices
 
Microsoft Azure in der Unternehmenspraxis
Microsoft Azure in der UnternehmenspraxisMicrosoft Azure in der Unternehmenspraxis
Microsoft Azure in der Unternehmenspraxis
 
Android Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickelnAndroid Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickeln
 
Webinar: Was die Top eCommerce Firmen über Ihre Performance auf Web- & Mobile
Webinar: Was die Top eCommerce Firmen über Ihre Performance auf Web- & MobileWebinar: Was die Top eCommerce Firmen über Ihre Performance auf Web- & Mobile
Webinar: Was die Top eCommerce Firmen über Ihre Performance auf Web- & Mobile
 
Was die Top eCommerce Firmen über Ihre Performance auf Web & Mobile
Was die Top eCommerce Firmen über Ihre Performance auf Web & MobileWas die Top eCommerce Firmen über Ihre Performance auf Web & Mobile
Was die Top eCommerce Firmen über Ihre Performance auf Web & Mobile
 
E-Commerce Architektur aus Sicht eines Dienstleisters, IPC 2013
E-Commerce Architektur aus Sicht eines Dienstleisters, IPC 2013E-Commerce Architektur aus Sicht eines Dienstleisters, IPC 2013
E-Commerce Architektur aus Sicht eines Dienstleisters, IPC 2013
 
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...
 
Sencha Touch und PhoneGap
Sencha Touch und PhoneGapSencha Touch und PhoneGap
Sencha Touch und PhoneGap
 

Más de Mayflower GmbH

Salt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientSalt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientMayflower GmbH
 
Plugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debuggingPlugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debuggingMayflower GmbH
 
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...Mayflower GmbH
 
Shoeism - Frau im Glück
Shoeism - Frau im GlückShoeism - Frau im Glück
Shoeism - Frau im GlückMayflower GmbH
 
Bessere Software schneller liefern
Bessere Software schneller liefernBessere Software schneller liefern
Bessere Software schneller liefernMayflower GmbH
 
Von 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 SprintsVon 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 SprintsMayflower GmbH
 
Agilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce BreakfastAgilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce BreakfastMayflower GmbH
 
Mongo DB - Segen oder Fluch
Mongo DB - Segen oder FluchMongo DB - Segen oder Fluch
Mongo DB - Segen oder FluchMayflower GmbH
 
Test-Driven JavaScript Development IPC
Test-Driven JavaScript Development IPCTest-Driven JavaScript Development IPC
Test-Driven JavaScript Development IPCMayflower GmbH
 
PHP Dependency und Paket Management mit Composer
PHP Dependency und Paket Management mit ComposerPHP Dependency und Paket Management mit Composer
PHP Dependency und Paket Management mit ComposerMayflower GmbH
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenMayflower GmbH
 
Max Köhler - Real-Time-Monitoring
Max Köhler - Real-Time-MonitoringMax Köhler - Real-Time-Monitoring
Max Köhler - Real-Time-MonitoringMayflower GmbH
 
Yii - Next level PHP Framework von Florian Facker
Yii - Next level PHP Framework von Florian FackerYii - Next level PHP Framework von Florian Facker
Yii - Next level PHP Framework von Florian FackerMayflower GmbH
 
REST - Hypermedia und Sicherheit
REST - Hypermedia und SicherheitREST - Hypermedia und Sicherheit
REST - Hypermedia und SicherheitMayflower GmbH
 
Zend Framework meets Doctrine 2
Zend Framework meets Doctrine 2Zend Framework meets Doctrine 2
Zend Framework meets Doctrine 2Mayflower GmbH
 

Más de Mayflower GmbH (20)

Why and what is go
Why and what is goWhy and what is go
Why and what is go
 
Produktive teams
Produktive teamsProduktive teams
Produktive teams
 
Salt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientSalt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native Client
 
Plugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debuggingPlugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debugging
 
Rewrites überleben
Rewrites überlebenRewrites überleben
Rewrites überleben
 
JavaScript Security
JavaScript SecurityJavaScript Security
JavaScript Security
 
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
 
Shoeism - Frau im Glück
Shoeism - Frau im GlückShoeism - Frau im Glück
Shoeism - Frau im Glück
 
Bessere Software schneller liefern
Bessere Software schneller liefernBessere Software schneller liefern
Bessere Software schneller liefern
 
Von 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 SprintsVon 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 Sprints
 
Agilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce BreakfastAgilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce Breakfast
 
Mongo DB - Segen oder Fluch
Mongo DB - Segen oder FluchMongo DB - Segen oder Fluch
Mongo DB - Segen oder Fluch
 
Schnelle Geschäfte
Schnelle GeschäfteSchnelle Geschäfte
Schnelle Geschäfte
 
Test-Driven JavaScript Development IPC
Test-Driven JavaScript Development IPCTest-Driven JavaScript Development IPC
Test-Driven JavaScript Development IPC
 
PHP Dependency und Paket Management mit Composer
PHP Dependency und Paket Management mit ComposerPHP Dependency und Paket Management mit Composer
PHP Dependency und Paket Management mit Composer
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js Grundlagen
 
Max Köhler - Real-Time-Monitoring
Max Köhler - Real-Time-MonitoringMax Köhler - Real-Time-Monitoring
Max Köhler - Real-Time-Monitoring
 
Yii - Next level PHP Framework von Florian Facker
Yii - Next level PHP Framework von Florian FackerYii - Next level PHP Framework von Florian Facker
Yii - Next level PHP Framework von Florian Facker
 
REST - Hypermedia und Sicherheit
REST - Hypermedia und SicherheitREST - Hypermedia und Sicherheit
REST - Hypermedia und Sicherheit
 
Zend Framework meets Doctrine 2
Zend Framework meets Doctrine 2Zend Framework meets Doctrine 2
Zend Framework meets Doctrine 2
 

Native Cross-Platform-Apps mit Titanium Mobile und Alloy

  • 1. © 2013 Mayflower GmbH Thomas Steur I 25. Juni 2013 Native Cross-Platform-Apps mit Titanium Mobile und Alloy
  • 2. © 2013 Mayflower GmbH Titanium Mobile Ablauf ‣ Was ist Titanium? ‣ Unterschied zu anderen Technologien ‣ Beispiel-Applikation ‣ Alloy-Framework ‣ Deployment ‣ Debugging ‣ Titanium API‘s ‣ Fragen
  • 3. © 2013 Mayflower GmbH Vorstellung @tsteur ‣ Apple / Google / Mobile Fanboy ‣ Senior Developer bei Mayflower ‣ Piwik Mobile Developer ‣ Titanium Mobile Nutzer seit 4 Jahren ‣ Autor „Titanium Mobile - Multi Platform Apps mit JavaScript“
  • 4. © 2013 Mayflower GmbH eBook Titanium Mobile ‣ Via Kindle, iTunes & Co ‣ Perfekt für den Einstieg
  • 5. Wer kennt Titanium Mobile? © 2013 Mayflower GmbH Oder hat sich schon einmal darüber informiert...
  • 6. Wer verwendet Titanium Mobile? © 2013 Mayflower GmbH Oder hat es schon einmal versucht...
  • 7. Was ist Titanium Mobile? © 2013 Mayflower GmbH Und warum könnte es überhaupt interessant sein?
  • 8. © 2013 Mayflower GmbH Apps mit JavaScript Cross-Platform
  • 9. © 2013 Mayflower GmbH Geht doch schon lange... Schon mal was von Browser gehört?
  • 10. © 2013 Mayflower GmbH Nativ! Der Unterschied... Titanium ist... - wait for it -
  • 11. © 2013 Mayflower GmbH Aber das ist doch... PhoneGap auch...
  • 12. © 2013 Mayflower GmbH Und was bringt es mir? Was heisst Nativ?
  • 15. © 2013 Mayflower GmbH UI-Widgets Ein nativer Dialog
  • 16. © 2013 Mayflower GmbH UI-Widgets Weitere UI-Widgets
  • 17. © 2013 Mayflower GmbH UI-Widgets Anpassbarkeit
  • 18. © 2013 Mayflower GmbH Themengruppe So funktioniert‘s
  • 19. © 2013 Mayflower GmbH Apache License V2 Lizenz
  • 20. Titanium im Vergleich © 2013 Mayflower GmbH
  • 21. © 2013 Mayflower GmbH Titanium im Vergleich Native App-Entwicklung Pro Titanium... ‣ Sie entwickeln Ihre Apps nicht für jede Plattform neu ‣ App läuft auf allen Plattformversionen ‣ Lediglich JavaScript-Kenntnisse nötig ‣ Schnellere Entwicklung ‣ Kann $$$ sparen
  • 22. © 2013 Mayflower GmbH Titanium im Vergleich Native App-Entwicklung Aber... ‣ "Write once, run anywhere" stimmt nur zu ca. 90% ‣ Viele, aber nicht alle nativen API‘s verwendbar ‣ Weniger Flexibilität ‣ Nicht die volle Kontrolle
  • 23. © 2013 Mayflower GmbH Titanium im Vergleich Web-Applikationen Pro Titanium... ‣ Native UI-Widgets ‣ Bessere User-Experience ‣ Mehr Hardwarefunktionalitäten ‣ Native Performance ‣ Source-Code Verschlüsselung
  • 24. © 2013 Mayflower GmbH Titanium im Vergleich Web-Applikationen Aber... ‣ Höhere Einarbeitung ‣ Build-Time ist einiges länger ‣ Release-Management
  • 25. © 2013 Mayflower GmbH Titanium kann nativ und Web! Warum nicht von allem profitieren? Was nun?
  • 26. © 2013 Mayflower GmbH Veranstaltungen in Berlin Beispiel
  • 27. © 2013 Mayflower GmbH var window = Ti.UI.createWindow({   title: "Veranstaltungen in Berlin" }); window.open(); var table = Ti.UI.createTableView(); if ("iphone" == Ti.Platform.osname) { table.style = Ti.UI.iPhone.TableViewStyle.GROUPED; } window.add(table);
  • 28. © 2013 Mayflower GmbH var query = 'select * from upcoming.venue where location="berlin"'; Ti.Yahoo.yql(query, displayVenues); function displayVenues(result) { result.venue.forEach(function (venue) { table.appendRow({ title: venue.name, hasChild: true, venue: venue}); }); }
  • 29. © 2013 Mayflower GmbH table.addEventListener('click', select); function select (event) { var detailWin = require('eventdetail'); detailWin.open(event.row.venue); }
  • 30. © 2013 Mayflower GmbH var win1 = Ti.UI.createWindow({title: venue.name}); var win2 = Ti.UI.createWindow({title: venue.name}); var tab1 = Ti.UI.createTab({ title: "Webseite", icon: "web.png", window: win1 }); var tab2 = Ti.UI.createTab({ title: "Karte", icon: "karte.png", window: win2 }); var tabGroup = Ti.UI.createTabGroup({ tabs: [tab1, tab2] }); tabGroup.open(); Die Detailansicht
  • 31. © 2013 Mayflower GmbH var website = Ti.UI.createWebView({ url: venue.url }); win1.add(website); Die Webseitenansicht
  • 32. © 2013 Mayflower GmbH var mapview = Ti.Map.createView(); mapview.addAnnotation({ latitude: venue.latitude, longitude: venue.longitude, title: venue.name, subtitle: venue.address }); win2.add(mapview); Die Kartenansicht
  • 33. © 2013 Mayflower GmbH MVC-Framework für Titanium Alloy
  • 34. © 2013 Mayflower GmbH views/mywidget.xml Alloy - View <Alloy> <Window id="foo"> <Label platform="ios,mobileweb" formFactor="tablet" class="text">Label Text</Label> <Button title="Hello World" onClick="helloworld"/> </Window> </Alloy>
  • 35. © 2013 Mayflower GmbH controllers/mywidget.js Alloy - Controller function helloworld() { alert('Hallo Welt'); } // Öffne das Fenster $.foo.open();
  • 36. © 2013 Mayflower GmbH styles/mywidget.tss Alloy - Style "#foo": { title: L("Hello World"), backgroundColor: "white" } ".text": { color: "red", font: {fontSize: 24} } "Button[formFactor=tablet]": { backgroundColor: "red" }
  • 37. © 2013 Mayflower GmbH Oder was Alloy daraus macht Ohne Alloy... if (true && ! Alloy.isTablet) { $.__views.__alloyId0 = Ti.UI.createLabel({ color: "red", font: {fontSize: 24}, text: "Label Text", id: "__alloyId0" }); $.__views.index.add($._ _views.__alloyId0); } $.__views.myButtonID = Ti.UI.createButton({ backgroundColor: "red", id: "myButtonID", title: "Hello World" }); $.__views.index.add($._ _views.myButtonID); function Controller() { function helloworld() { alert("Hello World"); } require("alloy/controllers/ BaseController").apply(this, Array.prototype.slice.call(argu ments)); arguments[0] ? arguments[0] ["__parentSymbol"] : null; arguments[0] ? arguments[0] ["$model"] : null; arguments[0] ? arguments[0] ["__itemTemplate"] : null; var $ = this; var exports = {}; var __defers = {}; $.__views.index = Ti.UI.createWindow({ title: "Hello World", backgroundColor: "white", id: "index" }); $.__views.index && $.addTopLevelView($.__views.ind ex); $.__views.myButtonID.addEven tListener("click", helloworld) : __defers["$.__views.myButton ID!click!helloworld"] = true; exports.destroy = function() {}; _.extend($, $.__views); exports.open = function() { $.index.open(); }; __defers["$.__views.myButton ID!click!helloworld"] && $.__views.myButtonID.addEven tListener("click", helloworld); _.extend($, exports); } var Alloy = require("alloy"), Backbone = Alloy.Backbone, _ = Alloy._; module.exports = Controller;
  • 38. © 2013 Mayflower GmbH models/user.js Alloy - Model exports.definition = { configuration : { columns: { username:"string", password:"string" }, adapter: { type: "sql", collection_name: "user" }, }, ... };
  • 39. © 2013 Mayflower GmbH Alloy Widgets <Require type="widget" src="com.appcelerator.bouncylogo" id="logo" />
  • 40. © 2013 Mayflower GmbH Test & Release Deployment
  • 41. © 2013 Mayflower GmbH Deployment Titanium Studio
  • 42. © 2013 Mayflower GmbH Deployment Titanium Studio
  • 43. © 2013 Mayflower GmbH Deployment Titanium Studio
  • 44. © 2013 Mayflower GmbH Deployment Titanium Studio Android iOS
  • 45. © 2013 Mayflower GmbH titanium build --platform ios --device-family ipad --target simulator Titanium CLI
  • 46. © 2013 Mayflower GmbH Logaufrufe, Crash Logs und interaktives Debugging Debugging
  • 47. © 2013 Mayflower GmbH Debugging Interaktives Debugging
  • 48. © 2013 Mayflower GmbH Wenn es mal wieder etwas mehr sein darf Titanium erweitern
  • 49. © 2013 Mayflower GmbH Daten speichern und abrufen Arbeiten mit Daten
  • 50. © 2013 Mayflower GmbH Arbeiten mit Daten Application Properties var key = "sound_enabled"; if (!Ti.App.Properties.hasProperty(key)) { Ti.App.Properties.setBool(key, true); } var soundEnabled = Ti.App.Properties.getBool(key) Ein Key/Value-Store für App-bezogene Eigenschaften.
  • 51. © 2013 Mayflower GmbH Arbeiten mit Daten SQLite var db = Ti.Database.install("/user.db", "userDB"); var resultSet = db.execute("SELECT * FROM user"); Eine leichtgewichtige Datenbank.
  • 52. © 2013 Mayflower GmbH Arbeiten mit Daten HTTP Requests var xhr = Ti.Network.createHTTPClient({ onload: onSuccess, onerror: onError, timeout: 5000 }); xhr.open("GET", "https://api.github.com/events"); xhr.send(); Mit Webservices kommunizieren
  • 53. © 2013 Mayflower GmbH Kontextbewusstsein, das Erspüren der aktuellen Situation eines Benutzers und die Reaktion darauf Standortdienste
  • 54. © 2013 Mayflower GmbH Standortdienste Geolocation // Einmalige Abfrage der Position Ti.Geolocation.getCurrentPosition(callback); // Verfolgen der Position Ti.Geolocation.addEventListener("location", callback); function callback(event) { // Genauigkeit in Meter, Höhe in Meter // Breitengrad / Längengrad // Aktuelle Geschwindigkeit und mehr }
  • 55. © 2013 Mayflower GmbH Standortdienste Kompass // Einmalige Abfrage der Richtung Ti.Geolocation.getCurrentHeading(callback); // Verfolgen der Richtung Ti.Geolocation.addEventListener("heading", callback); function callback(event) { // Genauigkeit in plattformspezifischer Einheit // Deklination in Grad östlich vom magnetischen und geografischen Norden // Geomagnetische Daten (X / Y / Z) und mehr }
  • 56. © 2013 Mayflower GmbH Standortdienste Karten anzeigen var mapView = Ti.Map.createView({ userLocation: true, mapType: Ti.Map.STANDARD_TYPE, region: {latitude: 49.417108, longitude: 11.114382, latitudeDelta: 0.35, longitudeDelta: 0.80} }); win.add(mapView);
  • 57. © 2013 Mayflower GmbH Standortdienste Karten anzeigen ‣ Routen ‣ Annotationen ‣ Labels ‣ Hybridansicht ‣ Kartenansicht ‣ Luftbildansicht
  • 58. © 2013 Mayflower GmbH Bilder, Fotos, Videos & Co Medien
  • 59. © 2013 Mayflower GmbH Medien Bilder und Videos aufnehmen Ti.Media.showCamera({ success: onSuccess, cancel: onCancel, error: onError, saveToPhotoGallery: true, allowEditing: true });
  • 60. © 2013 Mayflower GmbH Medien Ton aufnehmen var recorder = Ti.Media.createAudioRecorder({ compression: Ti.Media.AUDIO_FORMAT_AAC, format: Ti.Media.AUDIO_FILEFORMAT_MP3 }); recorder.start(); var file = recorder.stop();
  • 61. © 2013 Mayflower GmbH Medien Video abspielen var videoPlayer = Ti.Media.createVideoPlayer({ url: "bigBuckBunny.m4v" }); videoPlayer.start();
  • 62. © 2013 Mayflower GmbH Medien Audio abspielen var audioStream = Ti.Media.createAudioPlayer({ url: "http://example.com/music.mp3" }); audioStream.start();
  • 63. © 2013 Mayflower GmbH Das Nutzerverhalten messen, um Ihre App zu optimieren. Analytics
  • 64. © 2013 Mayflower GmbH Analytics Ein Beispiel // Eine Navigation findet statt Ti.Analytics.navEvent("Dashboard", "Accounts"); // Ein benutzerdefiniertes Event Ti.Analytics.featureEvent( "report.date.changed", {period: "week"} );
  • 65. © 2013 Mayflower GmbH Themengruppe Weitere Funktionen ‣ Kontakte auslesen und schreiben ‣ Zugriff auf den Kalender (nur Android) ‣ Integration von Facebook Connect, Graph API und Dialoge ‣ Internationalisierung ‣ Accelerometer ‣ Gestures ‣ Animationen ‣ Accessibility-Hilfen ‣ Multitasking (Background Tasks) ‣ Viele Events, beispielsweise, wenn die App in den Hintergrund geht ‣ Auslesen von Systemdaten wie Batteriestatus, Gerätemodell und Betriebssystem ‣ Arbeiten mit XML, Streams und Binärdaten ‣ Androids Intents und Services ‣ Push Notifications und iAd (nur iOS)
  • 66. © 2013 Mayflower GmbH Ressourcen Getting started ‣ KitchenSink ‣ API-Referenz und Dokumentation ‣ Forum
  • 67. © 2013 Mayflower GmbH Fragen?
  • 68. © 2013 Mayflower GmbH Kontakt Vielen Dank für Ihr Interesse! Mayflower GmbH Gneisenaustraße 10/11 97074 Würzburg thomas.steur@mayflower.de Tel.: +49 931 359 65 11 55 Thomas Steur