Herzlichen Glückwunsch:
1 Jahr iPhone SDK
von Oliver Simon
Mitte 2008 öffnete Apple sein iPhone für Entwickler. Vier Monate später feierten Apples
Lifestyle-Gadget – das nebenbei sogar als Handy eingesetzt werden kann – und der zugehörige AppStore Deutschlandpremiere.
Anfang Dezember 2008 verzeichnete Apple bereits 300 Millionen Downloads mehr oder weniger nützlicher und unterhaltsamer Apps. Doch damit nicht genug: Bis Juli 2009 stieg deren Zahl auf fantastische 1,5 Milliarden und auch die Anzahl der im AppStore verfügbaren Anwendungen – inzwischen soll es davon über 65.000 geben – überzeugt.
Diese Fakten belegen den enormen Erfolg des iPhone von Apple. Eine Leistung, die auch der Freigabe des Software Development Kit (SDK) vor etwa einem Jahr zu verdanken ist. Innerhalb kürzester Zeit konnte sich das iPhone – nicht zu-letzt dank seiner Erweiterbarkeit – durch beliebige Anwendungen auf einem hart umkämpften Markt etablieren.
Grund genug für Apple, die Produktrange weiter auszubauen: Aktuell bietet das Unternehmen aus dem kalifornischen Cupertino neben dem iPhone 3GS auch den iPod Touch, auf dem die Anwendungen ebenfalls lauffähig sind. Zur Realisierung eigener Applets hat Apple der weltweiten Entwicklergemeinde mit dem SDK ein leistungsfähiges Entwickler-Tool zur Verfügung gestellt.
Seither entstehen rund um den Globus tagtäglich Apps für eine Vielzahl von Anwendungsfällen – von der einfachen To-do-Liste über ortsbasierte Social Networks bis hin zu aufwendigen Spielen mit OpenGL-Grafik.
Der Clou für deren Entwickler: Mit dem AppStore bietet Apple ihnen einen etablierten Vertriebskanal zur Vermark-tung selbstentwickelter Anwendungen gleich mit an! Besitzer eines iPhone bzw. iPod Touch haben hier die Möglichkeit, gegen entsprechendes Entgelt beliebig viele Apps mit wenigen Handgriffen über den AppStore zu erwerben.
Eigene Apps entwickeln: So geht´s
Unerlässlich für die Entwicklung eigener iPhone-Anwendungen: ein Intel-basierter Mac mit Mac OS X 10.5 (Leopard) und das kostenlose iPhone Software Development Kit, das nach einer Registrierung bei Apple heruntergeladen werden kann.Dieses SDK enthält alle zur Entwicklung benötigten Werkzeuge, die sogenannten Xcode Tools. Sie bestehen unter anderem aus Xcode, dem Interface Builder, einem iPhone-Simulator und Instruments.
Xcode Tools
Xcode ist die Entwicklungsumgebung, in der das Programm entwickelt wird.
Es bietet alle momentan üblichen An-nehmlichkeiten einer IDE wie etwa Code Completion, Syntax Highlighting und Anbindung an mehrere Versions-verwaltungssysteme.
Zum Entwurf von Benutzeroberflächen steht der Interface Builder bereit. Binnen kürzester Zeit können damit optisch ansprechende Oberflächen entworfen und an die Programmlogik angebunden werden. In einem Katalog sind eine Reihe vorgefertigter Elemente zu finden (wie z. B. Buttons, Eingabefelder oder Fortschrittsbalken), mit denen der Ent-wickler die Dialoge gestalten kann.
Mobile Endgeräte verfügen über ein-geschränkte Ressourcen. Speziell für sie entwickelte Anwendungen müssen daher zwingend in ihrer Leistung optimiert werden. Dabei unterstützt Instruments die Entwickler. Mit einer Vielzahl von Funktionen und einer ansprechenden Oberfläche erleichtert es die Suche nach Leistungsengpässen oder Speicherlecks.
Fertige Anwendungen können vor der Veröffentlichung im AppStore schließlich mithilfe des iPhone-Simulator getestet werden. Er stellt die gleiche Umgebung wie das iPhone zur Verfügung, sodass die Programme (mit wenigen Einschränkungen) nahezu unter Real-bedingungen getestet werden können.
Apps vertreiben: der AppStore
Wer Anwendungen auf einem iPhone installieren oder diese über den AppStore vertreiben möchte, muss dem iPhone Developer Program beitreten. Hierfür bietet Apple zwei Lizenzen an, das Standard Program und das Enterprise Program.
Das Standard Program dürfte für die Mehrzahl der privaten Entwickler und Firmen das Interessantere sein. Für jährlich 99,– Dollar bietet es die Möglichkeit, Anwendungen auf bis zu 100 Geräten zu testen.
Außerdem können beliebig viele Programme über den AppStore vertrieben werden. Bei kostenlosen Programmen entstehen keine weiteren Kosten, für kostenpflichtige Programme er-hebt Apple eine Gebühr von 30 Prozent vom Verkaufspreis.
Darin enthalten sind alle Kosten, wie z. B. für Hosting und Abrechnung.
Die Erlöse werden monatlich ausgezahlt.Apples AppStore ist zurzeit die einzige Möglichkeit Applikationen für das iPhone zu vermarkten. Ist man mit den
genannten Bedingungen einverstanden, steht der Vermarktung eigener Applikatio-nen somit nichts mehr im Wege.
Aus der Praxis:
Apps für das iPhone entwickeln
Das iPhone SDK bietet eine Reihe von Tools und Frameworks, die Entwicklern den komfortablen Zugriff auf die iPhone-Sensoren – wie etwa den Beschleunigungs-, den Umgebungslicht- oder den Annäherungs-Sensor – ermöglichen.
Hier soll auf den Be-schleunigungssensor (den sogenannten Accelerometer) eingegangen werden. Er registriert Bewegungen des Geräts und informiert über die Lage und Beschleunigung des Te-lefons. Mithilfe dieses Sensors ist es durch die Überwachung der Lage des iPhone z. B. möglich, Benutzeroberflächen bei-
einer Drehung des Geräts mitzudrehen.
Grundlagen
Die Programmiersprache, die bei der Entwicklung von iPhone-Anwendungen zum Einsatz kommt, ist Objective-C. Dabei handelt es sich um eine objektorientierte Programmiersprache auf Basis von C mit Einflüssen aus der Smalltalk-Welt. In diesem Beispiel sollen zwei Eigenschaften der Sprache hervorgehoben und an-schaulich erläutert werden.
Dabei handelt es sich zum einen um das Konzept der Nachrichten (Messages). Im Kontext von Objective-C spricht man nicht von an Klassen gebundenen Methoden, sondern von Nachrichten, d. h. von Ob-jekten, die Nachrichten untereinander aus-tauschen. Prinzipiell kann jede Nachricht an jedes Objekt gesendet werden. Ob der Empfänger die Nachricht versteht und bearbeitet, bleibt ihm über-lassen. Zum anderen kommen bei der
Entwicklung sogenannte Delegate Pattern
zum Einsatz. Dabei übernimmt eine Klas-
se A bestimmte Aufgaben im Namen einer anderen Klasse B. Dazu muss
Klasse A zu Beginn mit Klasse B
bekannt gemacht werden. Klasse A muss hierfür ein bestimmtes Protokoll implementieren, das von Klasse B zum Delegieren der Aktionen genutzt wird.
Ein Beispiel
Damit ein Programm über Ereignisse des Accelerometers informiert werden kann, muss es zunächst an der verantwortlichen Stelle registriert werden. Dazu dient die Klasse UIAccelerometer, ein Singleton. Zugriff auf dieses Singleton erhält man über die Methode SharedAccelerometer (Abb. 1, Anweisung 1). Damit UIAccelerometer Nachrichten an unsere Klasse senden kann, muss es bestimmte Richtlinien einhalten. Hier kommen die bereits erwähnten Delegate Pattern ins Spiel.
In der Headerdefinition unserer Klasse wird dazu das entsprechende Delegate Protocol angegeben (Abb. 2). Unsere Klasse kann damit als Delegate für UIAccelerometer dienen (Abb. 1, Anweisung 2).
Dieses Protokoll gibt eine Reihe optionaler Methoden vor, die von der Klasse implementiert werden können. Eine Implementierung ist jedoch nicht verpflichtend.
So kann man sich auf die Nachrichten beschränken, die für die Anwendung relevant sind.
Zudem kann definiert werden, in wel-chen Abständen über den Status des Accelerometers informiert werden soll: in unserem Fall alle sechzigstel Sekunde (Abb. 1, Anweisung 3). Sobald diese Klasse registriert ist, erhält sie in den genannten Abständen Nachrichten von UIAccelerometer.
Um diese Nachrichten verarbeiten zu können, muss die Methode –
(void)accelerometer:
(UIAccelerometer*) accelerometer didAccelerate: (UIAcceleration*) acceleration implementiert werden.
Dies erfolgt in der Implementierung unserer Klasse. Der Parameter accelerometer gibt die aktuelle Position des iPhone relativ zur Ausgangsposition mit X-, Y- und Z-Werten an. Der Parameter acceleration gibt die Beschleunigung in g (x-fache Erdbeschleunigung) an. Eine mögliche Implementierung wird in Abb. 3 gezeigt. In diesem Beispiel wird eine Aktion ausgeführt, sobald der Sensor eine Überschreitung der Grenze von 2g meldet.
Diese wenigen Anweisungen genügen, um den Sensor auf einfache Weise auf einer abstrakten Ebene in eigenen Anwendungen auszulesen.
Diese praktischen Mechanismen stehen in allen Bereichen des SDK zur Ver-
fügung und machen eine Entwicklung auch komplexer Anwendungen simpel und effizient.



