MTC10 Tag 3

Der letzte Tag der MTC in Mainz beginnt ruhig mit einer Tasse Cafe und etwas Saft. Der Regen ausserhalb der Halle macht Lust auf die Sessions. 

Impressionen finden sich auf meinem Flickr Account hier -> Flickr

1 Session heute ;) 100 Smartphones 1 Bedienkonzept

Usability ist wichtig - News? 

Usability = Discoverability + Learnability + Simplicity

Auffinden der Bedienelemente, dieApp lernen, für den User “Vorentscheiden” == welche 20% Features sind die wichtigen? 

Bandbreite von Apps wächst, damit auch die Anforderungen an die Entwickler bzw an die Entwicklung.

Was ist die Best Practice? Eigenes App Konzept & Design oder doch Usability von der Plattform adaptieren?

Beispiel Facebook -> ist auf vielen Plattformen vertreten

Es macht Sinn die gemeinsamen Bedienelemente verschidener Plattformen verwendet. 

UI Guideline Vorgaben machen bedingt Sinn (Apple) 

App Konzeption fällt bei Android “teurer” aus als am iPhone wegen fehlenden Guidelines und mehr Freiheiten -> mehr Meinungen

Palm ist Usability Musterschüler: Usability Guidelines etc.. 

Bada.. hmm.. noch eine Plattform, platziert mittig zu iOS und Android!? Zurück Geste verwirrend.. 

WinPhone 7 : Panorama Apps, Hubs.. interessant

Guidelines sind im Trend, geben und nehmen zwischen App Designern und Guideline Schreibern. Erleichtern einiges, aber schränken ebenso ein -> Man wird wohl auf allen Plattformen neu konzeptionieren müssen. 

Session: WebApp eine Alternative?

Webkit ist DIE RenderingEngine für mobile Browser. HTML5 + “Friedns” kommt ;) und WebKit kanns interpretieren.

Heile Welt? Nein, das Testen auf versch. Plattformen bleibt nicht aus da versch. Versionen von WebKit im Umlauf sind (bzw sich jeweils anders verhalten pro Plattform).

WebApp Entwicklung ist nicht schneller als eine native App zu entwickeln (im Vergleich zur iOS AppEntwicklung).

Liegt an Dokumentation und API von Apple. Danke. 

WebApp Entwicklung ist agiler. Kein Appstore Account nötig, deployen auf versch. Geräte usw.. WebApp kann man sich im Entwicklungsprozess schon ansehen. -> agiler Ansatz von schnellem deployen und testen ist mit WebApps gegeben. 

Tadaaa: Win7 Phone wird “die meisten” Features von HTML5 nicht unterstützen -> in der nächsten Version.

Apple pusht offene Techniken -> Hinterrgund dazu ist unklar. 

Macht eine mobile Webseite Sinn? —> Ja.

+++ Plattform übergreifend, keine AppStore abhängigkeit, keine Versionsschleifen, offene Technologie, SEO Webseiten sind erreichbar 

—- Leute suchen im AppStore nach der App for that.. Diese App kann aber WebApp promoten

WebApp zur kurzfristigen Nutzung, native App zur langfristigen Nutzung (mehr features, integration von FB usw. )

Fazit: am besten noch 2-Gleisig fahren. Native App macht noch Sinn, mit den Fähigkeiten von HTML5+ werden WebApp kommen. 

@Zweigleisigkeit: Man kann und sollte bei den richtigen Features sparen und die Vorteile der versch. Technologien nutzen.

Keynote: Augmented Reality - Die Zukunft

Wahnsinns Präsentation. Viele Ideen vorgestellt, von was möglich ist, und was kommen wird. 

Session: Plattformübergreifende App Entwicklung - ein Vergleich

UI verändert sich mit der Art der Handhabung (1 Hand, 2 Hände .. ).

Mobile Web Apps —> eigene Webseiten, deren Fähigkeiten sich auch Unterscheiden können.

openappmkt.com als Beispiel: sieht aus als würde man eine native App installieren (leider wie es aussieht nur für iPhone)

WebApp hat (noch) keinen Zugriff auf Hardware. Neue Web Technologien bieten schon sehr viele Möglichkeiten (Perspektivenkorrekturen usw.. ). 

Für den User zählt nur die “User Experience”. 

Für unterschiedliche Telefone unterschiedliche Parameter beachten. 

Tools:

iWebKit, iUI, jQTouch

Sencha Touch: programmatisches Framework mit viel JS

Q4: noch nicht heraussen, aber an jQuery angelehnt

PhoneGap: freies Framework für mehrere Plattformen (Code Beispiel) 

Appcelerator: Webview der JS Code interpretiert, UI wird Plattformspezifisch angesprochen -> betrifft neben Layout auch HW Funktionen -> (iPhone App hat Back-Button, während Android den HW Back Button verwendet und dieser in der App nicht mehr dargestellt werden muss)

