1.2 App geht's ...
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 verstehen lernen, wie Sie eine App in Xcode erstellen, also eine App, 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 ihn drückt, ruft die App im Hintergrund eine URL aus dem Internet ab und zeigt den Inhalt der abgerufenen Seite an. Sie lernen damit drei für die App-Entwicklung essenzielle Kommunikationsrichtungen kennen:
- Benutzer an App
- App an Benutzer
- App ins Internet
Projektinformation
Den Quellcode des nachfolgenden Beispiels finden Sie auf der beiliegenden DVD im Ordner Code/Apps/GetURL oder im Github-Repository zum Buch im Unterverzeichnis Apps/GetURL. Sie können das Github-Repository über die URL https://github.com/hinkeldei/iPhone/tree/Auflage_2 erreichen. Sie können dort den kompletten Inhalt in einer ZIP-Datei laden.
Alternativ können Sie auch eine Arbeitskopie über die Anweisung git clone git://github.com/hinkeldei/iPhone.git erstellen. Falls Sie mit Git noch nicht vertraut sind, schlagen Sie in Kapitel 9 nach; dort ist die Arbeit mit Git ausführlich erläutert. Außerdem finden Sie dort eine detaillierte Anleitung, wie Sie das komplette Repository auschecken können.
1.2.1 Ein neues Projekt

