MoveCounter - min första iPhone-app

Puh. Har precis lyckats ladda upp mitt första iPhone-program till App Store. Nu är det bara att vänta de cirka två veckor som folk brukar säga att det tar att få den godkänd. Och så får man väl hålla tummarna för att programmet blir godkänt, man har ju läst ganska många historier om konstiga avslag. Det känns hursomhelst väldigt bra att ha fått iväg detta första program. Nu har jag lärt mig hela processen för iPhone-utveckling - från idé till färdig submission till App Store.

MoveCounter är ett program som räknar högt när du tränar. Exempelvis när du gör armhävningar eller situps. Du lägger bara din iPhone i fickan och via accelerometern känner programmet av varje “rep”. Det ska väl erkännas att programmet inte är polerat, och algoritmen som räknar reps är kanske inte heller helt perfekt - men den funkar hyfsat. Min tanke med detta projekt var mest att lära mig processen för iPhone-utveckling inför framtida mer seriösa projekt.

Om man kollar i min pomodoro-logg så har detta projekt, från idé till ivägskickning till App Store, tagit exakt 47 pomodoros. En pomodoro är 25 minuters effektivt arbete, så det blir alltså ungefär 20 timmar. Då ska man ha i åtanke att ganska stor del av tiden gått åt till att lära sig förstå hur accelerometern funkar och hur man utvecklar en smart algoritm för den (ca 5 timmar), massor av krångel med certifikat (ca 5 timmar), och rent allmänt att jag inte kunde något om XCode sen innan. Så jag är ganska säker på att jag skulle kunna utveckla ett ungefär lika komplext program på en dag nästa gång jag försöker mig på det, vilket är skoj! En dag för att gå från idé till färdig produkt!

Själva utvecklarupplevelsen i XCode är fantastiskt trevlig måste jag säga. IDE:n är kompakt, snygg och är inte “ivägen” som jag ofta känner i andra IDE-er. Det är otroligt enkelt att rita upp sitt GUI och koppla alla widgets till koden. Även debugging fungerar riktigt smidigt (man glömmer nästan att det är C man kodar :). Man kan enkelt provköra sitt program på iPhonen med en USB-kabel inkopplad, och om det skulle hänga sig kan man genast se vad debuggern spottat ut sig.

Det mest negativa i hela utvecklingsprocessen är utan tvekan certifikathanteringen. Det är otroligt många jobbiga och tråkiga steg vad gäller hanteringen av nycklar och certifikat. Allt detta känns inte alls genomtänkt, utan man blir mest förbannad. Det hela kulminerar när man ska skicka in själva binärfilen till App Store, och den säger “denna accepterar vi inte, det är något fel på den”. Tack för det otroligt specifika meddelandet! När man googlar runt hittar man massor av folk som har haft samma frustrerande problem. Dock är det bara att gå igenom Apples detaljerade instruktioner (typ 100 action points känns det som) för hur man bygger sin applikation för app store, och antagligen har man gjort en liten liten miss som gör att den inte godkänns vid uppladdning. En sådan liten miss hade i alla fall jag gjort.

Så nu väntar jag med spänning på om min applikation ska bli godkänd. En del i detta experiment är att ta reda på hur bra en medelmåttig applikation som jag sätter ut för $1 säljer. Jag har alltså inte släppt applikationen gratis, utan vill se hur bra man kan förvänta sig att en medelmåttig applikation med ett lågt pris säljer. När jag sett det några veckor kommer jag antagligen att sänka priset till gratis och lägga ut källkoden här. Dags att spendera lite tid AFK nu känner jag, over and out!

Att komma igång med iPhone-programmering

Jag fick leta en bra stund innan jag hittade en bra hands-on-guide för att ta de första stapplande stegen med XCode, objective C och Cocoa Touch. Man behöver liksom bara lära sig de absoluta grunderna. Som hur man kopplar GUI-element till kod, och vilka konventioner som är bra att använda där. När man väl förstått det kan man på egen hand gradvis lära sig resten med hjälp av Google. Till slut hittade jag denna kurs som ges på Stanford, och även gratis via Internet. Föreläsningarna verkar dock  bara kunna ses via iTunes, i något som de kallar iTunes U. Tanken är väl att det ska underlätta för folk som vill se kursen via podcasts, men jag tycker bara det är sjukt jobbigt att behöva gå via iTunes för att se en video. Aja. De går i alla fall i en screencast igenom precis hur man kommer igång med de absoluta grunderna.

Efter att jag hade sett den första föreläsningen i den kursen var jag snabbt igång att bygga saker. Jag hade en idé som jag ville förverkliga som första projekt, och den idén var ett program som heter Net Worth. I programmet matar man in vilka aktier och fonder man har, hur många man har av varje, samt hur mycket pengar man har på olika bankkonton och räntan på dessa. Sedan håller programmet reda på hur mycket pengar man har sammanlagt, och uppdaterar självklart via internet aktiernas värde. Efter att ha letat efter bra börs-APIer ett bra tag så insåg jag att jag nog inte skulle skriva detta program trots allt. De två APIer som finns är Yahoo’s och Googles. Problemet är bara att Yahoo inte har någon som helst officiell dokumentation av API:et eller ens en sida med användarvillkor. Dessutom verkar det inte gå att få ut valuta på de aktier man efterfrågar värdet på, vilket lite sänker hela idén. Via Google går det att få ut börskurser, men då måste man gå en fulhack-väg via Google docs, och någonting säger mig att användande av deras API i externa applikationer inte är OK.

Jag vet att vissa andra iPhone-program använder Yahoo’s API, men det känns minst sagt osäkert att göra med tanke på att det antagligen inte är tillåtet för Yahoo enligt deras avtal med börserna, samt att många rapporterar att URLen till API:et ändrats många gånger. Jag vill helt enkelt inte ta risken att ett iPhone-program slutar funka helt plötsligt. Jag vill bygga något som känns mer stabilt.

Har funderat på vad man då ska bygga som ett första seriöst projekt, men fortfarande inte kommit på något som känns tillräckligt unikt och som många skulle vilja ladda ner. Får fundera lite till :) Kom gärna med tips.