Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort
Vorwort
1 Hello iPhone
2 Die Reise nach iOS
3 Sehen und anfassen
4 Alles unter Kontrolle
5 Daten, Tabellen und Controller
6 Models, Layer, Animationen
7 Programmieren, aber sicher
8 Datenserialisierung und Internetzugriff
9 Multimedia
10 Jahrmarkt der Nützlichkeiten
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
Apps programmieren für iPhone und iPad von Klaus M. Rodewig, Clemens Wagner
Das umfassende Handbuch
Buch: Apps programmieren für iPhone und iPad

Apps programmieren für iPhone und iPad
Rheinwerk Computing
1172 S., geb., mit DVD
49,90 Euro, ISBN 978-3-8362-2734-6
Pfeil 1 Hello iPhone
Pfeil 1.1 Voraussetzungen
Pfeil 1.1.1 Das SDK und die Entwicklerprogramme
Pfeil 1.1.2 Der Simulator
Pfeil 1.1.3 Test der Arbeitsumgebung
Pfeil 1.2 App geht’s
Pfeil 1.2.1 Ein neues Projekt
Pfeil 1.2.2 Sehr verbunden
Pfeil 1.2.3 Netzwerk und Ausgabe
Pfeil 1.2.4 Test auf einem Gerät
Pfeil 1.2.5 Entwicklerzertifikat und Entwicklungsprofile
Pfeil 1.2.6 Apps mit speziellen Funktionalitäten
Pfeil 1.2.7 Profilprobleme
Pfeil 1.3 Zusammenfassung

Rheinwerk Computing - Zum Seitenanfang

1.2App geht’sZur nächsten Überschrift

Die Werkbank ist eingerichtet, jetzt ist es an der Zeit für das erste richtige Projekt. Damit erhalten Sie einen Einblick in die Funktionsweise einer App. Sie sollen zunächst lernen, wie Sie eine App in Xcode erstellen, mit der ein Benutzer interagieren kann und die darüber hinaus noch etwas mehr macht, als das obligatorische »Hallo Welt« auszugeben.

Das folgende Beispielprojekt zeigt dem Benutzer einen Button an. Wenn er diesen drückt, ruft die App im Hintergrund die Daten aus dem Internet zu einer URL ab und zeigt den Inhalt der abgerufenen Seite an. Sie lernen dabei schon eine ganze Reihe wichtiger Grundbegriffe kennen.

Projektinformation

Den Quellcode des folgenden Beispielprojekts finden Sie auf der beiliegenden DVD im Ordner Code/Apps/iOS7/HelloiPhone oder im Github-Repository zum Buch im Unterverzeichnis Apps/iOS7/HelloiPhone. Sie können das Github-Repository über die URL https://github.com/cocoaneheads/iPhone/tree/Auflage_3 erreichen und dort den kompletten Inhalt in einer Zip-Datei laden.

Alternativ können Sie auch eine Arbeitskopie über die Anweisung git clone git://github.com/cocoaneheads/iPhone.git erstellen. Falls Sie mit Git noch nicht vertraut sind, schlagen Sie in Kapitel 10, »Jahrmarkt der Nützlichkeiten«, nach; dort ist die Arbeit mit Git ausführlich erläutert. Außerdem zeigen wir Ihnen dort in einer detaillierten Anleitung, wie Sie das komplette Repository auschecken können.


Rheinwerk Computing - Zum Seitenanfang

1.2.1Ein neues ProjektZur nächsten ÜberschriftZur vorigen Überschrift

Um die Beispiel-App zu erstellen, erzeugen Sie in Xcode ein neues Projekt vom selben Typ wie im vorangegangenen Abschnitt (iOSSingle View Application). Bei der Konfiguration des Namens und der Projektparameter setzen Sie dieselben Angaben wie in Abbildung 1.13 gezeigt.

Wählen Sie im nächsten Schritt einen Speicherort für das Projekt aus, und öffnen Sie nach dem Erscheinen des Xcode-Hauptbildschirms durch einen einfachen Klick die Datei Main.storyboard [Anm.: In Xcode 4 heißt die Datei MainStoryboard.storyboard.] , die Sie im Projektnavigator auf der linken Seite finden. Dieses Storyboard enthält die grafische Benutzerschnittstelle oder kurz GUI [Anm.: Graphical User Interface] Ihrer App (siehe Abbildung 1.14).

Abbildung

Abbildung 1.13 Projekteinstellungen für die Beispiel-App

