Macoun 2015: Mac- und iOS-Entwickler zu Apple, Apps und Swift

Seite 2: Open Streetmap, MapKit und Apple TV

Inhaltsverzeichnis

Philip Schneider erarbeitete in seinem Vortrag die Unterschiede zwischen Apples MapKit und dem OpenStreetMap Projekt. Nach einem kurzen Streifzug durch die Geschichte von Apples Framework ging es direkt in medias res in Xcode und ein Beispielprojekt. Zwischen den beiden Frameworks ist auch eine Zusammenarbeit möglich. So kann man mit wenigen Zeilen Code die Karte von Apple laden und die Konturen von OpenStreetMap für die Berge drüber legen.

Bei der Implementierung muss man sich natürlich über das Caching Gedanken machen, damit die App nicht jedes Stück Karte neu lädt, sondern zwischenspeichert. Für die Anwendung zeigte Philip Schneider, wie man gezielt Karten annotiert, etwa ein Rechteck, eine Pin mit Beschriftung oder einen Kreis darüber legt.

Der Service MapBox geht noch etwas weiter und zeigt etwas hübschere Karten basierend auf OpenStreetMap. Die Karten unterstützen Retina-Auflösung sowie Vektorgrafiken und sind daher deutlich schärfer.

Apples Mapkit und OpenStreetMap kann man auch kombinieren. Wie das geht zeigte Philip Schneider in seinem Vortrag.

(Bild: Christian Schmitz)

Seit Apple in OS X 10.7 Auto Layout einführte, haben Entwickler eine gewisse Hassliebe dazu entwickelt. Auch wenn es oft problemlos läuft, gibt es immer wieder mal Ungereimtheiten, zum Beispiel, wenn es Steuerelemente partout nicht wie gewünscht positioniert. Beim aktuellen OS X 10.11 und iOS 9 hat Apple einiges nachgebessert und interessante neue Funktionen eingebaut.

Clemens Wagner ging in seinem Vortrag in die Tiefe von Auto Layout. So kann man Views aneinander ausrichten, anstatt diese fest zu verdrahten. Für die mittlerweile zahlreichen Screen-Ausmaße von iPhone und iPad kann man Größen und Abstände nicht mehr sinnvoll festzurren, sondern sollte dynamisch layouten. Anhand einer Beispiel-App baute Wagner die Regeln für ein Layout zusammen. Die Views bekamen Abstände und richteten sich aneinander aus, ohne dass sich der linke oder obere Abstand veränderte.

Neu in OS X 10.11 und iOS 9 sind Layout-Anker, die das flexiblere Ausrichten erleichtern. Anhang von weiteren Beispielen und den passenden Formeln zeigte Clemens Wagner, wie man Prioritäten und Ungleichungen verwendet, um Layouts richtig dynamisch zu machen – ähnlich flexibel wie bei Responsive Designs im Web, die sich automatisch an die Fenstergröße anpassen.

Auto-Layout innerhalb von Xcode kann eine große Hilfe sein, wenn man die Tücken kennt.

(Bild: Christian Schmitz)

Mac & i-Autor Alexander von Below warf in seinem Vortrag einen Blick auf das neue Apple TV. Das TV-OS-SDK bietet fast alles, was auch die anderen iOS-SDKs bieten. Leider fehlt ausgerechnet WebKit als Framework, das man braucht, um Webinhalte anzuzeigen oder um oAuth für die Autorisierung zu benutzen.

Beim Apple TV gibt es auch keine Notifications, weder lokale noch Push-Notifications. Lokale Daten kann man nur in den Preferences (NSUserDefaults) speichern. Ansonsten muss man alles nachladen über Cloud-APIs und On-Demand-Ressourcen.

Die neue Bedienung vom Apple TV unterscheidet sich deutlich von der bisherigen. So setzt der Benutzer den Focus auf dem Bildschirm und springt damit von Button zu Button. In einem praktischen Beispiel zeigte Below, wie man eine kleine Apple-TV-Anwendung schreibt. Den Focus kann ein Button automatisch bekommen, aber für einen eigenen View muss der Entwickler das von Hand machen.

Die Apple-TV-Fernbedienung ist zugleich auch ein Gamepad und verfügt über zwei Buttons, eine Touch-Fläche und einen Bewegungssensor. Die GameController-Klassen bieten die Möglichkeit, mit dem Apple TV kompatible Game-Controller einzubinden. Anhand eines Beispiels baute von Below ein kleines Spiel, das sich per Game Controller steuern lässt. Dieses Spiel konnte man zunächst per Swipe auf dem Gamepad steuern. Nach ein paar kleinen Änderungen war dann dann auch eine Steuerung durch Bewegen des Controllers möglich. Schwierig kann für Spieleentwickler allerdings sein, dass sie Programme schreiben müssen, die mit und ohne Game Controller spielbar sein müssen.

Stefan Wehr erläuterte in seinem Beitrag die Geschichte von funktionalen Sprachen am Beispiel von Haskell: Manche Konzepte in Swift überschneiden sich. Zu den Features einer funktionalen Programmiersprache gehören Blocks, statische Typisierung und unveränderbare Werte. Idealerweise sind die funktionalen Programme syntaktisch korrekt und schließen damit schon viele Fehler aus. Durch die starke Typisierung meldet der Compiler viele mögliche Fehler frühzeitig. Wenn man zusätzlich durch unveränderliche Typen das unabsichtliche Ändern von Objekten verhindert, lassen sich die Fehlerquellen stark reduzieren.

Anhand einiger Beispiele zeigte Wehr, wie man Enum-Typen definiert, also eine Art Klasse mit mehreren Varianten. Das spart einem das bei der objektorientierten Programmierung übliche Vererben von Klassen. Algebraische Datentypen sorgen mit den verschiedenen Fällen dafür, dass der Compiler gut prüfen kann, ob die Code-Fragemente auch alle Varianten abdecken.

Beim Abend-Event im Lokalbahnhof nach dem ersten Konferenztag konnte man beim Fachsimpeln oder dem neuesten Klatsch und Tratsch aus der Szene die Köpfe zusammenstecken. Hier bot sich auch eine gute Gelegenheit, die Entwickler hinter der ein oder anderen bekannten App kennenzulernen. Schade nur, dass die Location nicht genug Platz bot, um alle interessierten Teilnehmer unterzubringen. Vielleicht findet sich nächstes Jahr ein größerer Treffpunkt.

Die Macoun fühlte sich gut an, ein bisschen wie eine kleine WWDC. Die Stimmung war gut, die Referenten motiviert, die Organisation hervorragend. Ich freue mich schon auf die Macoun im nächsten Jahr. (thk)