günstigste Hardware für iOS Entwicklung: Mac Mini Tuning

Wenn man man vorhat in die iOS Entwicklung einzusteigen und seine eigene App programmieren will, benötigt man zwingend einen Mac, der nicht gerade billig ist. Im folgenden Artikel beschreibe ich, wie ich mir für 350€ (November 2012) einen Mac für die Entwicklung meiner iPhone Apps gekauft und diesen für Xcode aufgerüstet habe.

Für die iOS Entwicklung für iPhone und iPad benötigt man zwingende einen Mac mit Intel Prozessor. Leider sind diese nicht besonders günstig zu haben :(

Außerdem braucht man für die Programmierung zwingend Xcode als IDE, um auf iPhone und iPad zu testen und die App in den Store zu bringen.

Die neuste Version Xcode (4.5 aktuell) wiederum benötigt zwingend Mac OS X 10.7, was als Mindestanforderungen 2GB RAM und mindestens eine Intel Core 2 Duo benötigt (Achtungen, einen Intel Core Duo reicht nicht aus!).

Als günstigste Alternative habe ich mir deshalb einen gebrauchten Mac Mini gekauft mit

weiterlesen…

Teil 2: Clean Code – richtige und falsche Kommentare

Nach dem Buch (Kapitel 4):  “Clean Code – Refactoring, Patterns, Testen und Techniken für sauberen Code” von Robert C. Martin.

“Kommentieren Sie schlechten Code nicht – schreiben Sie ihn um.”

(Brian W. Kernighan und P.J. Plaugher)

 

Kommentare können beides sein, hilfreich und hinderlich:

  • hinderlich, wenn Sie überholt sind und Fehlinformationen liefern
  • störend, wenn Sie zu lang sind und unnötig
  • hilfreich, wenn Sie wohlplatziert sind

Der Einsatz von Kommentaren “soll unsere Unfähigkeit ausgleich, uns in unserem Code klar auszudrücken”(S.85). Bevor man einem Kommentar schreibt, sollte man vorher überlegen, ob der Code nicht noch ausdrucksstarker geschrieben werden könnte.

weiterlesen…

Teil 1: Clean Code – Regeln für guten, sauberen Code

Sauberen und leicht verständlichen Code zu schreiben ist das höchste Ziel in einem guten IT-Projet. Vieles hängt davon ab:

  • Wartbarkeit
  • Einarbeitungszeit für andere Programmierer, versteht man schnell, was einzelne Funktionen erledigen
  • Robustheit bei Änderungen
  • Testbarkeit, fällt alles zusammen, bei kleinen Änderungen, können schnell stabile Updates bereitgestellt werden
  • Popularität bei anderen Programmierern z.B: bei Open Source Projekten, als negative Beispiel sei XT-Commerce genannt

Das sehr zu empfehlende Standardwerk zu dem Thema ist “Clean Code – Refactoring, Patterns, Testen und Techniken für sauberen Code” von Robert C. Martin. In diesem Artikel werden Kapitel 1 bis 3 behandelt.

Aussagekräftige Namen

Der Namen einer Variable, Funktion oder Klasse sollte sofort erklären, warum Sie existiert, was sie tut und wie sie benutzt wird. Wenn eine Variable einen Kommentar benötigt, drückt Sie ihren Zweck nicht aus.

Bsp:

int d //Anzahl vergangener Tage
besser ist:
int daysSinceCreation;

Aussprechbare Namen verwenden

Keine Konstrukte mit unklaren Abkürzungen wie: int daSiCre anstatt von daysSinceCreation.

Suchbare Namen verwenden

Moderne IDEs machen das Suchen einfach, aber es nützt nichts, wenn man nach dem Buchstaben e einer Laufvariable suchen muss und von Ergebnissen überschwemmt wird.

Variablen Namen mit einem Buchstaben sind nur als lokale Variablen in kurzen Methoden zu verwenden.

weiterlesen…

iPhone Mail stürzt ab beim Absenden

Bei mir stürzt beim Verschicken der Mails das Programm ab, weil im Namen des Empfängers ein “|” enthalten ist. Mit solchen Sonderzeichen kann das iPhone interne Mail Programm nichts anfangen.

Lösung: Empfänger Email löschen und von Hand eintippen, so dass kein Sonderzeichen mehr enthalten.

Beispiel: Also anstelle der gepseicherten Variante “Mutter|Papa”, hinter welche eine Emailadresse steht, einfach eintippen “”.

erste iPhone App im App Store

Am Samstag war es soweit, meine erste App hat es in den App Store geschafft: CD Ankauf ZeeDee.

Der Warteprozess auf Aufnahme in den App Store und das Testen durch Apple gingen ziemlich schnell: Montag abend habe ich die App mit dem Application Loader hochgeladen, am Freitag kam die Nachricht, dass jetzt getestet wird und am Samstag früh wurde die App in den App Store gestellt. Meine App Store Wartezeit betrug also nur ca. 5 Tage, was absolut ok ist.

Zur App: Ich muss nicht sagen, dass diese App alle Apps revolutionieren wird und alle anderen Apps überflüssig macht. In Zukunft brauch man nur noch die CD Ankauf App und der Rest kann weg. Dadurch entfällt nerviges rumwischen auf dem Display um auf seine letzte App Auswahl Seite zu gelangen. :)

