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

Notes

  1. treegartner posted this