Um die Beispiel-App zu erstellen, erzeugen Sie in Xcode ein neues Projekt vom selben Typ wie im vorangegangenen Absatz (iOS • Single View Application). Bei der Konfiguration des Namens und der Projektparameter setzen Sie dieselben Angaben wie in Abbildung 1.13 gezeigt.
Von besonderer Wichtigkeit ist die aktivierte Checkbox beim Use Automatic Reference Counting. Was sich genau dahinter verbirgt, erklärt das nächste Kapitel – an dieser Stelle reicht es zu wissen, dass das Automatic Reference Counting (ARC) für die automatische Speicherverwaltung Ihrer App zuständig ist. Wenn Sie die Checkbox deaktivieren, müssen Sie sich selbst um die Speicherverwaltung kümmern, was aber seit iOS 5 nicht mehr notwendig ist. Und wer macht sich schon freiwillig mehr Arbeit als notwendig?
Abbildung 1.13 Projekt-Einstellungen für die Beispiel-App
Geben Sie einen Speicherort für das Projekt an, und öffnen Sie nach dem Erscheinen des Xcode-Hauptbildschirms durch einen einfachen Klick die Datei ViewController.xib. Diese Datei enthält die grafische Benutzerschnittstelle oder kurz GUI Ihrer App (siehe Abbildung 1.14).
Abbildung 1.14 Der Inhalt der Datei »ViewController.xib«
Da Sie beim Anlegen des Projekts eine App auf Basis eines einzelnen Views gewählt haben, hat Xcode uns mit der Datei ViewController.xib bereits diesen View angelegt. Ein View ist ein Objekt, das etwas anzeigt. Wählen Sie auf dem Millimeterpapier den View, das ist die graue Fläche, mit der Maus aus, und öffnen Sie auf der rechten Seite des Xcode-Fensters die Utilities, indem Sie in der Titelzeile auf den entsprechenden Button klicken (siehe Abbildung 1.15).
Abbildung 1.15 Öffnen der Utilities-Ansicht
Unten rechts in der Utilities-Ansicht finden Sie die Objektbibliothek, wenn Sie das Würfel-Symbol auswählen (siehe Abbildung 1.16) und im Suchfeld ganz unten das Wort »label« eingeben.
Abbildung 1.16 Die Objektbibliothek
Ein Label zeigt, wie Sie auch der Beschreibung entnehmen können, einen View zur Anzeige von Text auf der Benutzeroberfläche einer App. Um mehr als den kurzen Beschreibungssatz zu sehen, klicken Sie einmal auf das Label (oder auf ein beliebiges Objekt in der Objektbibliothek), und ein Popup-Fenster mit einer ausführlicheren Beschreibung erscheint (siehe Abbildung 1.17).
Abbildung 1.17 Ausführliche Beschreibung des betreffenden Objekts
Ziehen Sie ein Label auf den View, und platzieren Sie es oben links im View, so wie es Abbildung 1.18 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 1.18 Platzieren eines Label 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 Hilfslinie erscheint (siehe Abbildung 1.19).
Abbildung 1.19 Größenänderung des Labels
Danach setzen Sie noch die Text-Ausrichtung des Labels im Attributinspektor auf zentriert (siehe Abbildung 1.20). Sie können den Attributinspektor öffnen, indem Sie das Label im View auswählen
und die Tastenkombination
+
+
drücken.
Abbildung 1.20 Ausrichtung der Label-Beschriftung im Attributinspektor
Suchen Sie anschließend in der Objektbibliothek nach »Button«, und ziehen Sie ein Objekt des Typs Round Rect Button (siehe Abbildung 1.21) 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 1.21 Einen Button in der Objektbibliothek suchen
Um dem Button eine Beschriftung zu geben, klicken Sie doppelt in dessen Mitte und geben dort den Text »Go!« ein.
Nach Abschluss dieser Arbeiten verfügt Ihre GUI über ein Label und einen Button. Übersetzen
und starten Sie die App im Simulator über den Run-Button von Xcode oder mit
+
, wie Sie das bereits zum Testen Ihrer Xcode-Installation gemacht haben. Sie sehen
anschließend den grauen View mit dem Label und dem Button (siehe Abbildung 1.22). Das Drücken des Buttons verändert zwar dessen Farbe, ansonsten tut sich aber nichts.
Es fehlen jetzt noch die eigentliche Funktionalität der App und die Verbindung von
Label und Button mit dieser Funktionalität. Das Ziel ist, dass der Benutzer durch
das Drücken des Buttons das Laden einer URL auslöst und das Label dann den Inhalt
der URL anzeigt.
Abbildung 1.22 Beschriftung des Buttons
1.2.2 Sehr verbunden

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 mitgeliefert, die sich auf 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 soll die Logik des Bespielprogramms beherbergen. Dazu müssen Sie zwei Verbindungen zwischen der GUI und der Klasse ViewController herstellen. Wählen Sie dazu die Datei ViewController.xib aus, und öffnen Sie anschließend über den betreffenden Button in der Titelleiste den Hilfseditor, wie Abbildung 1.23 zeigt.
Abbildung 1.23 Der Hilfseditor
Aktivieren Sie den Hilfseditor durch einen Klick in dessen Fenster, und wählen Sie danach links in der Dateiübersicht die Datei ViewController.h aus, sodass der Hilfseditor diese Datei anzeigt. Sie sollten nun im Haupteditor die GUI der App und im Hilfseditor ViewController.h geöffnet haben (siehe Abbildung 1.24).
Abbildung 1.24 Haupt- und Hilfseditor
Sie können jetzt Verbindungen von GUI-Elementen direkt in den Code ziehen und so GUI und Programmierung verbinden. Im vorliegenden Beispiel wollen wir das Label aus dem Code heraus ansprechen können, um seinen Wert verändern zu können. Darüber hinaus soll das Drücken des Buttons zu einer Aktion führen, sodass es eine Verbindung vom Button zu einer Methode geben muss.
Ziehen Sie daher bei gedrückter
-Taste mit der Maus eine Verbindung vom Label in den Hilfseditor, und lassen die Maustaste
dort unterhalb der Zeile los, die mit dem Schlüsselwort @interface beginnt (siehe Abbildung 1.25).
Abbildung 1.25 Eine Verbindung von Label zum Code erstellen
Wenn Sie die Maus loslassen, erscheint ein Popup, in dem Sie die Art der anzulegenden Verbindung definieren (siehe Abbildung 1.26). Eine Verbindung vom Code zur GUI nennt sich Outlet. Behalten Sie die Voreinstellungen bis auf den Bezeichner bei, für den Sie im Feld Name den Text »label« eingeben. Klicken Sie anschließend auf Connect, um die Verbindung erstellen zu lassen.
Abbildung 1.26 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. Beim Button ist die umgekehrte Kommunikationsrichtung vorgesehen: Das Drücken des
Buttons soll eine Aktion im Code ausführen. Ziehen Sie dafür ebenfalls bei gedrückter
-Taste eine Verbindung vom Button in den Hilfseditor unter die eben von Xcode erzeugte
Zeile mit dem Label (siehe Abbildung 1.27).
Abbildung 1.27 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 auf Action (siehe Abbildung 1.28). Den Namen der neuen Verbindung setzen Sie auf »button«, und anschließend bestätigen Sie die Einstellungen durch Connect.
Abbildung 1.28 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:. Außerdem ergänzt Xcode die Datei ViewController.m um eine neue, leere Methodenimplementierung, 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.
- (IBAction)go:(id)sender {
}
Wenn der Nutzer den Button auf der GUI der App drückt, ruft die App diese Methode auf. Sie können jetzt schon die Probe aufs Exempel machen und prüfen, ob der Button tatsächlich diese Methode aufruft. Erweitern Sie die Methode go: um den folgenden Log-Aufruf, sodass die Datei ViewController.m die folgende Implementierung der Methode enthält:
- (IBAction)go:(id)sender {
NSLog(@"[+] go:");
}
Listing 1.1 Die erste Implementierung einer Methode
Mit dieser Methode veranlassen Sie die App, den Namen der Methode in die Konsole zu
schreiben, in der dieser Aufruf erfolgt ist. Aktivieren Sie die Debug-Ansicht von Xcode über den entsprechenden Button oben rechts im Fenster (siehe Abbildung 1.29) oder über die Tastenkombination
+
+
.
Abbildung 1.29 Aktivieren der Debug-Ansicht
Übersetzen und starten Sie anschließend die App mit dem Run-Button oder über
+
, und beobachten Sie die Ausgabe im Debug-Fenster von Xcode am unteren Bildschirmrand.
Sobald der Simulator den View mit dem Label und dem Button anzeigt, betätigen Sie
den Button in der App. Im Debug-Fenster von Xcode erscheint der Name der Methode go: wie in Abbildung 1.30. Das Drücken des Buttons führt also zum Aufruf der vorgesehenen Methode; Sie können
nun über die GUI mit der App interagieren.
Abbildung 1.30 Die Debug-Ausgabe beweist: Der Button ruft die Methode auf.
1.2.3 Netzwerk und Ausgabe