Abbildung

Abbildung 1.14 Die grafische Benutzerschnittstelle der neuen App

Da Sie beim Anlegen des Projekts eine App auf Basis eines einzelnen Views gewählt haben, hat Ihnen Xcode mit dem Storyboard bereits diesen View und einen Viewcontroller angelegt. Ein View ist ein Objekt, das etwas anzeigt, während ein Viewcontroller die Anzeige des Views steuert und dessen Eingaben (z. B. Antippen, Texteingaben, Tastendrücke) auswertet.

Wählen Sie auf der großen Arbeitsfläche in der Mitte des Xcode-Fensters den View – das ist das weiße Rechteck – mit der Maus aus. Xcode hebt den View etwas hervor und zeigt links daneben den Viewcontroller mit einem gelben Icon und den View mit einem weißen Icon in einer Hierarchie an. Die Hierarchie befindet sich wiederum in einer Storyboard-Szene (siehe Abbildung 1.15). Ein Storyboard kann beliebig viele solcher Szenen enthalten.

Abbildung

Abbildung 1.15 Eine Storyboard-Szene mit einem View

Öffnen Sie nun auf der rechten Seite des Xcode-Fensters die Utilities-Ansicht, indem Sie in der Titelzeile auf den in Abbildung 1.16 gezeigten Button klicken.

Abbildung

Abbildung 1.16 Öffnen des Utilities-Bereiches

Unten rechts in der Utilities-Ansicht finden Sie die Objektbibliothek, indem Sie das Würfelsymbol auswählen (siehe Abbildung 1.17).

Abbildung

Abbildung 1.17 Die Objektbibliothek

Geben Sie in das Suchfeld ganz unten den Text »label« ein. Die Objektbibliothek zeigt Ihnen dann nur noch ein Objekt mit dem Namen Label an, und wenn Sie es anklicken, öffnet Xcode links daneben eine Beschreibung dazu (siehe Abbildung 1.18).

Abbildung

Abbildung 1.18 Label mit Beschreibung in der Objektbibliothek

Ziehen Sie ein Label mit der Maus oben links in den View, so wie es Abbildung 1.19 zeigt. Im Zweifelsfall lassen Sie sich von den automatisch erscheinenden gestrichelten Hilfslinien inspirieren. Wenn Sie mit der Position zufrieden sind, lassen Sie das Label los, um es in den View einzufügen.

Abbildung

Abbildung 1.19 Platzieren eines Labels auf dem View

Damit das Label auch ausreichend Platz für den anzuzeigenden Inhalt hat, fassen Sie mit der Maus den mittleren Begrenzungspunkt an der rechten Seite des Labels und ziehen ihn nach rechts, bis eine weitere Hilfslinie erscheint (siehe Abbildung 1.20).

Abbildung

Abbildung 1.20 Größenänderung des Labels

Danach setzen Sie die Textausrichtung des Labels im Attributinspektor auf zentriert (siehe Abbildung 1.21). Sie können den Attributinspektor öffnen, indem Sie das Label im View auswählen und die Tastenkombination alt+cmd+4 drücken.

Abbildung

Abbildung 1.21 Ausrichtung der Label-Beschriftung im Attributinspektor

Suchen Sie anschließend in der Objektbibliothek nach »Button«, und ziehen Sie das linke Objekt mit dem Namen Button (siehe Abbildung 1.22) ebenfalls auf den View. Ein Button zeigt eine Schaltfläche an, mit der die Nutzer eine Aktion in der App auslösen können.

Abbildung

Abbildung 1.22 Buttons in der Objektbibliothek

Um dem Button eine Beschriftung zu geben, führen Sie einen Doppelklick in dessen Beschriftung aus und geben dort den Text »Go!« ein. Nach Abschluss dieser Arbeiten verfügt Ihr View nun über ein Label und einen Button. Durch das Einfügen dieser Elemente haben Sie auch die Hierarchie in der Storyboard-Szene geändert. Auch dort finden Sie nun das Label und den Button. Den fertigen View und die neue Hierarchie sehen Sie in Abbildung 1.23. Die in dieser Abbildung gezeigten blauen Rahmen um den das Label und den Button können Sie über den Menüpunkt Editor | Canvas | Show Bounds Rectangles einschalten; sie zeigen Ihnen jeweils die genaue Position und Größe der Elemente an.

Abbildung

Abbildung 1.23 Der View mit Label und Button