rhomobile: ruby ;) 

Nachteil bei Appcelerator sind Verzögerungen bei neuen Releases.

Die ganzen Frameworks scheinen fürs iPhone optimiert zu sein.

Monetization:

schwer bei WebApps, leichter natürlich bei nativen Apps. 

hybride Apps: native App ist ein Browser und verbindet sich mit einer WebApp.

Generated Apps

XMLVM (Cross Compiler)

eigenen Generator bauen ist auch eine Alternative?  (appmob) !großer Aufwand am Anfang

@frankpr got it right. For anything used often we need an optimized native app that is interacting with web based services. #mtc10

Keine Technologie ist richtig gut. Praxis wird eine Mischlösung empfohlen. :( meh

Mittelfristig wird doch alles Web sein


MTC10 Tag 2

Die Slides der Redner gibt es übrigens ab 30.9. über die Intellibook Software zum Download

Session iOS4

mal sehn was es neues gibt

iOS Desk, Mobile, Server statt Mac OS etc.. ?? 

Vorteil: Abstraktion von der Hardware (keine Treiberprogrammierung) a la Konsolen.. ^^

Schichten werden gezeigt.. im Grunde nichts neues.. Aber eine schöne Architektur.

  • Cocoa Touch
  • Media
  • Core Serices
  • Core OS

erstaunlich was mit WebApps alles geht (JQTouch, iSpirit .. )  > können so aussehen wie native Apps. 

Anforderungen an die native App Entwicklung:

  • Mac mit Mac OS X
  • Obj-C Kenntnisse
  • Mitgliedschaft Apple Dev Connection Account
  • Mitgliedschaft iPhone Dev Account

§3.3.1 native App muss in Obj-C entwickelt werden

iPad Aufläsung 960x640 ~ 320x460 auf iPhone!? 

iOS “Features”

APN - Apple Pusch Notification

APN = (Apps können im Hintergrund benachrichtigt werden, kleines Zahlensymbol, kurze Msg etc.. )

App muss für APN freigeschalten werden

Serverinfrastruktur notwendig welche Nachrichten verschickt.. 

“Multitasking” welches sich allerdings nur Anfühlt als ob

  • Hintergrundmusik
  • VOIP
  • Fast App Switching
  • Local Notification
  • Task Completion
  • GPS

Zustände müssen gesetzt werden. (UIApplicationExistsOnSuspend)

Folders

Ja, hier ist glaub ich alles klar. 

iBooks

nah..

GameCenter

Spieleplattform von Apple

Neue Bibliotheken

  • Event Kit: ermöglicht Zugriff auf Kalender, Addressbuch etc.. 
  • Core Motion: Zugriff auf Motion Events (zB Schütteln etc.. alles was mit Bewegen des Gerätes ausgelöst werden kann -> Visitenkarte auf ein anderes Mobile “schütteln” )
  • Core Telephony: Zugriff auf Dienstanbieter des Telefons - Freischalten von Diensten welche nur für bestimmte Anbieter bestimmt sind
  • iAd: Entwicklung braucht Entwicklerkenntnisse. Framework iAd JS. Budget dafür sollte 6-7 stellig sein um Werbungen schalten zu können
  • Quicklook: Framework QLPreviewontroller dem einfach der Inhalt gegeben wird. Sehr bequem: Office, iWork Dokumente können so einfach und schnell angezeigt werden
  • GCD (Grand Central Dispatch): Parallelisierungsframework nach dem Prinzip von Thread Pool Patterns. Ausführung von Block Objekten

XCode 4 preview

Single Window IDE mit integrietem Interface Builder

Session 2: iOS Caching fällt aus und wird durch Core Data ersetzt

Vorschau auf mögliche Apps und Fragen dazu. 

Wie lade ich Daten Asynchron?

Wie Geräte über Bonjour verbinden?

Bilder mit OpenGL bearbeiten (sieht toll aus)

Wie werden Sounds abgespielt?

Wie einfache Oberflächen selbst zeichnen? 

Wie den Accelerometer-Daten nutzen?

Wie iPhone Apps testen?

Lernt aus dem Sample Code.

Persistenz mit Core Data

Daten am iPhone speichern (fürher über SQLite) 

Was wird gezeigt:

  1. Datenmodellierung
  2. Daten speichern/laden
  3. Tabellenanzeige
  4. Performance Optimierung

1) Datenmodellierung

XCode neues Projekt -> Use Core Data for Storage

Datenmodellierung passiert GRAFISCH in XCode. nice

  • Entities entsprechen Klassen
  • welche Properties haben
  • Attribute speichern Werte
  • Relationships speichern Referenzen auf Instanzen von Entities