Im nächsten Schritt erweitern Sie die Funktionalität der App. Dazu suchen Sie in der Datei ViewController.m die oben erzeugte Methode go: und ergänzen sie 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.2 Abfrage einer Webseite
Dieser Code fragt den Inhalt der Webseite www.rodewig.de/ip.php ab und sendet ihn an das Label in der GUI 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 sie keinen Fehler enthält, hat sie den Wert nil. Zum Schluss aktualisiert die Methode noch die Anzeige des Labels, indem sie die Methode setText: des Labels aufruft.
Stoßen Sie jetzt erneut über
+
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.31).
Abbildung 1.31 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 unter der go:-Direktive noch die folgende Methode hinzu:
- (void)viewWillAppear:(BOOL)inAnimated {
[super viewWillAppear:inAnimated];
NSLog(@"[+] viewWillAppear:");
[self.label setText:@"Moin!"];
}
Listing 1.3 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.
1.2.4 Test auf einem Gerät

Wie in Abschnitt 1.1.1 erwähnt wurde, benötigen Sie ein kostenpflichtiges Enwicklerzertifikat, um selbst programmierte 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 selbst geschriebene 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 noch Entitlements, mit denen Sie spezielle Berechtigungen für eine App vergeben können. Den Zugriff auf die iCloud oder das Versenden von Apple Push Notifications regeln beispielsweise Entitlements; dazu jedoch später mehr. Eine App ohne diese besonderen Anforderungen benötigt auch keine speziellen Entitlements.
1.2.5 Entwicklungszertifikat und Entwicklungsprofile