Übersetzen und starten Sie die App im Simulator über den Run-Button von Xcode oder mit cmd+R, wie Sie das bereits zum Testen Ihrer Xcode-Installation gemacht haben. Sie sehen anschließend den weißen View mit dem Label und dem Button (siehe Abbildung 1.24) im Simulator. Das Drücken des Buttons verändert zwar dessen Farbe, ansonsten tut sich aber nichts.

Es fehlt jetzt noch die eigentliche Funktionalität der App, dass der Benutzer durch das Drücken des Buttons das Laden von Daten über eine URL auslöst und das Label dann den Inhalt der URL anzeigt. Dazu müssen Sie einige Zeilen Code programmieren und den Button und das Label mit diesem Code verbinden.

Abbildung

Abbildung 1.24 Die App im Simulator


Rheinwerk Computing - Zum Seitenanfang

1.2.2Sehr verbundenZur nächsten ÜberschriftZur vorigen Überschrift

Die Verbindung von Code-Editor und GUI-Editor in Xcode macht das Erstellen dieser Verbindungen extrem einfach. In älteren Xcode-Versionen war der GUI-Editor, der Interface-Builder, ein externes, separates Programm; mit Xcode 4 hat Apple alles zu einem Programm zusammengefasst.

Beim Anlegen des Projekts hat Xcode bereits eine Klasse für den Viewcontroller erzeugt, die sich in die Dateien ViewController.h und ViewController.m aufteilt. Dateien mit der Endung .h heißen Headerdateien und deklarieren verschiedene Programmierelemente. Im Gegensatz dazu heißen Dateien mit der Endung .m Implementierungsdateien. Sie enthalten den eigentlichen Programmcode. Die Headerdatei des Viewcontrollers beschreibt also, was diese Klasse kann, und die Implementierungsdatei beschreibt, wie sie es macht.

Der Viewcontroller beherbergt die Logik des Bespielprogramms. Dazu müssen Sie zwei Verbindungen zwischen der Benutzeroberfläche und der Klasse ViewController herstellen. Wählen Sie dazu die Datei Main.storyboard aus, und öffnen Sie anschließend über die Tastenkombination alt+cmd+¢ oder den betreffenden Button in der Titelleiste den Hilfs- beziehungsweise Assistant-Editor. Der Hilfseditor zeigt zu dem Haupteditor einen weiteren Editor an, dessen Inhalt in der Regel in einer Beziehung zu dem Inhalt des Haupteditors steht; beispielsweise zeigt er zu dem ausgewählten Viewcontroller im Storyboard den Quelltext der passenden Implementierungsdatei an.

Abbildung

Abbildung 1.25 Öffnen des Assistant-Editors

Der Hilfseditor besitzt am oberen Rand eine Sprungleiste (Jump Bar). Wenn Sie dort den Eintrag ViewController.m anklicken, erscheint ein Pop-up-Menü (Abbildung 1.26). Darin wählen Sie den Eintrag ViewController.h aus, so dass der Hilfseditor diese Datei anzeigt.

Abbildung

Abbildung 1.26 Die Sprungleiste im Hilfseditor

Sie sollten nun im Haupteditor das Storyboard der App und im Hilfseditor den Inhalt der Datei ViewController.h sehen (siehe Abbildung 1.27). Sie können jetzt Verbindungen von Elementen aus dem Storyboard direkt in die Header- oder Implementierungsdatei ziehen und so die View-Elemente und Programmcode verbinden. Im vorliegenden Beispiel wollen wir das Label aus dem Code heraus ansprechen können, um seinen Wert ändern zu können. Darüber hinaus soll das Drücken des Buttons eine Aktion auslösen.

Ziehen Sie daher bei gedrückter ctrl-Taste mit der Maus eine Verbindung vom Label in den Hilfseditor, und lassen Sie die Maustaste dort unterhalb der Zeile los, die mit dem Schlüsselwort @interface beginnt (siehe Abbildung 1.28).

Abbildung

Abbildung 1.27 Haupt- und Hilfseditor

Abbildung

Abbildung 1.28 Verbindung vom Label zur Deklaration erstellen

Nach dem Loslassen erscheint der in Abbildung 1.29 gezeigte Popup-Dialog, in dem Sie die Art der anzulegenden Verbindung definieren. Eine Verbindung von einem View-Element zu einer Variablen nennt sich Outlet. Behalten Sie die Voreinstellungen bis auf den Namen bei, für den Sie im entsprechenden Feld den Text »label« eingeben. Klicken Sie anschließend auf Connect, um die Verbindung erstellen zu lassen.

