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

Inhaltsverzeichnis
Geleitwort
Vorwort
1 Hello iPhone
2 Grundlagen
3 Views und Viewcontroller
4 Alles unter Kontrolle
5 Daten, Tabellen und Controller
6 Models, Layer, Animationen
7 Programmieren, aber sicher
8 Datenserialisierung und Internetzugriff
9 Jahrmarkt der Nützlichkeiten
A Sicherer Entwicklungszyklus
Stichwort

Download:
- ZIP, ca. 49,9 MB
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
Galileo Computing
1000 S., geb., mit DVD
39,90 Euro, ISBN 978-3-8362-1915-0
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 Entwicklungszertifikat und Entwicklungsprofile
Pfeil 1.2.6 Entwicklerprofile ohne Wildcards
Pfeil 1.2.7 Profilprobleme
Pfeil 1.3 Zusammenfassung

Galileo Computing - Zum Seitenanfang

1.2 App geht's ...Zur 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 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.


Galileo Computing - Zum Seitenanfang

1.2.1 Ein 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 Absatz (iOSSingle 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

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

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

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

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

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

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

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 alt + cmd + 4 drücken.

Abbildung

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

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 cmd + R, 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

Abbildung 1.22 Beschriftung des Buttons


Galileo Computing - Zum Seitenanfang

1.2.2 Sehr 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 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

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

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 ctrl-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

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

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 ctrl-Taste eine Verbindung vom Button in den Hilfseditor unter die eben von Xcode erzeugte Zeile mit dem Label (siehe Abbildung 1.27).

Abbildung

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

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 ctrl + ª + Y.

Abbildung

Abbildung 1.29 Aktivieren der Debug-Ansicht

Übersetzen und starten Sie anschließend die App mit dem Run-Button oder über cmd + R, 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

Abbildung 1.30 Die Debug-Ausgabe beweist: Der Button ruft die Methode auf.


Galileo Computing - Zum Seitenanfang

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

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:Zeilenumbruch
@"http://www.rodewig.de/ip.php"];
NSString *theIP = [NSString stringWithContentsOfURL:theURL Zeilenumbruch
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 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.31).

Abbildung

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.


Galileo Computing - Zum Seitenanfang

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

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.


Galileo Computing - Zum Seitenanfang

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

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

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

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üsselbundverwaltungZertifikatsassistentZertifikat einer Zertifizierungsstelle anfordern ... (siehe Abbildung 1.34) öffnen Sie den Assistenten, mit dem Sie die Anfrage erzeugen.

Abbildung

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

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

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 Zeilenumbruch
-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

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

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

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 WindowOrganizer oder ª + cmd + 2, und verbinden Sie Ihr iOS-Gerät über ein passendes Kabel mit Ihrem Computer.

Abbildung

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

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.


Galileo Computing - Zum Seitenanfang

1.2.6 Entwicklerprofile ohne WildcardsZur nächsten ÜberschriftZur vorigen Überschrift

Icon

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:

  1. 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.
  2. 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.
  3. 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.


Galileo Computing - Zum Seitenanfang

1.2.7 ProfilproblemeZur vorigen Überschrift

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

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

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 EditModify. Ä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 DevicesProvisioning 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 AllgemeinProfil(e) ansehen. Sie sollten unbedingt abgelaufene Profile von Ihren Geräten löschen, da iOS diese manchmal gegenüber den aktuellen Profilen bevorzugt.

Abbildung

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.







<< zurück
  Zum Katalog
Zum Katalog: Apps programmieren für iPhone und iPad

Apps programmieren für iPhone und iPad
Jetzt 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: Apps entwickeln für iPhone und iPad - Videotraining






 Apps entwickeln für
 iPhone und iPad -
 Videotraining


Zum Katalog: Apps mit HTML5 und CSS3






 Apps mit HTML5
 und CSS3


Zum Katalog: iPhone- und iPad-Apps entwickeln






 iPhone- und
 iPad-Apps entwickeln


Zum Katalog: Android 4






 Android 4


Zum Katalog: Android-Apps entwickeln - Videotraining






 Android-Apps
 entwickeln -
 Videotraining


Zum Katalog: Windows Store Apps mit XAML und C#






 Windows Store Apps
 mit XAML und C#


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2013
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.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de