“Value Transformer Name” gibt an wie das Objekt wieder ausgelesen wird (wie es herauskommt) zB UIImage

2) Speichern und Laden

Instanzen von Entities: NSManagedObject (MO)

Notwendig dazu noch: NSManagedContext (MOC)

dazu muss man einen Core Data Stack initialisieren

… hier auf die Folien warten … 

Persistenz Store gibt Datenhaltung an: in der Regel wird SQLite genutzt -> XML und Binär muss immer vollständig geladen werden, was Speicherungünstig ist.

Schönerer Umgang: eigene Klassen für Entities in ManagedObjectClass

Code wird lesbarer und man kann PropertySyntax verwenden ->

newEvent.timestamp = [..]

3) Tabellenanzeigen

frc (FetchRequestController) delegate UITable setzen und dann Fetch ausführen.

Wenn sich Daten geändert haben lassen sie sich leicht aktualisieren. 

4) Performance

Fetch lädt alle Objekte mit allen Attributen (Faults), Relationships werden erst beim ersten Zugriff geladen

Partial Faults: [fetchRequest setPropertiesToFetch: [NSArray arrayWithObject@name”]];

Hier werden alle Objekte geladen aber nur noch das Attribut “name”. Der Rest kommt wenn man darauf zugreift.

Batching: wenn man nicht alle Objekte auf einmal braucht -> 10.000 in der Table, nur 10 angezeigt -> batching. 

Prefetching: Umgekehrter Weg zu Batching, wenn Relationships zur Anzeige benötigt  werden (zB alle Fotos für einen Ort).

Section Cache: für eine Tabelle mit Sections kann ein Cache eingerichtet werden

Advanced: 

  • Sortierung: max. 1 Kriterium, bei 2 geht Performance schon deutlich in die Knie
  • Index anlegen: beschleunigt Sortierung
  • Section Information redundant speichern, nicht über Methode berechnen

Session: iPhone sicher im Unternehmen einsetzen

good.com stellt sich vor.. Sieht nach Marketingveranstaltung aus.. Schade.

Session: Unit Testing bei der Entwicklung von iPhone Apps

2 Arten: Application Tests (laufen auf iPhone), Logic Tests (laufen im Simulator)

Beispiel App: Aufbau mit Singleton Manager, dateUtil, Parser etc.. Halbwegs Basic und verständlich.

  • Unit Tests in XCode verlangen ein neues Target -> Add new Target -> Unit Test Bundle
  • Als Base SDK muss iPhone Simulator eingestellt sein da wir dort testen wollen.
  • New File -> Obj-C Test Case Class -> “SingletonManagerTest.m” keine Header Datei notwendig (Box). Muss selbst gebaut werden.
  • Target noch ändern auf LogicTests
  • #import <SenTestingKit/SenTestingKit.h>
  • Klasse erbt von @interface SingletonManagerTest ; SenTestCase

Testmethode:

-(void) testSingletonManagerClass {

  STAsserEquals(@”a”, @”b”, @”a =b”);

}

  • #define HC_SHORTHAND
  • #import “OCHamcrest.h”

Assertion ändert sich folgendermassen lesbarer ab:

assertThat(@”a”, equalsTo(@”b”));

  • #import “SingletonManager.h”
  • schreibe Test dafür ;) 

assertThat(util1, sameInstance(util2));

  • dateUtil wurde noch importiert und 2 Instanzen über den SingletonManager angelegt
  • setUp (initialize globals), tearDown (release globals) Methoden sind ebenso möglich. 
  • in Core Data am Bsp TodoItem
  • PersistenceTest, nicht mehr so trivial aber interessant
  • Test der Parser Klasse mit OCMock -> bildet eine Klasse als MOCK ab
  • Wenn was nicht funktioniert sagt XCode / OCMock Konsolentypisch was vorgefallen ist.. Leider nicht so nett aufgebaut wie JUnit in Eclipse & Co.

Das (Test)Skript das ausgeführt wird kann nicht debugged werden..