Abbildung

Abbildung 1.29 Parameter für die Verbindung

Xcode erzeugt anschließend in der Datei ViewController.h die folgende Zeile:

@property (weak, nonatomic) IBOutlet UILabel *label;

Sie deklariert eine Property mit dem Namen label. Eine Property speichert eine Eigenschaft; in diesem Fall ist das ein Verweis auf das Label im View.

Beim Button ist die umgekehrte Kommunikationsrichtung erforderlich: Das Drücken des Buttons soll eine Aktion im Viewcontroller ausführen. Ziehen Sie dafür ebenfalls bei gedrückter ctrl-Taste eine Verbindung vom Button in den Hilfseditor unter die eben von Xcode erzeugte Zeile mit dem Outlet für das Label (siehe Abbildung 1.30).

Abbildung

Abbildung 1.30 Eine Verbindung vom Button zum Code

Lassen Sie den Mausknopf unter der Deklaration der Property los, und stellen Sie in dem sich öffnenden Popup-Dialog den Verbindungstyp unter Connection auf Action (siehe Abbildung 1.31). Als Namen verwenden Sie »go«, und anschließend bestätigen Sie die Einstellungen durch Drücken des Buttons Connect.

Abbildung

Abbildung 1.31 Erstellen einer Action-Verbindung

Xcode legt dann in der Datei ViewController.h automatisch die folgende Zeile an:

- (IBAction)go:(id)sender;

Sie deklariert eine neue Methode namens go:. Methoden enthalten den eigentlichen Programmcode des Programms; sie beschreiben also, wie ein Programm etwas macht. Außerdem ergänzt Xcode die Datei ViewController.m um eine neue, leere Methodenimplementierung für die Methode go:, die Sie am Ende dieser Datei finden. Eine Methodenimplementierung sieht ihrer Deklaration sehr ähnlich, allerdings besitzt sie einen Implementierungsblock, den ein geschweiftes Klammerpaar begrenzt. In diesem Block steht der Programmcode der Methode, der ihre Funktionalität beschreibt. Der Block ist allerdings noch leer.

- (IBAction)go:(id)sender {
}

Wenn der Nutzer den Button in der App drückt, ruft die App diese Methode auf. Sie können das jetzt schon relativ einfach ausprobieren, indem Sie die Methode um eine Log-Anweisung erweitern, so dass die Datei ViewController.m die folgende Implementierung für die Methode go: enthält:

- (IBAction)go:(id)sender {
NSLog(@"[+] go:");
}

Listing 1.1 Die erste Implementierung einer Methode

Durch den Aufruf der Funktion NSLog veranlassen Sie die App, die Zeichenkette [+] go: in die Konsole zu schreiben.

Übersetzen und starten Sie die App mit dem Run-Button oder über cmd+R. Sobald der Simulator den View mit dem Label und dem Button anzeigt, betätigen Sie den Button in der App. Xcode öffnet automatisch am unteren Rand den Debug-Bereich, und darin erscheint die Zeichenkette mit einem Zeitstempel davor wie in Abbildung 1.32. Das Drücken des Buttons führt also zum Aufruf der vorgesehenen Methode.

Abbildung

Abbildung 1.32 Die Log-Ausgabe im Debug-Bereich von Xcode

Anstatt der Log-Ausgabe können Sie jedoch auch einen Text in der App anzeigen; Sie haben ja schließlich das Label mit dem zugehörigen Outlet angelegt. Fügen Sie dazu die in Listing 1.2 hervorgehobene Zeile in die Methodenimplementierung von go: ein.

- (IBAction)go:(id)sender {
NSLog(@"[+] go:");
[self.label setText:@"Button gedrückt"];
}

Listing 1.2 Die erste Implementierung einer Methode

Wenn Sie nun die App im Simulator starten und den Button Go! drücken, ändert sich der Text des Labels von Label in Button gedrückt. Das bewirkt die neu eingefügte Zeile: Sie aktualisiert über die Methode setText: den angezeigten Text des Labels.


Rheinwerk Computing - Zum Seitenanfang

1.2.3Netzwerk und AusgabeZur nächsten ÜberschriftZur vorigen Überschrift

Im nächsten Schritt erweitern Sie die Funktionalität der App um den Datenabruf. Dazu ändern Sie in der Datei ViewController.m die Methode go: wie folgt:

