Wer in sein iPhone Programm einen Browser integrieren möchte, macht dies am besten mit UIWebView. Leider gibt es einige Hürden zu überwinden, denn ein Programm, welches UIWebView benutzt lässt sich nicht ohne Modifizierung einiger Header Files kompilieren. Hier merkt man die Nachteile eines selbstgestrickten SDKs. Wahrscheinlich wird es solche Probleme mit dem offiziellen SDK, welches am 6. März vorgestellt werden soll nicht mehr geben. Ich werde im Anschluss aber trotzdem kurz darauf eingehen, denn wer weiss wann wir wirklich das SDK in die Hände bekommen.
weiterlesen …
In diesem Artikel möchte ich zeigen wie man ein iPhone Programm für mehrere Sprachen fit macht. Bei Mac Programmen ist es z.B. üblich dass es nur eine Programmversion für alle Sprachen gibt. Ändert man bei den Systemeinstellungen die Sprache, ändert sich bei den Programmen die Sprache gleich mit, sofern sie für diese Sprache lokalisiert wurden. Gibt es keine Lokalisierung wird die Standardsprache benutzt. Diese Art der Lokalisierung ist auch beim iPhone implementiert und wird auf die selbe Weise programmiert. Dazu benötigt man in seinem Programm lediglich die Funktion NSLocalizedString(). Die Funktion erwartet als ersten Parameter einen Schlüssel und als zweiten Parameter einen “Fallback-String”. D.h. wenn der Schlüssel nicht existiert wird der “Fallback-String” angezeigt.
weiterlesen …
In einem älteren Artikel habe ich darüber geschrieben, wie man mit Celestial Audio auf dem iPhone wiedergeben kann. Mit dieser Methode kann man auf sehr einfache Weise fertige Audio Dateien abspielen. Möchte man jedoch selbst erzeugten Sound oder mehrere Audio-Streams gleichzeitig abspielen, wie es z.B. für Spiele notwendig ist, dann kommt man mit Celestial nicht weiter. Für diesen Fall hat Apple das AudioToolbox Framework erschaffen. Dieses Framework hat eine eigene Audio Queue, welche erschaffen wurde um reine PCM Audio Daten zu verarbeiten. Um die Funktionsweise einer Audio Queue verstehen zu können, sollte man sich im Vorfeld schon mit digitaler Audioverarbeitung auseinander gesetzt haben. Man findet zu dem Thema im Internet genug Infos, daher möchte ich nicht näher darauf eingehen. Zu empfehlen wäre noch das Buch von Bruce und Marty Fries mit dem Titel Digital Audio Essentials.
weiterlesen …
Auf dem iPhone gibt es 3 verschiedene Frameworks um Audio wiederzugeben: Core Audio, Celestial und Audio Toolbox. Zusätzlich existiert ein Audio-Daemon mediaserverd, welcher die Audio Ausgabe der verschiedenen Applikationen verwaltet und auf Events wie Telefonklingeln und das Ändern der Lautstärke reagiert. Core Audio ist das am wenigsten abstrahierte Framework (low-level), welches direkten Zugang zur Audio Hardware des iPhones bereitstellt. Es ist daher aber auch am unzugänglichsten von allen 3 Frameworks. Wenn man mit Core Audio versucht Audio Dateien wiederzugeben, dann wird der mediaserverd Prozess gekillt und damit auch die restliche Audio Ausgabe des iPhones. Daher werde ich nicht weiter auf dieses Framework eingehen. Interessierte bekommen mehr Informationen von der offiziellen Apple Developer Site. Audio Toolbox ist die nächst höhere Abstraktion und bietet Funktionen um einen digitalen Datenstrom mit Sound-Daten (zB. PCM) abzuspielen. Da dieses Framework nicht gerade einfach für Anfänger der Audio-Programmierung ist, werde ich darüber ein andermal schreiben. In diesem Beitrag möchte ich zeigen wie man mit Hilfe des Celestial Frameworks auf dem iPhone Audio wiedergeben und aufnehmen kann. Celestial ist am meisten abstrahiert, es ist vergleichbar mit QTKit bei normalen OS X Desktop Applikationen. Um eine Audio Datei abzuspielen benötigt man nur wenige Zeilen Code.
weiterlesen …
Um Fehler in einem Programm zu finden, benutzt man normalerweise einen Debugger. Da der iPhone-Code für ARM Prozessoren kompiliert wird, kann dieser auch nicht auf unserem Mac OS X oder Windows ausgeführt und damit auch nicht debugged werden. Dies ändert sich vielleicht mit dem offiziellen SDK von Apple, welches Ende Februar erscheinen soll. Wer trotzdem seinen Code debuggen muss, kann dies tun, indem er Text in der Konsole ausgibt. Dazu verwendet man in seinem iPhone Programm die Funktion NSLog(). Mit Hilfe dieser Funktion kann man sogar ganze Objekte dumpen. Hier ein kleines Beispiel:
weiterlesen …
Nachdem wir nun unser erstes Erfolgserlebnis mit dem Hello World Programm fürs iPhone hatten, möchte ich hier eine Anleitung veröffentlichen wie man in iPhone UIKit Applikationen auf die beliebte und schnelle Datenbank SQLite zugreifen kann. Unter OS X ab 10.4 (Tiger) kann man mit Core Data auf SQLite zuzugreifen, doch in der iPhone Firmware wurde bisher noch kein Core Data implementiert. Daher muss man entweder direkt die C-API von SQLite oder einen Cocoa Wrapper benutzen. Letzteres ist um einiges komfortabler, lesbarer und wartungsfreundlicher, daher ist diese Methode zu bevorzugen. In dieser Anleitung wird das hier beschriebene SDK benutzt, die Code-Beispiele funktionieren allerdings auch mit der herkömmlichen Makefile Methode (Toolchain ohne Xcode Template).
weiterlesen …
Um iPhone Cocoa Programme schreiben zu können muss man natürlich die Klassen und deren Funktionen des iPhone Cocoa Frameworks kennen. Da es von Apple noch kein offizielles SDK und somit keine offizielle Klassenreferenz gibt, muss man sich anders behelfen. Die Lösung liegt in den Header Dateien, welche man sich mit class-dump aus den iPhone Frameworks (zu finden auf dem iPhone unter /System/Library/Frameworks) extrahieren muss. In den Header Dateien sind alle Funktionen und Mitglieder einer Klasse beschrieben, so dass man eine ungefähre Vorstellung hat wie sie einzusetzen ist. Allerdings ist die Suche in den Header Dateien nicht besonders komfortabel. Gottseidank gibt es das Tool Doxygen, mit welchem man relativ einfach eine brauchbare Dokumentation bzw. Klassenreferenz bekommt. Ich habe damit eine Dokumentation für die Firmware 1.1.2 erstellt. Erfahrene Cocoa bzw. Objective C Programmierer sollten sich damit schnell zurechtfinden. Anfängern empfehle ich, sich vorher in die Cocoa Programmierung einzuarbeiten. Es gibt inzwischen einiges an guten Büchern und viele gute Webseiten zu dem Thema, welche ich demnächst hier bei iPhone-dev.de vorstellen werde.
UPDATE 2.3.2008: Ich habe die Dokumentation für Firmware 1.1.2 mit der Dokumentation für Firmware 1.1.3 ersetzt.
Nachfolgend habe ich eine Anleitung geschrieben wie man mit dem hier vorgestelltem SDK sein erstes "Hello World Programm" erstellt. Diese Anleitung ist für alle die sich mit Programmieren auskennen, wer Objective C und Cocoa kennt ist natürlich klar im Vorteil, da UIKit Programme auf dem Cocoa Framework aufbauen.
weiterlesen …
Damit man überhaupt für das iPhone Programme schreiben kann, benötigt man einige Werkzeuge. Dies wären ein Compiler und Linker, sowie die benötigen Libraries und Header-Dateien. Diese Werkzeuge, in iPhone Developer Kreisen auch als "toolchain" bezeichnet, kombiniert mit einem guten Text Editor und anderen nützlichen Funktionen, bezeichnet man als Entwicklungsumgebung, auch IDE (integrated development environment) genannt. Unter OS X gibt es mit Xcode eine kostenlose IDE, welche durch Templates erweiterbar ist, so dass man damit problemlos iPhone Applikationen erstellen kann. Wie das im einzelnen geht möchte ich hier Schritt für Schritt erklären. Bevor es allerdings losgeht müssen folgende Voraussetzungen erfüllt sein:
weiterlesen …