Breakpoint verschafft abhilfe.. :(

Session: Augmented Reality Hype oder “the next big thing”

bis 2014 worth 300 - 750 Mio. $

kurze Geschichtliche Einführung -> sie begann 1997

2010 erste Konferenz zu AR

Witziges Beispiel: AR Schminkspiegel

anderes Beispiel: Lego, das die aufgebauten Spielzeuge in Aktion zeigt

AR im Internet

Beispiel mit DHL

next: virtual fashion show (fashionista)

im Automobilbereich: Mini

meist mit Flash realisiert

coole Adidas Werbeaktion

AR auf Mobilen Endgeräten

wird zukünftig Haupteinsatzbereich für AR Apps sein

4 Kategorien:

  • AR Browser (zB Wikitude, Junaio Layar, acrossair) - europ. Hersteller
  • Anwendungen auf Basis von AR Browsern (zB Junaio mit Beispiel Süddeutsche Zeitung, Google goggles)
  • bestehende Anwendungen erweitern: (zB Navigon mit Fussgängermodus, Wikitude Drive)
  • Standalone Anwendungen (zB London Tube, Praktiker App < witzig, bzw IKEA, Ben & Jerry’s, Golfscape, AR Drone)

Frameworks:

  • ARToolKit
  • ARToolKit Professional (für Kommerzielle Nutzung)
  • NyARToolKit (Java/C#/Android)
  • Unifeye Mobile SDK (3D fähig)
  • Mixare (für Android)
  • einfacherer Einstieg beiten AR Browser

Next big thing??

+++ Leistung stimmt, günstigere Datenraten, Kamera als Eingabemedium

—- keine Killeranwendung, Datenschutz (Face recognition <> FB Profilanzeige etc.. ), Spielerei zZ

Gartner Hypecycle: *gg* no one knows

Next: Mobile Night

mit einigen Sessions und Freibier gehts in den Abend. Eine Folie die hier hängen geblieben ist will ich trotzdem nicht vorenthalten:

the suffering continues

MTC10 Tag 1

Workshoptag, meine Wahl fällt auf den iOS Exkurs. Anhand einer einfachen Applikation wird hier der Umgang mit iOS und Objective-C erläutert. 

Dabei handelt es sich um eine Fotoapp welche Tabellarisch Kategorien von Fotos anzeigt, auf Touch deren Beschreibung und letztlich das Foto selber. 

Die App besteht aus 3 Views, welche mit Interface Builder angelegt und mit dem Controller verknüpft werden.  Das Cocoa Framework hält sich strikt an das MVC Model. Das macht einiges leichter verständlich wenn mans mal Verstanden hat. ;)

1 View: RootView(Controller)

2 View: eventView(Controller)

3 View: detailView(Controller)

Nett erklärt und viel gelernt.. Die Entwicklungssprache ist auch mit Java Hintergrund nicht allzu schwer zu verstehen. 

Die fertige App sieht dann in etwa so aussehen (und kann zoomen und ist auch in Portrait Mode verfügbar):

iOS Workshop App

Deployment

  • Sehr wichtig: TESTEN. Apple ist ziemlich streng und schlecht getestete Apps können den Releasetermin unvorhergesehen nach hinten verschieben
  • wichtige PList Einträge: Deploying Target (kleinste Unterstützte Systemversion), Device Family (iPad, iPhone, iPad/iPhone), verwendete SDK (mit was wurde programmiert)
  • eine App kann mit “Build & Archive” deployed werden
  • die App wird im Organizer wiedergefunden und kann von dort auch eingereicht werden
  • zusätzlich muss die App allerdings auch noch Online angemeldet werden. Apple führt hier Schritt für Schritt durch einen Fragebogen.
  • Preise sind in Preisklassen unterteilt und fix vorgegeben
  • Impressum wird gerne als WebView dargestellt, sollte aber keine Links enthalten bzw wenn sollten diese mit Safari aufgemacht werden
  • der SubmissionProzess inkl. Review durch Apple kann zwischen 1-4 Wochen dauern

AppStore Marketing

  • leicht merkbares Icon verwenden
  • sinnvolle Beschreibung für den AppStore (kann und wird von Robots durchsucht)
  • Sprache und Land beachten -> App soll in der Landessprache sein (+ Beschreibung)
  • Screenshots / Fotomontage sollen erklärend sein
  • Für Hybride Apps unterschiedliche Screens (ist möglich und empfohlen)
  • Social Media auf einen Schlag nutzen > Werbung für App alles an einem Tag nutzen um in die Top 10 zu kommen
  • weniger bekannte Kategorie ist nützlich um mit weniger DLs in die Top 10 zu kommen
  • schöne Buttons > Apple Marketingvereinbarung lesen, verstehen und nach Texas schicken
  • Neu und Beachtenswert in iTunes bringt was kann man aber nicht beeinflussen

iPad

  • Grösse macht einen Unterschied -> UI muss gut geplant werden (kann ca. 3 mal soviel Zeit in Anspruch nehmen als für iPhone)
  • Unterscheidung kann im gleichen Code stattfinden > wenn iPad dann nimm SplitViewController sonst TableViewController zB.. 
  • Hybride Apps brauchen mehr Speicher -> schlecht
  • Macht Sinn verschiedene Apps machen -> allerdings geht dann Bewertung verloren
  • 2 Apps 2x Submissionprozess
  • Hybride Apps gehen anscheinend schneller durch den Prozess
  • Ressourcen müssen doppelt angelegt werden (grössere Bilder usw.. )

Empfehlung: Demo Apps von der Apple Seite laden und probieren.