- (IBAction)go:(id)sender {
NSLog(@"[+] go:");
NSError *theError = nil;
NSURL *theURL = [NSURL URLWithString:
@"http://www.rodewig.de/ip.php"];
NSString *theIP = [NSString stringWithContentsOfURL:theURL
encoding:NSASCIIStringEncoding error:&theError];

if(theError
== nil) {
NSLog(@"[+] IP: %@", theIP);
}
else {
NSLog(@"[+] Error: %@", [theError localizedDescription]);
}
[self.label setText:theIP];
}

Listing 1.3 Abfrage einer Webseite

Dieser Code fragt den Inhalt der Webseite www.rodewig.de/ip.php ab und sendet ihn an das Label in der Benutzeroberfläche der App. Die Methode erzeugt dafür zunächst eine URL und merkt sich dieses Objekt in der Variablen theURL. Danach holt sie sich über die Methode stringWithContentsOfURL:encoding:error: den Inhalt der Webseite. Dabei kann natürlich ein Fehler auftreten, weil beispielsweise die Webseite nicht verfügbar ist. Wenn ein Fehler auftritt, speichert die Methode diesen Wert in der Variablen theError.

Nach der Abfrage erfolgt eine Fallunterscheidung: Entweder trat kein Fehler auf, dann zeigt die Methode den Inhalt der Webseite im Log an. Andernfalls macht sie das mit der Fehlermeldung. Die Unterscheidung erfolgt dabei anhand der Variablen theError. Wenn diese keinen Fehler enthält, hat sie den Wert nil. Dieser Wert bedeutet, dass die Variable kein Objekt enthält. Zum Schluss aktualisiert die Methode noch die Anzeige des Labels mit dem gelesenen Inhalt der Webseite, der sich in der Variablen theIP befindet.

Stoßen Sie jetzt erneut über cmd+R die Übersetzung und den Start der App an. Sofern Ihr Rechner über eine Verbindung mit dem Internet verfügt, zeigt die App nach dem Drücken des Buttons Ihre externe IP-Adresse an (siehe Abbildung 1.33).

Abbildung

Abbildung 1.33 Es klappt – die App zeigt die IP-Adresse an.

Gratulation zu Ihrer ersten App! Allerdings gibt es an ihr noch eine Kleinigkeit zu verbessern: Nach dem Start steht der Text des Labels auf »Label«. Das ist natürlich unschön. Um dies zu ändern, fügen Sie in der Datei ViewController.m über der go:-Methode noch die folgende Methode hinzu:

- (void)viewWillAppear:(BOOL)inAnimated {
[super viewWillAppear:inAnimated];
NSLog(@"[+] viewWillAppear:");
[self.label setText:@"Moin"];
}

Listing 1.4 Setzen eines anderen Anfangstextes

Sie setzt den initialen Wert des Labels auf »Moin«. Wenn Sie die App jetzt erneut übersetzen und ausführen, zeigt das Label nach dem Start der App diesen Text an.


Rheinwerk Computing - Zum Seitenanfang

1.2.4Test auf einem GerätZur nächsten ÜberschriftZur vorigen Überschrift

Wie wir in Abschnitt 1.1.1, »Das SDK und die Entwicklerprogramme«, erwähnt haben, benötigen Sie ein kostenpflichtiges Entwicklerzertifikat, um selbstprogrammierte Apps auf einem iPhone installieren und ausführen zu können. iOS führt zum Schutz vor Schadsoftware (und zur Wahrung von Apples Geschäftsmodell) ausschließlich Code aus, der mit einem von Apple ausgestellten, gültigen Zertifikat signiert ist. Dieses Verhalten nennt sich Mandatory Code Signing oder kurz Code Signing.

Das Code Signing besteht aus vier Elementen. Das erste Element sind Zertifikate. Jede App muss ein von Apple ausgestelltes und signiertes Zertifikat besitzen, ansonsten verweigert der iOS-Kernel das Laden der App. Damit ein Gerät eine selbstgeschriebene und mit dem eigenen Entwicklerzertifikat signierte App als gültig akzeptiert, muss es ein passendes Provisioning Profile besitzen. Ein Provisioning Profile oder Bereitstellungsprofil verbindet das Entwicklerzertifikat mit einer App und einem Gerät, auf dem die App laufen soll.