Das Entwicklerzertifikat sowie die Bereitstellungsprofile erhalten Sie im iOS Provisioning Portal. Dieses finden Sie online, wenn Sie im iOS Dev Center [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.32).
Abbildung 1.32 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.33). Über diesen Punkt gelangen Sie zu dem Dialog, über den Sie ein Entwicklerzertifikat beantragen und nach der Erzeugung durch Apple herunterladen können.
Abbildung 1.33 Erstellen eines Entwicklerzertifikats
Der Ablauf zum Erhalt eines Entwicklerzertifikats entspricht dem gängigen Verfahren zum Erstellen von Zertifikaten in PKI [Public-Key-Infrastruktur: Ein System zum Ausstellen, Verteilen und Prüfen von digitalen Zertifikaten]-Umgebungen. Sie müssen zunächst auf Ihrem lokalen System einen Certificate Signing Request (CSR) erstellen, eine Aufforderung an eine Zertifizierungsstelle, Ihnen ein signiertes Zertifikat auszustellen. Den CSR laden Sie auf den Apple-Server, der daraus ein von Apple signiertes Zertifikat erzeugt. Das Zertifikat laden Sie herunter und importieren es in Xcode, das es im Schlüsselbund Ihres Systems ablegt.
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 legen Sie 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 abhanden kommt, können Sie Ihr Zertifikat nicht mehr verwenden und müssen ein neues ausstellen.
Klicken Sie in dem Dialog aus Abbildung 1.33 rechts auf den Button Request Certificate, und folgen Sie den Anweisungen auf der sich öffnenden Seite, die wir im Folgenden durchlaufen werden.
Den CSR erzeugen Sie mit dem Schlüsselbund Ihres Systems. Dieses Programm finden Sie im Finder über /Programme/Dienstprogramme/Schlüsselbundverwaltung. Über dessen Menüpunkt Schlüsselbundverwaltung • Zertifikatsassistent • Zertifikat einer Zertifizierungsstelle anfordern ... (siehe Abbildung 1.34) öffnen Sie den Assistenten, mit dem Sie die Anfrage erzeugen.
Abbildung 1.34 Der Weg zur Erzeugung des CSR
Geben Sie im ersten Dialog Ihre E-Mail-Adresse und Ihren Namen ein (siehe Abbildung 1.35). Beide sollten mit Ihren Daten im iOS Developer Program übereinstimmen, denn sie sind ein Bestandteil des CSR, und damit gehören sie auch zum dem von Apple erzeugten Zertifikat. Achten Sie daher auf die korrekte Schreibweise Ihrer Angaben.
Abbildung 1.35 Die Angaben zum CSR
Das Feld E-Mail der Zert.-Instanz lassen Sie frei, und unter Anfrage wählen Sie Auf der Festplatte sichern. Über den Button Fortfahren sichern Sie das Dokument für die Anfrage auf der Festplatte. Der Zertifikatsassistent erzeugt dann eine Datei CertificateSigningRequest.certSigningRequest mit einem kryptischen Inhalt (siehe Abbildung 1.36). Lediglich die Kommentarzeilen deuten auf eine Zertifikatsanfrage hin.
Abbildung 1.36 Der CSR im Editor
Um die enthaltenen Daten des CSR zu sehen und zu überprüfen, können Sie im Terminal das Programm openssl verwenden. Über den Befehl
openssl req -in CertificateSigningRequest.certSigningRequest
-text –noout
zeigt es Ihnen den unkodierten Inhalt der Datei an. Sie finden in der Ausgabe unter anderem Ihre E-Mail-Adresse und Ihren Namen wieder (siehe Abbildung 1.37).
Abbildung 1.37 Der CSR, mit openssl betrachtet
Im Provisioning Portal laden Sie den CSR über den Button Datei auswählen im Dialog für die Zertifikatsanfrage hoch (siehe Abbildung 1.38). Wählen Sie die vom Zertifikatsassistenten erzeugte Datei aus, und starten Sie das Hochladen über den Submit-Button.
Abbildung 1.38 Hochladen des CSR
Das Erzeugen Ihres Entwicklerzertifikats erfolgt bei Apple automatisiert, und nach kurzer Zeit, gegebenenfalls nach erneutem Anklicken des Reiters Development, steht es zum Download im Portal bereit (siehe Abbildung 1.39).
Abbildung 1.39 Das fertige Entwicklerzertifikat
Als Nächstes laden Sie das Zertifikat über den Button Download rechts daneben herunter. Der Link Revoke ganz rechts dient dazu, das Zertifikat zu widerrufen. Dies ist z. B. dann notwendig, wenn Sie Ihren privaten Schlüssel verloren haben, beispielsweise durch Verlust oder Defekt Ihres Entwicklungsrechners. In diesem Fall widerrufen Sie das Zertifikat über den Link und erstellen einfach ein neues. Den Inhalt des heruntergeladenen Zertifikats können Sie ebenfalls mit openssl prüfen. Der Befehl dazu lautet:
openssl x509 -text -inform der -text -noout -in ios_development.cer
Laden Sie neben Ihrem Ent8wicklerzertifikat auch noch das WWDR intermediate certificate herunter, das die Zertifizierungskette vom Entwicklerzertifikat bis zur Root Certificate Authority (Root-CA) von Apple herstellt. Der Link dafür befindet sich direkt unter Ihrem Entwicklerzertifikat im iOS Provisioning Portal. Beide Zertifikate importieren Sie durch Doppelklick in den Schlüsselbund Ihres Entwicklungsrechners.
Als Nächstes müssen Sie Ihr iPhone oder iPad als Entwicklungsgerät anmelden. Öffnen
Sie dazu in Xcode den Organizer über Window • Organizer oder
+
+
, und verbinden Sie Ihr iOS-Gerät über ein passendes Kabel mit Ihrem Computer.
Abbildung 1.40 Geräteregistrierung
Öffnen Sie im Organizer den Reiter Devices, wo Sie in der linken Seitenleiste Ihr iOS-Gerät finden. Wenn Sie es auswählen, zeigt Ihnen der Organizer ein Bild und einige technische Daten an. Außerdem sollte dort der Button Use for Development erscheinen, wenn Sie das Gerät auf dem Rechner noch nicht registriert haben (siehe Abbildung 1.40).
Wenn Sie diesen Button anklicken, beginnt Xcode mit der Registrierung des Geräts im Portal. Dazu müssen Sie Ihr Login und Ihr Passwort für das Portal eingeben. Außerdem müssen Sie das Passwort für Ihren Schlüsselbund eingeben, damit Xcode von dort das Entwicklungszertifikat lesen kann. Bei einer unbekannten iOS-Version auf dem Gerät importiert Xcode außerdem noch notwendige Daten des Betriebssystems von dort.
Registrierungsstatus
Den Registrierungsstatus können Sie auch in der Seitenleiste sehen. Dort erscheint neben einem nicht registrierten Gerät ein grauer Tropfen. Bei registrierten Geräten mit gültigen Profilen oder Zertifikaten ist der Tropfen grün. Bei ungültigen oder abgelaufenen Profilen beziehungsweise Zertifikaten zeigt der Organizer einen orangefarbenen Tropfen an.
Die beschriebenen Schritte laufen bis auf die Nutzereingaben automatisch ab. Bei diesem Prozess erzeugt Xcode im Portal ein Entwicklungsprofil mit dem Namen Team Provisioning Profile, das einen Stern enthält und dadurch auf alle App-IDs passt und ein Jahr lang gültig ist. Andererseits können Sie aber mit diesen Wildcard-Profilen nicht alle iOS-Funktionen nutzen. Dazu gehören Push-Notifications, In-App-Purchase, Game-Center und iCloud.
Nachdem Sie Ihr iOS-Gerät erfolgreich registriert haben, können Sie Ihre Apps darauf testen. In der Schema-Auswahl (siehe Abbildung 1.41) sollte jetzt auch der Name Ihres iOS-Geräts enthalten sein. Wählen Sie ihn aus, und klicken Sie auf Run. Nach der Übersetzung sollte die App auf dem Gerät starten.
Abbildung 1.41 Auswahl des Schemas in Xcode
Beim Start über Xcode läuft Ihre App dann im Debugmodus. Sie können also beispielsweise Breakpoints setzen und Ihr Programm während der Ausführung untersuchen. Außerdem können Sie die hardware-abhängigen Funktionen der App testen. Dazu gehören beispielsweise der Zugriff auf die Kamera, den Bewegungs- und den Gyrosensor.
1.2.6 Entwicklerprofile ohne Wildcards

