Endlich Release! Speck Ab!-App ist nun im App Store, bis das aber da landete war es echt ein steiniger Weg.
Vorarbeit
Nach dem die Speck Ab!-App endlich fertig gestellt wurde habe ich mich in die Thematik App Store, Uploads und iTunes Connect eingelesen. Ein echt harter Tobak...
Zu allerster muss man sich durch den "Contracts, Tax, and Banking" Bereich unter iTunes kämpfen. Das heißt akribisch jedes Formular durchlesen und begreifen was Apple da von einem will.
- Rechtlichem zugestimmt. Check.
- Verträge sind eine Hürde, aber kein unlösbares Problem. Check.
- Banking-Infos hinterlegt. Check.
- Vertrag auf Knopfdruck bei Apple angefordert. Check.
Dies hat ca. einen Abend gekostet.
Orientiert man sich an der IBAN Nummer (Wikipedia) sieht dies für DE so aus:
DEpp bbbb bbbb kkkk kkkk kk
Dabei bedeutet:
DE = Länderkennzeichen für Deutschland
pp = zweistellige Prüfsumme mit Prüfziffern
bbbbbbbb = die 8-stellige deutsche Bankleitzahl
kkkkkkkkkk = die 10-stellige Kontonummer
Die Kontonummer ist in den letzten 10 Stellen einer deutschen IBAN hinterlegt, es gibt also
bei 8-stelligen Kontonummern einfach Nullen als vorangestellte Lückenfüller.
Aus 12345678 wird dann 0012345678. Passt!
PS. ...ob es auch noch passt, wenn ich auf das Konto in ein paar Wochen schaue, werden wir dann sehen...
Produktinfo und Testaccounts
Um eine App hoch zu laden oder In-App-Features zu verwalten begibt man sich im iTunes Connect in den Bereich "Manage Your Apps".
Für den App Store benötigt man eine Art Produktbeschreibung in den gewünschten Sprachen. Ich habe mich mit Speck-Ab! zunächst auf den Deutschen Markt konzentriert, und eine passende Produkt-Info erstellt.
An dieser Stelle verlangt Apple ein Distribution Profile. Im Apple Developer Manager habe ich mir also ein passendes Distribution Profile erzeugt und im XCode Organizer abgelegt, um spätere Builds signieren zu können.
Zu dem Zeitpunkt ist noch keine App hochgeladen. Der Status steht auf "Waiting for Upload".
Für das In-App-Feature muss man auch eine eigene Produkt-Info anlegen. Um die App lokal testen zu können, habe ich die Formulare ausgefüllt und einen passenden Testuser unter "Manage Your Apps" und "Test Users" angelegt.
Der erste Testuser hatte noch echte Daten. Ich habe mir Mühe gegeben die Daten so realistisch wie nur möglich anzugeben. Das war wieder ein Aufwand, weil ich ein Email-Konto angelegen musste, in der der Account bestätigt wurde.
Beim zweiten Testuser habe ich mir das dann gespart und hab fiktive Daten eingeben, und siehe da... das klappt auch...
Zweifel kommen hoch, ob der Kaufvorgang in Summe nicht defekt ist und beliebige User zulässt. Das konnte ich mit einem unbekannten Account aber schnell sicherstellen.
Während also die App im Beta-Test lief hat Apple versucht den In-App zu reviewen und prompt wurde das In-App-Feature abgewiesen... weil ja keine App hochgeladen wurde...
Build und Archivierung
Ein paar Tage später sollte es losgehen:
Für die Produktbeschreibung müssen Bilder in verschiedenen Auflösungen bereitgestellt werden. Konkret verlangt Apple hier Retina-Screenshots des Programms eines 3.5 und eines 4 Zoll iPhones... klar die wollen die bestmögliche Kompatibilität zum Flaggschiff, dem iPhone 5 erzwingen...
In Xcode konnte ich nun die App zuerst analysieren... was dringlich empfohlen wird, solange versteckte Memory Leaks im Code sind. Laufzeitfehler können immer mal vorkommen, das kann man beim besten Willen nicht verhindern, aber man muss sie auch nicht provozieren.
Nach dem Analyze und der Bereinigung wurde das Projekt auf fehlende Icons, Texte, Einstellungen etc. wie in den [Apple Developer Guidelines](http://developer.apple.com/library/ios/# documentation/userexperience/conceptual/mobilehig/IconsImages/IconsImages.html) verlangt untersucht.
Dank meines kleinen Ressourcen-Scripts aus Argh! Earthlings! konnte ich die Bilder schnell generieren und bereitstellen.
Archiv upload
Nach der Vorbereitung konnte ich endlich mit dem XCode Organizer die archivierte Datei an iTunes Connect senden. Bei iTunes Connect steht die vorbereitete Produktinfo auf "Waiting for Upload", sodass der Organizer kein Problem damit hat die Datei an das Produkt zu binden. Man muss lediglich das passende Distribution Profil auswählen und ab geht die Post!
Email und die iTunes Connect App meldeten den erfolgreichen Upload.
Der Status ist nun "Waiting for Review".
Den Reject beim In-App-Feature habe ich in iTunes Connect korrigiert, indem ich an der Beschreibung herum geschraubt habe. Es war mir echt nicht ersichtlich, warum Apple beim In-App-Feature das Feld "Germany" als fehlerhaft hervorhebt, ohne einen konkreten Grund zu nennen... aber egal, mit der Vielfalt der Gründe möchte ich mich an der Stelle erst gar nicht auseinandersetzen. It Works for me.
Rejected! Abgelehnt! Abgelehnt?!
Irgendwann 3 Tage nach dem Einreichen, nachts um 0 Uhr, wechselte der Status zu "In Review".
Kurz darauf kam eine Abweisung. Eine Anweisung...? What? Unter iTunes Connect gab es aber diesmal eine qualifizierte Beschreibung des Problems: Da ich mir die optionale Review Erklärung gespart habe - war ja optional - war es den Prüfern nicht klar, wie sie denn meinen In-App durchführen sollten...
An dieser Stelle hielt mir Apple eine blaue und eine rote Pille hin... soll ich das UI nun so anpassen, dass es Apple's Mitarbeiter verstehen, oder schreibe ich doch die englische Beschreibung und erspare mir die subjektiven UI-Änderungen?
Ich nahm die rote Pille:
Ich bin von meinem Konzept überzeugt. Die Beschreibung soll reichen.
Ready for Sale!
Einen Tag später kam die mit Spannung erwartete Email mit dem Status "Ready for Sale"... Naja, Sale nur im entfernten Sinne, denn die App ist ja schließlich in der Basis kostenlos. Scheint so als hatte der Apple Mitarbeiter einen guten Tag... vermutlich, weil das WWDC losging und die Apple Keynote klasse war... warum auch immer...
Die App ist nun draussen und ich bin einige Erfahrungen reicher. Ausgestattet mit dem Know-How kann ich nun an das Haupt-Projekt herantreten und eventuelle Fehler von Anfang an vermeiden.
Fazit
Die Vorbereitungen im Store rauben anfangs einem den letzten Nerv, aber nach einigen Stunden voller Ungewissheit oder "Zerstreuung" hat man den Bogen raus. Nun kann man sich an die Updates wagen, die vermutlich ähnlich ablaufen werden.
Ich kann nur alle Entwickler ermutigen nicht den Löffel hinzuschmeißen und sich durch den Dschungel zu wühlen! Der erfolgreiche Launch einer App und der Abschluss eines Projekts bringen euch einen ordentlichen Schritt im Reifeprozess nach vorn.