Darüber hinaus gibt es Entitlements, mit denen Sie spezielle Berechtigungen für eine App vergeben können. Den Zugriff auf die iCloud oder das Empfangen von Apple Push Notifications regeln beispielsweise Entitlements; dazu jedoch später mehr. Eine App ohne diese besonderen Anforderungen benötigt auch keine speziellen Entitlements.

Sie können in Xcode zwar auch ohne gültiges Entwicklerzertifikat ein iOS-Gerät als Ziel auswählen, wie Abbildung 1.34 zeigt, das Ausführen des Projektes schlägt indes fehl (siehe Abbildung 1.35).

Abbildung

Abbildung 1.34 Auswahl eines nicht näher spezifizierten iOS-Gerätes

Abbildung

Abbildung 1.35 Ohne Moos nix los.


Rheinwerk Computing - Zum Seitenanfang

1.2.5Entwicklerzertifikat und EntwicklungsprofileZur nächsten ÜberschriftZur vorigen Überschrift

Um nach dem Abschluss einer kostenpflichtigen Mitgliedschaft als iOS-Entwickler ein Gerät für die Entwicklung nutzen zu können, schließen Sie es an Ihren Computer an, öffnen Xcode und darin den Organizer über den Menüpunkt Window | Organizer. Im Tab Devices sehen Sie links iPhones und iPads, die Sie mit Xcode bereits verwendet haben. Wählen Sie das Gerät aus, das Sie verwenden wollen. Im Hauptfenster sehen Sie einige Angaben zum Gerät und den wichtigen Button mit der Beschriftung Use for Development.

Abbildung

Abbildung 1.36 Ein noch nicht für die Entwicklung eingerichtetes iPhone

Durch Drücken dieses Buttons weisen Sie Xcode an, das betreffende Gerät für die Entwicklung einzurichten. Bei älteren Versionen von Xcode war dies noch nicht so einfach möglich, dort musste man als Entwickler erst umständlich mit dem Schlüsselbund eine Zertifizierungsanfrage erstellen und dann im Entwicklerportal von Apple ein Entwicklerzertifikat beantragen.

Für die Einrichtung muss Xcode zunächst wissen, ob Sie sich bereits als Entwickler registriert haben und einem entsprechenden Programm beigetreten sind. Dazu zeigt es den in Abbildung 1.37 gezeigten Dialog an. Falls Sie bereits Mitglied in einem der drei Programme sind, können Sie den Button Add... drücken. Der Button Join a Program... öffnet eine Webseite in Ihrem Browser, über die Sie sich über die möglichen Programme informieren können.

Abbildung

Abbildung 1.37 Haben Sie bereits einen Entwicklerzugang?

Wenn Sie den Button Add... drücken, fragt Sie Xcode als Nächstes nach den Zugangsdaten für das Entwicklerportal, also nach der Apple ID, mit der Sie sich als zahlender iOS-Entwickler registriert haben. Dieses Konto richten Sie in den Einstellungen von Xcode unter Accounts ein; zu den Einstellungen gelangen Sie übrigens auch über den Menüpunkt Xcode | Preferences... (siehe Abbildung 1.38).

Abbildung

Abbildung 1.38 Die Account-Einstellungen von Xcode

Wenn Sie danach wieder in den Organizer wechseln, sehen Sie den Dialog aus Abbildung 1.39, über den Sie das Entwicklungsteam auswählen. Wählen Sie hier mindestens ein Team aus, und drücken Sie anschließend den Button Choose.

Abbildung

Abbildung 1.39 Das Konto für das iOS Developer Program

Xcode prüft anschließend, ob bereits ein Entwicklerzertifikat im Portal vorhanden ist. Beim ersten Durchlauf dieses Vorgangs findet Xcode natürlich kein Zertifikat und fragt über den Dialog aus Abbildung 1.40, ob es den Vorgang zum Erstellen eines Zertifikates anstoßen soll.

Abbildung

Abbildung 1.40 Xcode möchte ein Zertifikat anfordern.

Starten Sie die Anfrage über den Request-Button. Xcode erstellt anschließend im Hintergrund einen Certificate Signing Request und schickt ihn an das Entwicklerportal, um ein Zertifikat zu beantragen. Schließlich installiert es das Zertifikat und versetzt Sie damit in die Lage, Ihre eigenen Apps auf Ihrem Gerät auszuführen. Öffnen Sie nach Abschluss des Vorgangs erneut den Xcode-Organizer, und wählen Sie links das zum Test vorgesehene, angeschlossene Gerät aus.