![]()
Wie bereits erwähnt wurde, können Sie mit einem Wildcard-Profil nicht alle Funktionen testen. Zum Testen von Push-Benachrichtigungen, für In-App-Bezahlungen oder Apps mit Game-Center-Integration brauchen Sie Entwicklerprofile ohne Wildcards. Diese Profile können Sie aber nicht über Xcode, sondern nur über das Portal erzeugen. Zum Testen reicht zwar im Allgemeinen das Wildcard-Profil aus, trotzdem sollen Sie hier die Schritte zur Erstellung eines spezifischen Profils für eine App kennenlernen.
Melden Sie sich dazu im Provisioning Portal an, und wählen Sie in der linken Menüleiste den Punkt App IDs aus. Dort finden Sie die bereits bestehende Kennung und oben rechts den Button New App ID. Wenn Sie diesen Button anklicken, gelangen Sie zur Registrierungsseite für neue App-IDs. Sie müssen drei Angaben bei der Registrierung einer neuen App-ID machen:
- In das Feld Description geben Sie eine Beschreibung der Kennung ein. Sie dürfen hier alphanumerische Zeichen und das Leerzeichen verwenden. Verwenden Sie eine sinnvolle Beschreibung oder den Namen Ihrer App, damit Sie die Kennungen gut voneinander unterscheiden können.
- Bei der Bundle Seed ID können Sie eine bestehende auswählen oder eine neue anlegen. Apps mit gleicher Bundle Seed ID können auf die gleichen Schlüsselbundeinträge auf Ihrem iOS-Gerät zugreifen – also Logins und Passwörter teilen. Sie brauchen sich darüber aber nur Gedanken machen, wenn Sie in Ihren Apps tatsächlich auf den Schlüsselbund zugreifen.
- Als Bundle Identifier müssen Sie genau den Bundle Identifier, also die App-ID, Ihrer App verwenden. In der Regel legen Sie diese Kennung beim Anlegen des Projekts fest. Sie finden diese Zeichenkette in Ihrem Projekt, indem Sie das Target und dann den Reiter Summary auswählen. Beispielsweise lautet die App-ID des Beispielprojekts mit den Eingaben aus Abbildung 1.13 de.cocoaneheads.GetURL.
App-IDs are forever
Sie können beliebig viele App-IDs 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-IDs im Portal erst an, wenn Sie sie auch tatsächlich benötigen.
Nachdem Sie die App ID erfolgreich angelegt haben, wählen Sie im Portal unter dem Menüpunkt Provisioning den Reiter Development aus. Dort finden Sie Ihre Entwicklungsprofile, und die Liste sollte bereits Ihr Team Provisioning Profile enthalten. Wenn Sie dort den Button New Profile anklicken, gelangen Sie zu der Seite, auf der Sie ein neues Profil anlegen können. Für die Erzeugung eines neuen Profils müssen Sie einen Namen, ein Entwicklungszertifikat, eine App-ID und die Geräte auswählen, für die dieses Zertifikat gültig ist. Machen Sie die entsprechenden Eingaben, und klicken Sie auf Submit.
Die Profilseite enthält jetzt auch Ihr neues Profil mit dem Status Pending. Dieser Zustand dauert in der Regel allerdings nur einige Sekunden an, und das Profil steht bereits nach einem Neuladen der Seite zur Verfügung.
Sie müssen dieses Profil nun in Xcode importieren. Öffnen Sie dazu im Organizer den Menüpunkt Provisioning Profiles unter dem Reiter Devices. Wenn Sie den Button Refresh anklicken, lädt Xcode alle Entwicklungsprofile aus dem Portal.
Xcode installiert allerdings nur das Team Provisioning Profile automatisch auf Ihre Geräte. Wenn Sie andere Profile nutzen wollen, müssen Sie sie manuell auf Ihrem iOS-Gerät installieren. Ziehen Sie dazu einfach das Profil aus der Liste auf das iOS-Gerät in der Seitenleiste des Organizers.
1.2.7 Profilprobleme
Es kann jedoch leider auch 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 die Worte »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.42).
Abbildung 1.42 Anzeige des Entwicklungszertifikats
Danach öffnen Sie im Organizer den Reiter Devices und darunter den Menüpunkt Provisioning Profiles. Sie können hier in einer Tabelle alle Profile sehen, 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.43).
Abbildung 1.43 Profile mit unterschiedlichen Zuständen im Organizer
Bei abgelaufenen Profilen finden Sie einen Button Renew, mit dem Sie das Profil aktualisieren können. Falls das nicht funktioniert, können Sie auch im Provisioning Portal unter dem Menüpunkt Provisioning das Profil erneuern. Dazu öffnen Sie es über den Link Edit • Modify. Ändern Sie irgendeine Einstellung, damit das Portal den Submit-Button aktiviert, [Sie dürfen dann die soeben vorgenommene Einstellung gern wieder zurücknehmen.] und drücken Sie ihn. Danach gelangen Sie zurück zu der Übersicht, die nach dem Neuladen der Seite das aktualisierte Profil anzeigt. Über den Button Refresh, den Sie im Organizer rechts unten unter Devices • Provisioning Profiles finden, können Sie alle Profile aus dem Portal auf Ihrem Rechner installieren.
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 oder
löschen. Alternativ können Sie diese aber auch in den Einstellungen Ihres Gerätes unter Allgemein • Profil(e) ansehen. Sie sollten unbedingt abgelaufene Profile von Ihren Geräten löschen, da
iOS diese manchmal gegenüber den aktuellen Profilen bevorzugt.
Abbildung 1.44 Anzeige der Profile auf dem iPhone
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.




































Jetzt bestellen