iTunes Connect nicht im App Store zu finden

Nach Veröffentlichung meiner ersten App Cd Ankauf ZeeDee, wollte ich mir die App zum Tracken der App Verkäufe/Downloads downloaden: iTunes Connect Mobile.

Dabei hat ich das Problem, dass ich Sie im App Store auf meinem iPhone nicht finden konnte:

20110829-101738.jpg

Der Ausweg war, über mein iTunes auf dem PC/MAC die App zu suchen, wo ich sie finden konnte und von dort aus zu installieren. Einfach iPhone anschließen, in iTunes auf “Gratis App” klicken und danach synchronisieren, falls nötig.

 

Probleme mit dem Apple Application Loader

Die hochzuladene .app Datei befindet sich im Ordner Projekt-Name/Build/foo.app. Diese muss gezippt werden und wird dann akzeptiert vom Loader. Um vorab zu testen, welche Probleme es gibt, sollte man Button links oben, einstellen: Active Configuration->Release. Der Button ist derselbe, bei dem man auch zwischen Simulator und Device wechseln kann.

Wenn meine seine App für Apple bereitstellt zum Testen und zum ersten Mal mit dem Application Loader hochlädt, kann es zu folgenden Problemen kommen:

application executable is missing a required architecture At least one of the following architecture(s) must be present: armv6

Dieser Fehler kann nur mit einem Versionswechsel des Application Loaders verhindert werden. Wer Version 1.4.1 hat sollte sich 1.4 oder Application Loader 1.3 installieren.

An dieser stellen fängt Apple auch gleich an zu rummeckern, dass das Icon in 57×57 Pixel groß und als png vorliegen muss. Der Sinn entzieht sich total, weil Icons in der Größe auf dem iPad und iPhone4 richtig pixelig aussehen. Deswegen ist zu empfehlen mehrer Icons anzulegen in den folgenden Größen:

57×57 (iPhone), 114×114 (iPhone4), 72×72 (iPad) und 512×512 (wer weiss, was noch kommt)

Wie stelle ich meine App in den App Store Anmeldung

Wenn ihr eine App programmiert habt und das gute Stück in den App Store uploaden wollt für die ganze Welt,müsst ihr euch einem Account vom Apple Developer Programm besorgen. Dieser kostet 99$ pro Jahr und es sollte beachtet werden, dass Apple die App aus dem App Store schmeist, wenn der Account nicht bezahlt wird jährlich.

Die App muss danach auf ITunes Connect registriert werden:

  1. App Name: wird nur im App Store angezeigt.
  2. SKU Number: selbst ausgedachte ID für die App
  3. Bundle ID: im apple developer center zu erstellen
  4. App Beschreibung Plain ohne HTML (max 4000 Bytes)
  5. Keywords für die Suche, sehr wichtig. Tipp: von Google Analytics Keywords inspirieren lassen (max 100 Bytes, entspricht ca. 10 Keywords)
  6. 2 Kategorien, von 20 möglichen, in denen die App erscheinen soll z.B: Lifestyle oder  Utilities
  7. eine Support Webseite und/oder eine allgemeine Webseite über die App (beides optional)
  8. Screenshots der App, die im App Store angezeigt werden sollen. vom iPhone und/oder iPad
  9. ein Logo für den App Store in 512×512 Pixel und mindestens 72dpi

Der App Code kann konfortabel mit dem Xcode Application Loader (/Developer/Applications/Utilities/Application Loader.app) hochgeladen werden.

Bei Problemen lesen Sie Xcode Application Loader

IOS überprüfen, ob eine Kamera vorhanden ist

Da die Apps auf allen IOS Geräten funktionieren müssen, wozu auch der iPod Touch gehört, der keine Kamera in den älteren Versionen enthält, sollte Folgendes beachtet werden:

  1. Bei notwendiger Verwendung der Kamera innerhalb der App, muss in der foo-Info.plist ein Vermerk unter Required device capabilities gemacht werden. Dann wird die App nur für Geräte installiert und angezeigt, die eine Kamera haben.
  2. Bei einer möglichen Verwendung der Kamera, sollte dies im Code geprüft werden:
        if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] == NO){
            NSLog(@"Kamera nicht vorhanden");
        }
        else{
            NSLog(@"Kamera vorhanden");
        }