Abbildung

Abbildung 1.41 Das Gerät ist betriebsbereit.

Sie sehen an der grünen Markierung in der Seitenleiste, dass das Gerät für die Arbeit mit Xcode bereit ist. Wechseln Sie zurück in das Hauptfenster, und wählen Sie oben in der Werkzeugleiste das Schema für das aktuelle Projekt aus. Neben den diversen Simulatoren sehen Sie dort in dem Auswahlfeld nun auch das betreffende Gerät. Wählen Sie es aus, und klicken Sie auf Run; nach der Übersetzung startet die App auf dem Gerät (siehe Abbildung 1.42).

Abbildung

Abbildung 1.42 Gerät für die Ausführung auswählen

Das Entwicklerzertifikat sowie die Bereitstellungsprofile erhalten Sie nicht nur über Xcode, sondern auch im iOS Provisioning Portal. Dieses finden Sie online, wenn Sie im iOS Dev Center [Anm.: https://developer.apple.com/devcenter/ios/index.action] rechts oben im Kasten iOS Developer Program auf das Element iOS Provisioning Portal klicken (siehe Abbildung 1.43).

Abbildung

Abbildung 1.43 Der Weg zum iOS Provisioning Portal

Die direkte URL des Portals lautet https://developer.apple.com/ios/manage/overview/index.action.

Im iOS Provisioning Portal finden Sie in der linken Navigationsspalte den Punkt Certificates (siehe Abbildung 1.44). Über diesen Punkt gelangen Sie zur Zertifikatsverwaltung. Sie können dort Ihr Zertifikat manuell herunterladen oder widerrufen.

Abbildung

Abbildung 1.44 Das Zertifikat im Portal

Vorsicht mit dem Schlüsselbund!

Ein Zertifikat besteht aus einem privaten Schlüssel, den Sie benötigen, um damit Operationen (wie z. B. das Signieren) durchzuführen. Das Zertifikat selbst ist der öffentliche Schlüssel, über den Dritte – in diesem Fall der iOS-Kernel Ihres Entwicklungsgeräts – Ihre Identität prüfen können. Den privaten Schlüssel zum Zertifikat legt Xcode bei der Erzeugung des Zertifikates im Schlüsselbund Ihres Rechners ab. Apple kennt diesen Schlüssel nicht und hat auch keine Sicherheitskopie davon. Das bedeutet, dass Sie gut auf Ihren Schlüsselbund und die darin enthaltenen Objekte achten müssen. Denn wenn Ihnen der private Schlüssel abhandenkommt, können Sie Ihr Zertifikat nicht mehr verwenden und müssen ein neues ausstellen.

Wenn Sie das Zertifikat auf Ihren Mac herunterladen, können Sie sich mit dem bordeigenen OpenSSL-Paket die Details anschauen. Öffnen Sie dazu das Programm Terminal, wechseln Sie in den Ordner, in dem sich Ihr Zertifikat befindet, und geben Sie dort den folgenden Befehl ein:

openssl x509 -text -inform der -in ios_development.cer

Das Ergebnis ist eine Darstellung der im Zertifikat gespeicherten Informationen wie in Abbildung 1.45.

Abbildung

Abbildung 1.45 Das Entwicklerzertifikat in der Detailansicht.


Rheinwerk Computing - Zum Seitenanfang

1.2.6Apps mit speziellen FunktionalitätenZur nächsten ÜberschriftZur vorigen Überschrift

Jede App benötigt zur Ausführung eine App-ID. Das ist eine Kennung, für die die Berechtigungen einer App bei Apple hinterlegt sind. Vor Xcode 5 erfolgte die Konfiguration der App-IDs ausschließlich über das Entwicklerportal; analog zum Erstellen eines Entwicklerzertifikates können Sie dies nun bequem über Xcode erledigen.

Öffnen Sie dazu das Capabilities-Tab in den Projekteinstellungen. Dort finden Sie alle Berechtigungen, die Sie einer App zuweisen können (siehe Abbildung 1.46).

Sie lernen im Laufe dieses Buches noch einige dieser Berechtigungen kennen. An dieser Stelle führen wir Ihnen vor, wie Sie einer App diese Berechtigungen hinzufügen. Dazu aktivieren Sie die betreffende Berechtigung über den korrespondierenden On/Off-Schalter auf der rechten Seite. Xcode fragt Sie anschließend nach dem für diesen Vorgang zu verwendenden Entwicklerkonto (siehe Abbildung 1.47).

Abbildung

Abbildung 1.46 Mögliche Berechtigungen für eine App

Abbildung

Abbildung 1.47 Das Entwicklerkonto für die Berechtigungsoperation

Wenn Sie den Button Choose drücken, legt Xcode gegebenenfalls im Entwicklerportal eine passende App-ID mit den dazugehörenden Berechtigungen an. Nach Abschluss der Kommunikation zwischen Xcode und dem Entwicklerportal aktiviert Xcode die betreffende Berechtigung.

Abbildung

Abbildung 1.48 Aktivierung der Datenverschlüsselung

App-IDs are forever

Sie können im Entwicklerportal oder über Xcode beliebig viele App-IDs manuell anlegen. Nachdem Sie jedoch eine App-ID angelegt haben, lässt sie sich weder löschen noch verändern, und selbst eine Supportanfrage bei Apple hat wenig Erfolgschancen. Noch nicht einmal die Beschreibung können Sie anpassen. Sie sollten sich also vor dem Anlegen genau überlegen, ob Sie wirklich diese Kennung benötigen und welche Werte Sie dafür eingeben. Am besten legen Sie also eine neue App-ID im Portal erst an, wenn Sie sie auch tatsächlich benötigen.


Rheinwerk Computing - Zum Seitenanfang

1.2.7ProfilproblemeZur vorigen Überschrift

Es kann vorkommen, dass sich Xcode weigert, Ihre App auf Ihrem Gerät zu installieren und zu starten. Xcode bricht den Build-Prozess mit einer Fehlermeldung – einem Code-Sign-Fehler – ab. Diese Meldung kann unterschiedliche Gründe haben.

Als Erstes sollten Sie überprüfen, ob Xcode auch das richtige Zertifikat verwendet. Öffnen Sie dazu im Target den Reiter Build Settings, und geben Sie im Suchfeld den Begriff »Code Signing« ein. Unter Code Signing Identity sollte das Target für die Konfiguration Debug den Schlüssel Any iOS SDK und den Wert iPhone Developer enthalten (siehe Abbildung 1.49).

Abbildung

Abbildung 1.49 Anzeige des Entwicklungszertifikats

Danach öffnen Sie im Organizer den Reiter Devices und darunter den Menüpunkt Provisioning Profiles. Sie sehen hier in einer Tabelle alle Profile, die Xcode zur Verfügung stehen. Entwicklungsprofile haben nur eine begrenzte Gültigkeitsdauer. Das Verfallsdatum zeigt Ihnen die mittlere Spalte Expiration Date der Tabelle an. Ein abgelaufenes Profil hat zudem in der Spalte Status den Eintrag Profile has expired mit einem roten Ausrufezeichen davor (siehe Abbildung 1.50).

Abbildung

Abbildung 1.50 Profile mit unterschiedlichen Zuständen im Organizer

Bei abgelaufenen Profilen finden Sie einen Button Renew, mit dem Sie das Profil aktualisieren können. Schließlich sollten Sie noch die Profile auf dem Gerät überprüfen. Im Organizer finden Sie unter dem Gerät, wenn es angeschlossen ist, den Menüpunkt Provisioning Profiles. Darüber können Sie die installierten Profile auf dem Gerät ansehen und auch gegebenenfalls über den Minus-Button löschen. Alternativ können Sie sie aber auch in den Einstellungen Ihres Gerätes unter AllgemeinProfil(e) ansehen. Sie sollten unbedingt abgelaufene Profile von Ihren Geräten löschen, da iOS sie manchmal gegenüber den aktuellen Profilen bevorzugt.

Abbildung

Abbildung 1.51 Anzeige der Profile auf dem iPhone



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück




Copyright © Rheinwerk Verlag GmbH, Bonn 2014
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern


  Zum Rheinwerk-Shop
Zum Katalog: Apps programmieren für iPhone und iPad






Neuauflage: Apps programmieren für iPhone und iPad
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Einstieg in Objective-C 2.0 und Cocoa






Einstieg in Objective-C 2.0 und Cocoa


Zum Katalog: Spieleprogrammierung mit Android Studio






Spieleprogrammierung mit Android Studio


Zum Katalog: Android 5






Android 5


Zum Katalog: iPhone und iPad-Apps entwickeln






iPhone und iPad-Apps entwickeln


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo