60081-1 U1+U4 02.02.2011 16:45 Uhr Seite 1 Know-how Dr. Dirk Koller Dr. Dirk Koller Aus dem Inhalt: ist blau. • iOS 4 – das aktuelle Betriebssystem von iPhone, iPad und iPod touch • Das ist neu in iOS 4 Der iPhone-Apps • Das iOS-SDK im Detail • Die zentralen Klassen von Cocoa Touch n Bestseller! entwickeln ••• ODReabgsje eEclnntit vfwüeir-c Cdk aliumsn D giOesbSwuegrkgzineugg Xcode el uFnüdr i iPPhoodn teo,u iPchad. Die Apps sind der Schlüssel zum Erfolg des iPhones und seiner Geschwister iPad • Die Speicherverwaltung: Speicherlecks k Jetzt aktuell und iPod touch. Der erfahrene Entwickler Dirk Koller demonstriert in dieser und Overreleases vermeiden c zu iOS 4.x! aktualisierten Version seines Bestsellers, wie Sie Apps für die Kultgeräte von • Das Projekt anlegen: i Apple programmieren. Er erläutert die Neuerungen der Version 4 des Betriebs- Projekt-Templates und .plists w systems iOS und beschreibt in bewährter Manier anhand einer Beispiel-App • Die Bedienoberfläche entwerfen: Navi- den Weg von der ersten Idee bis zu Upload und Vermarktung im App Store. Sie gation Controller, Tool Bars und Tab Bars erfahren, wie Sie die App technisch sauber umsetzen, die Benutzeroberfläche • Core Data – das Daten-Framework t entwerfen und mit Features wie z. B. Geodaten anreichern. • Geodaten mit Core Location und n (cid:2) Map Kit integrieren Von der Idee zur fertigen App Dieses Buch zeigt den kompletten Weg einer iPhone-App: von der Grundidee • Mailfunktionen und Web Views integrieren e über die nötigen Features bis zur Skizze der Benutzeroberfläche. Dann geht • Persistente Datenspeicherung es an die Umsetzung: Autor Dirk Koller stellt die Entwicklungsumgebung 2. aktualisierte Auflage s Xcode, das Datenbank-Framework und die zentralen Klassen der Program- • Lokalisierung und Internationalisierung mierschnittstelle des Betriebssystems iOS vor. Schritt für Schritt erläutert er • Feinschliff für die App: p die Entwicklung der App und gibt Tipps dazu, wie Sie die Applikation mit Icons, Farben und Schriften iPhone-Apps Featureswie Geokoordinaten oder Kontaktdaten anreichern können. Ent- • Die App testen: Unit Tests und Betatests p wicklern, die mit Java oder C++ vertraut sind, gibt er zudem einen Einblick in die Programmiersprache Objective-C. • Die App in den App Store ausliefern A (cid:2) Einstellen in den App Store • Besonderheiten der iPad-Entwicklung: entwickeln Split Views und Pop-overs Mit der Programmierung allein ist es noch nicht getan – schließlich entscheidet - die Präsentation im App Store über den Erfolg der Applikation. Dirk Koller zeigt • Apps richtig vermarkten – iPhone, iPad detailliert, wie Sie die App auf das Einstellen in den App Store vorbereiten und und iPod touch als Geschäftsmodell e worauf Sie achten müssen, um die Qualitätskriterien von Apple zu erfüllen. Applikationen für iPhone, iPad und iPod touch programmieren Sie erfahren, wie Sie die App gründlich testen und überzeugend präsentieren. n Darüber hinaus erhalten Sie Tipps für die erfolgreiche Vermarktung Ihres Über den Autor: Programms. o > So entwickeln Sie Apps mit dem iPhone-SDK und Objective-C Dr. Dirk Koller ist seit zehn Jahren in der Software- (cid:2) Entwickeln für das iPad entwicklung als Entwickler, Berater und technischer > Xcode, Datenbank-Framework und die wichtigsten h Ausführlich geht der Autor auf die Programmierung für Apples iPad ein. Das Projektleiter tätig. Sein Tätigkeitsfeld ist die Java- Klassen des Betriebsystems iOS im Detail große Display des Tablet-Computers bietet ein ungeheures Potenzial für die /Oracle-Entwicklung, zu der er regelmäßig Beiträge Applikationsentwicklung. Dirk Koller zeigt, wie bestehende Apps an das iPad in Fachzeitschriften beisteuert. Seit dem Erschei- P > Entwickeln ist nicht genug: Apps im App Store richtig vermarkten angepasst werden und wie Sie durch geteilte Bildschirmbereiche (Split Views) nendes iPhones widmet er sich mit großer Be- und Pop-overs (Fenster, die über andere Bereiche gelegt werden) die geisterung der Programmierung des Geräts. Er i Darstellungsmöglichkeiten des Geräts voll ausnutzen. lebt und arbeitet in der Nähe von Frankfurt/Main. Auf www.buch.cd: r e Der komplette Quellcode der oll K Beispiel-App ChronoLog. Von der Idee zum App Store: So realisieren und vermarkten Das Praxisbuch 30,–EUR[D] Besuchen Sie unsere Website für Smartphone- Sie Ihre Apps! ISBN 978-3-645-60081-1 www.franzis.de Entwickler 60081-1 Titelei:X 02.02.2011 14:09 Uhr Seite 1 Dr. Dirk Koller iPhone-Apps entwickeln 60081-1 Titelei:X 02.02.2011 14:09 Uhr Seite 3 Dr. Dirk Koller 2. aktualisierte Auflage iPhone-Apps entwickeln Applikationen für iPhone, iPad und iPod touch programmieren Mit 216 Abbildungen 60081-1 Titelei:X 02.02.2011 14:09 Uhr Seite 4 Bibliografische Information der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte Daten sind im Internet über http://dnb.ddb.de abrufbar. Alle Angaben in diesem Buch wurden vom Autor mit größter Sorgfalt erarbeitet bzw. zusammengestellt und unter Einschaltung wirksamer Kontrollmaßnahmen reproduziert. Trotzdem sind Fehler nicht ganz auszuschließen. Der Verlag und der Autor sehen sich deshalb gezwungen, darauf hinzuweisen, dass sie weder eine Garantie noch die juristische Verantwortung oder irgendeine Haftung für Folgen, die auf fehlerhafte Angaben zurückgehen, übernehmen können. Für die Mitteilung etwaiger Fehler sind Verlag und Autor jederzeit dankbar. Internetadressen oder Versionsnummern stellen den bei Redaktionsschluss verfügbaren Informationsstand dar. Verlag und Autor übernehmen keinerlei Verantwortung oder Haftung für Veränderungen, die sich aus nicht von ihnen zu vertretenden Umständen ergeben. Evtl. beigefügte oder zum Download angebotene Dateien und Informationen dienen ausschließlich der nicht gewerblichen Nutzung. Eine gewerbliche Nutzung ist nur mit Zustimmung des Lizenzinhabers möglich. © 2011 Franzis Verlag GmbH, 85586 Poing Alle Rechte vorbehalten, auch die der fotomechanischen Wiedergabe und der Speicherung in elektronischen Medien. Das Erstellen und Verbreiten von Kopien auf Papier, auf Datenträgern oder im Internet, insbesondere als PDF, ist nur mit ausdrücklicher Genehmigung des Verlags gestattet und wird widrigenfalls strafrechtlich verfolgt. Die meisten Produktbezeichnungen von Hard- und Software sowie Firmennamen und Firmenlogos, die in diesem Werk genannt werden, sind in der Regel gleichzeitig auch eingetragene Warenzeichen und sollten als solche betrachtet werden. Der Verlag folgt bei den Produkt- bezeichnungen im Wesentlichen den Schreibweisen der Hersteller. Lektorat:Franz Graser Satz:DTP-Satz A. Kugge, München art & design: www.ideehoch2.de Druck:Bercker, 47623 Kevelaer Printed in Germany ISBN 978-3-645-60081-1 5 Inhaltsverzeichnis 1 Einleitung....................................................................................................13 1.1 Das iPhone: ein revolutionäres mobiles Gerät..................................13 1.2 Für wen ist dieses Buch gedacht?.....................................................14 1.3 Die Beispielanwendung...................................................................15 1.4 Was benötige ich zum Starten?........................................................15 1.4.1 Einen Mac........................................................................................15 1.4.2 Das iOS-SDK....................................................................................16 1.4.3 Ein iPhone, einen iPod touch oder ein iPad......................................16 1.4.4 Eine Entwicklerlizenz.......................................................................16 Teil 1 – Die Voraussetzungen..............................................................................17 2 Das iPhone OS (iOS)....................................................................................19 2.1 Technologien & Frameworks............................................................19 2.1.1 Cocoa Touch....................................................................................20 2.1.2 Media..............................................................................................23 2.1.3 Core Services...................................................................................24 2.1.4 Core OS............................................................................................27 2.2 Cocoa Design Patterns.....................................................................28 2.2.1 Model View Controller......................................................................28 2.2.2 Delegation (Delegate)......................................................................29 2.2.3 Target Action....................................................................................30 3 Objective-C..................................................................................................31 3.1 Herkunft der Sprache.......................................................................31 3.2 Nachrichten.....................................................................................31 3.3 Import..............................................................................................32 3.4 Interface und Implementation..........................................................33 3.4.1 Interface..........................................................................................33 3.4.2 Implementation...............................................................................34 3.5 Datentypen......................................................................................35 3.5.1 Id.....................................................................................................35 3.5.2 BOOL...............................................................................................35 3.5.3 SEL..................................................................................................35 3.5.4 Nil....................................................................................................35 3.6 Properties........................................................................................36 3.6.1 Deklaration: @property....................................................................36 6 Inhaltsverzeichnis 3.6.2 Implementierung: @synthesize........................................................36 3.6.3 Property-Attribute............................................................................37 3.6.4 Punktnotation..................................................................................39 3.7 Protokolle........................................................................................39 3.8 Kategorien.......................................................................................40 4 Entwicklungswerkzeuge..............................................................................41 4.1 Xcode..............................................................................................41 4.2 Simulator.........................................................................................44 4.3 Interface Builder..............................................................................46 4.3.1 Xib-Files...........................................................................................46 4.3.2 Document Window...........................................................................46 4.3.3 Designoberfläche.............................................................................47 4.3.4 Library..............................................................................................48 4.3.5 Property-Inspektoren.......................................................................50 4.4 Instruments.....................................................................................54 5 Debugging...................................................................................................57 5.1 Konsolenausgaben..........................................................................57 5.2 Debugger.........................................................................................58 5.3 Remote Debugging...........................................................................62 6 Memory Management..................................................................................63 6.1 Zwei Regeln.....................................................................................63 6.2 Retain, release & dealloc.................................................................64 6.3 AutoreleasePool...............................................................................66 6.4 Overrelease......................................................................................67 6.5 Leaks...............................................................................................70 Teil 2 – Das Grundgerüst der Zeiterfassung.........................................................73 7 User Interface Design...................................................................................75 7.1 Das Gerät kennenlernen...................................................................75 7.2 Grundlegender Aufbau von Apps......................................................76 7.3 UI-Komponenten..............................................................................77 7.3.1 Status Bar........................................................................................77 7.3.2 Navigation Bar & Table View............................................................77 7.3.3 Tool Bar...........................................................................................78 7.3.4 Tab Bar............................................................................................78 7.3.5 Alert.................................................................................................78 7.3.6 Action Sheet....................................................................................79 7.3.7 Modale Views..................................................................................79 7.3.8 Und der ganze Rest..........................................................................79 7.4 Application Definition Statement & Features....................................80 7.5 Objektmodell...................................................................................83 7 Inhaltsverzeichnis 7.6 Navigationsmodell & Skizzen...........................................................84 7.6.1 Hauptmenü......................................................................................85 7.6.2 Leistungsliste..................................................................................87 7.6.3 Leistungsdetails...............................................................................88 7.6.4 Zeitenliste........................................................................................91 7.7 Bessere Mock-ups............................................................................92 8 Projektstart..................................................................................................95 8.1 Versionsverwaltung.........................................................................95 8.2 Generieren des Projekts...................................................................96 8.3 Projektstruktur.................................................................................98 8.3.1 chronos-Info.plist.............................................................................99 8.3.2 chronos.xcdatamodel....................................................................100 8.3.3 chronos_Prefix.pch........................................................................100 8.3.4 main.m..........................................................................................100 8.3.5 chronosAppDelegate.h...................................................................100 8.3.6 chronosAppDelegate.m..................................................................101 8.3.7 MainWindow.xib............................................................................101 8.4 Erster Start.....................................................................................101 8.4.1 Devices..........................................................................................102 8.4.2 Zertifikat........................................................................................103 8.4.3 App ID............................................................................................105 8.4.4 Provisioning Profile........................................................................106 8.5 Was die App im Innersten zusammenhält......................................108 9 Das Datenmodell: Core Data......................................................................111 9.1 Modell...........................................................................................111 9.2 Entitäten........................................................................................113 9.3 Attribute........................................................................................113 9.4 Beziehungen..................................................................................114 9.5 Erstellen des Chronos-Datenmodells..............................................115 9.5.1 Kunde............................................................................................115 9.5.2 Projekt...........................................................................................115 9.5.3 Leistung.........................................................................................116 9.5.4 Zeit................................................................................................116 9.6 Die Zugriffsschicht: der Core-Data-Stack........................................117 9.6.1 Managed Object Model..................................................................118 9.6.2 NSPersistentStoreCoordinator........................................................119 9.6.3 NSManagedObjectContext.............................................................120 9.7 Verwenden des Stack.....................................................................120 9.7.1 Fetch Request................................................................................121 9.7.2 Filtern: NSPredicate.......................................................................121 9.7.3 Sortieren: NSSortDescriptor...........................................................122 9.7.4 Managed Object.............................................................................123 8 Inhaltsverzeichnis 10 View Controller..........................................................................................125 10.1 Views & Controller..........................................................................125 10.2 UIViewController............................................................................126 10.2.1 Erzeugen von View & Controller......................................................126 10.2.2 Wichtige Methoden........................................................................129 11 Navigation Controller.................................................................................131 11.1 Funktionsweise des Navigation Controllers....................................131 11.2 Erzeugen eines Navigation View Controllers...................................132 11.3 Anpassung der Navigation Bar.......................................................136 11.3.1 Bar Button Items............................................................................136 11.3.2 Title View.......................................................................................138 11.3.3 Back Button...................................................................................138 11.4 Weitere Methoden zur Stapelverwaltung........................................138 12 Table View Controller.................................................................................141 12.1 Aufbau von Table Views.................................................................141 12.2 Erstellen von Controller & View......................................................143 12.3 Anzeigen von Daten: Data Source..................................................145 12.3.1 numberOfSectionsInTableView:.....................................................146 12.3.2 tableView:numberOfRowsInSection:..............................................146 12.3.3 tableView:cellForRowAtIndexPath:.................................................146 12.4 Aktionen in Tabellen: UITableViewDelegate...................................153 12.5 Eigene Zellen.................................................................................157 12.6 Edit Mode......................................................................................161 12.7 Header & Footer.............................................................................163 12.8 Die Detail-Views.............................................................................166 13 Tab Bar Controller......................................................................................171 13.1 Funktionsweise des Tab Bar Controllers.........................................171 13.2 Erzeugen eines Tab Bar Controllers................................................172 13.3 Tab Bar Controller Delegate............................................................176 14 Textkomponenten & Picker........................................................................179 14.1 Text Field.......................................................................................179 14.1.1 Erzeugung & Konfiguration.............................................................179 14.1.2 Text Field Delegate.........................................................................180 14.1.3 Notifications..................................................................................181 14.2 Text View.......................................................................................184 14.3 Search Bar.....................................................................................184 14.4 Picker View....................................................................................186 14.4.1 Erzeugung & Konfiguration.............................................................186 14.4.2 Picker View Data Source.................................................................187 14.4.3 Picker View Delegate......................................................................187 14.5 Date Picker.....................................................................................188 9 Inhaltsverzeichnis Teil 3 – Erweiterung der Zeiterfassung..............................................................191 15 Ortsbestimmung: Core Location.................................................................193 15.1 Woher weiß das Gerät, wo es ist?...................................................193 15.1.1 Mobilfunksender............................................................................193 15.1.2 WiFi-Netzwerke..............................................................................193 15.1.3 GPS................................................................................................194 15.2 Die Core Location API.....................................................................194 15.2.1 Location Manager..........................................................................194 15.2.2 Location Manager Delegate............................................................195 15.2.3 Location.........................................................................................197 15.3 Koordinatenrechnereien.................................................................198 15.3.1 Umwandlung einer Adresse in Koordinaten....................................198 15.3.2 Umwandlung von Koordinaten in eine Adresse..............................200 15.3.3 Die Entfernungsformel...................................................................201 16 Map Kit......................................................................................................205 16.1 Erzeugung und Konfiguration des Map Views.................................205 16.2 Regionen........................................................................................206 16.3 Annotationen.................................................................................207 17 Adressbuch...............................................................................................211 17.1 Auswählen von Kontakten..............................................................211 17.2 Anzeigen und Editieren von Kontakten...........................................214 17.3 Anlegen von neuen Kontakten........................................................215 18 Zugriff aufs Internet...................................................................................219 18.1 Mails versenden.............................................................................219 18.2 Web View.......................................................................................221 18.3 Request & Response......................................................................225 18.3.1 URL................................................................................................225 18.3.2 URL Request...................................................................................225 18.3.3 URL Connection..............................................................................226 18.4 Austauschformate: XML und JSON..................................................228 18.4.1 XML...............................................................................................228 18.4.2 JSON..............................................................................................231 19 File I/O.......................................................................................................237 19.1 Verzeichnisstruktur........................................................................237 19.1.1 tmp................................................................................................237 19.1.2 Documents....................................................................................238 19.1.3 {App-Name}.app............................................................................238 19.1.4 Library/Preferences........................................................................238 19.1.5 Library/Caches...............................................................................238 19.2 Pfade.............................................................................................239 10 Inhaltsverzeichnis 19.3 File Manager..................................................................................239 19.4 Property-Listen...............................................................................241 20 Settings.....................................................................................................245 20.1 System-Settings.............................................................................245 20.2 In App Settings..............................................................................249 20.2.1 In App Settings selbst entwickeln..................................................249 20.2.2 Fertige Frameworks........................................................................252 21 Lokalisierung & Internationalisierung........................................................255 21.1 Welche Sprachen sind sinnvoll?.....................................................255 21.2 Internationalisierung......................................................................256 21.2.1 Strings...........................................................................................256 21.2.2 Grafiken, Sounds und andere Ressourcen......................................259 21.2.3 Nib-Files.........................................................................................260 21.2.4 Settings.........................................................................................261 21.3 Lokalisierung.................................................................................262 21.3.1 Locale............................................................................................262 21.3.2 Zahlen: Number Formatter.............................................................263 21.3.3 Datum: Date Formatter...................................................................264 21.3.4 Eigene Formatter............................................................................265 22 Icons, Farben & Schriften...........................................................................267 22.1 Home-Screen-Icon..........................................................................267 22.2 Farben...........................................................................................270 22.3 Schrift............................................................................................275 22.4 Launch Image................................................................................276 Teil 4 – Die Auslieferung...................................................................................279 23 Unit Tests..................................................................................................281 23.1 Was soll getestet werden?..............................................................281 23.2 Logische Tests...............................................................................282 23.3 Application Tests...........................................................................286 24 Beta-Test...................................................................................................289 24.1 Herausfinden der Geräte-ID............................................................289 24.2 Distributionszertifikat....................................................................290 24.3 Ad-hoc-Profil..................................................................................291 24.4 Erzeugen des Build........................................................................292 24.5 Verteilen von App und Ad-hoc-Profil...............................................295 24.6 Erfassen der Fehler........................................................................296 24.7 Crash Logs.....................................................................................297