Hej! Jag arbetar med gränssnittsdesign och iPhoneutveckling. Delägare i Appsters. Du når mig på 070-67 67 802.

Cocoa error 134100

Posted: July 26th, 2010 | Author: anders | Filed under: iphone | Tags: , , , | No Comments »

När jag skulle initera mina CoreData-lagringen med:

[persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:&error]

Fick jag följande fel:

Error Operation could not be completed. (Cocoa error 134100.)

När du ändrat i dina CoreData-modeller så blir det alltid fel och det brukar normalt räcka med att köra en reset på iPhone Simulator, men den här gången räckte det inte. En timme senare inser jag att det här behöves köra en “Clean all targets” så fungerade allt igen. Litet litet tips…


Semi-localization

Posted: June 6th, 2010 | Author: anders | Filed under: iphone | Tags: , , , , , | No Comments »

För att byta mellan set av strängar kan du antingen göra en fullfjädrad localization. Ett alternativ att använda hantera strängar och språk manuellt i appen. Du kanske bara vill hantera olika sträng-set på ett överskådligt och uppdelat sätt.

Skapa en strings-fil:

Välj New File -> Strings File och döp filen till något du känner igen. Om det handlar om att separera språk så kan du exempelvis kalla den se.strings eller en.strings.

Sen fyller du på med nycklelvärden och strängar enligt:

/* se.strings */

/* urlar */

“baseurl” = “http://www.någonurlfördethärspråket.com”;

/* base menu */

“start” = “Hem”;

“settings” = “Inställningar”;

Notera semikolon i slutet av varje rad.

Hämta ut strängar från strings-filer:

Om du sedan vill hämta ut någon sträng – exempelvis “start”-strängen vilken ska översättas till “Hem” (i från ovan fil som heter se.strings) använder du bara:

NSLocalizedStringFromTable(@”start”, @”se”, nil);

Det första värdet är alltså namnet på “nyckeln”, det andra vilken fil, eller tabell, du vill läsa ifrån.


Hultsfredsappen släppt

Posted: June 2nd, 2010 | Author: anders | Filed under: iphone | Tags: , , | No Comments »


Push-notiser

Posted: May 17th, 2010 | Author: anders | Filed under: iphone | Tags: , , , , | No Comments »

Du kan skicka med vilka parametrar du vill i dina push-notiser.  Förutom badge-nummer, notisljud och notistext kan du skicka med extra-data som din app kan plocka upp i det NSDictionary-objekt som du tar emot via:

-(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {

NSLog(@”Got values: %@”, [userInfo allValues]);

}

Eller  när programmet startar, triggad av en push-notification:

-(BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

application.applicationIconBadgeNumber = 0;

NSDictionary *userInfo = [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

NSLog(@”Got values: %@”, [userInfo allValues]);

}

Exempelvis så skapar jag min JSON-array på följande vis med php:

$body['aps'] = array(’alert’ => $message);
if ($badge)
$body['aps']['badge'] = $badge;
if ($sound)
$body['aps']['sound'] = $sound;
$body['band'] = array();
$body['band']['id'] = “9″;

$body['aps'] = array(’alert’ => $message);

if ($badge)

$body['aps']['badge'] = $badge;

if ($sound)

$body['aps']['sound'] = $sound;

$body['extrainformation'] = array();

$body['extrainformation']['data1'] = “Extra sträng”;

json_encode($body);

Override på en Coredata-objekt setter

Posted: May 14th, 2010 | Author: anders | Filed under: iphone | Tags: , , , | No Comments »

Om du skapat ett Coredata-objekt med en uppsättning attribut och automat-genererat en klass kan det hända att du vill ändra en set-funktion. I mitt fall ville jag exempelvis nyligen uppdatera “tid för senaste updatering” samtidigt som jag favorit-markerade ett objekt.

I och med att alla Coredata-attribut är @dynamic kan du inte sätta värden som om det vore en vanlig @property utan du använder dig av Key Value Coding:

-(void) setFavourite:(NSNumber *) newFav {

[self willChangeValueForKey:@"favourite"];

[self setPrimitiveValue:newFav forKey:@"favourite"];

[self didChangeValueForKey:@"favourite"];

[self timestamp];

}

Det viktiga här är, för det första, att du använder willChangeValueForKey och didChangeValueForKey. Sen kan du använda setValue: forKey: vilket jag fått att fungera för NSString-attribut, men inte för NSNumber – så använd setPrimitiveValue: forKey: istället. Vad jag förstått är det generellt att föredra.

Då vi ändå är inne på key values så tänkte jag tipsa om key-paths. Letade rätt på en bloggpost som visar lite saker du kan använda det till – exempelvis smidigt söka igenom en NSArray eller NSDictionary.


iPhone och JSON decoding tips

Posted: May 14th, 2010 | Author: anders | Filed under: iphone | Tags: , , | No Comments »

Hade en app som fungerade perfekt med  SBJSON-encoder/decoder (som jag har sett och hört fler använda med goda resultat). Det har varit så för mig väldigt länge…

MEN… Helt plötsligt fick jag felmeddelanden utan att ha ändrat någon närliggande kod. Det klagades på att key-values inte var rätt separerade osv.

Det verkar som att den decodern inte klarar av för långa strängar och när json-flödet växte så gav den upp. Jag hittade istället TouchJSON vilken fungerade perfekt. Decodar på följande vis:

NSString *jsonString =[[NSString alloc] initWithString:collectedDataString];

NSData *jsonData = [jsonString dataUsingEncoding:NSUTF32BigEndianStringEncoding];

NSError *error = nil;

NSDictionary *res = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error];

Touch JSON finns att ladda ner här.

Efter ytterligare läsning hittade jag även YAJL som i olika tester verkar vara snabbast av de tre.


Hur du laddar ner program till din iPad

Posted: May 9th, 2010 | Author: anders | Filed under: Blandat, iPad | Tags: , | 4 Comments »

ipad-och-jag

Hur laddar man ner appar till en iPad här i Sverige? Då det inte finns en särskild iPad-rubrik i svenska AppStore så får du engagera dig nååågot mer och efter att ha fått frågan flera gånger tänkte jag att jag skriver en kort instruktion.

För det första kan du med ditt svenska iTunes-konto söka på “iPad” eller “HD” i AppStore så får du fram många iPad-appar som du kan köpa direkt.

Om det är appar som bara finns i amerikanska AppStore måste du däremot skaffa ett amerikanskt iTunes-konto.

  1. Starta iTunes.
  2. Logga ut från ditt iTunes-konto.
  3. Sök rätt på en iPad-app som är gratis och välj ladda ner.
  4. När du tillfrågas om login ska du välja att skapa ett nytt konto.
  5. Skriv in en amerikansk adress. Det är viktigt att det Zip-code:n stämmer med den State du valt.
  6. Bara när du valt att ladda ner en gratis-app och därigenom börjat registrera ditt nya konto kan du så småningom välja “None” som betalningsmetod.
  7. När du registrerat klart och bekräftat kontot kan du söka rätt på “Gift Cards” på blocket eller ebay. Vanligtvis kan säljaren skicka koder via e-post. Var försiktig bara så du inte blir lurad här.

Med ditt amerikanska konto kommer du fortfarande inte kunna ladda ner program direkt från din iPad. Eller, det har åtminstone inte jag lyckats med.

**UPPDATERING**

Nu kan du även nå AppStore med ditt svenska iTunes-konto. Ovan tips kan dock fortfarande vara bra då det inte är alla appar som släpps i svenska AppStore – en del är t ex bara tillgängliga via amerikanska konton.


XCode och resurser igen

Posted: April 26th, 2010 | Author: anders | Filed under: iphone | Tags: , , , , | No Comments »

Efter att ha rensat upp och strukturerat om min projektfil och tillhörande resurser slutade mitt projekt helt plötsligt att fungera. Det enda felmeddelandet jag fick upp var:

Failed to launch simulated application: Unknown error.

Efter att ha spenderat någon timme med att lista ut varför, kollat /var/log/system.log och googlat inser jag att många har haft samma problem, men inte alla hittar lösningen. Vanligtvis kan det räcka med att tömma cache:n i XCode eller reset:a iPhone Simulator, men i mitt fall räcker det inte.

Vad löste då problemet?

Jo, det var så enkelt som att vissa mappnamn inte är okej. Jag hade först döpt en resurs-mapp, som använder sig av folder-references, till Resources och därefter ExternalResources – båda vållade problem. Sen döpte jag mappen till samma namn som appen vilket också gav problem tills jag slutligen valde namnet Material. Och helt plötsligt fungerar projektet precis som det ska.

Konstigt att XCode inte kan ge ett korrekt felmeddelande när man försöker kompilera och testköra, men nu vet jag åtminstone att jag inte ska döpa externa resursmappar till något med resources eller något som innehåller app-namnet.


Rundade hörn på UIImageView

Posted: April 20th, 2010 | Author: anders | Filed under: iphone | Tags: , , , | No Comments »

Här kommer ett kort tips för att snabbt få rundade hörn på bilder i din app. Börja med att importera QuartsCore:

#import <QuartzCore/QuartzCore.h>

Sen räcker det med följande kod:

[imageView.layer setMasksToBounds:YES];

[imageView.layer setCornerRadius:5.0];


Problem med bildresurser i XCode

Posted: April 17th, 2010 | Author: anders | Filed under: iphone | Tags: , , , | No Comments »

xcode-add-script

iPhone-appar med många bilder som kanske uppdateras under utvecklingsarbetet kan ställa till det. Det finns två metoder i XCode för att hålla reda på resurser – antingen med mappreferenser eller enkelt grupperat – båda medför problem. Särskilt när du uppdaterar redan existerande bilder.

xcode-add-script-script

Efter att manuellt ha lagt till eller tagit bort filer hittade jag den här artikeln på majicjungle.com som innehåller en smidig lösning. Det går ut på att du lägger till ett skript som körs varje gång du kompilerar. Scriptet kör bara en “touch” på resurskatalogen med exempelvis bilder, vilket leder till att XCode ser att katalogen är uppdaterad och tar med den nya versionen i bundle:n.

För att lägga till scriptet så behöver du bara:

  1. Högerklicka på din target, välj “New Run Script Build Phase” enligt bilden ovan.
  2. Byt shell till tcsh och gör en touch på din resurskatalogs sökväg, baserat på var den ligger i förhållande till projektfilen (se bild). I mitt fall lägger jag dem oftast i samma katalog och skriver därför följande: touch -cm ${SRCROOT}/Resources
  3. Flytta ordningen så att scriptet körs först av allt i the build phase (se bild). xcode-add-script-order
  4. Klart!

För mig fungerade det här klockrent både vid skapande och uppdatering av bildresurser. Hur fungerar det för er? Ni kanske har något annat tips?


Error launching remote program: security policy error

Posted: April 16th, 2010 | Author: anders | Filed under: iphone | Tags: , , , | 1 Comment »

Känner ni igen felmeddelandet när ni ska testa din app på iPhone?

Error launching remote program: security policy error.

The program being debugged is not being run.

Du kan ha ställt in allting rätt för din profile, men det fungerar ändå inte.

Det kanske är fler som listat ut att det räcker med en enda “expired” provisioning profile för att det inte ska fungera. Det behöver inte ens vara profile:n för just den appen du ska köra – det fungerar ändå inte. Lösningen är dock enkel – det är bara att ta bort den profile:n som har gått ut så fungerar det igen.


Apple öppnar upp för iPad-app-granskningar

Posted: March 19th, 2010 | Author: anders | Filed under: iPad | Tags: , | 2 Comments »

I ett brev till utvecklare säger nu Apple att man kan skicka in sina iPad-appar för granskning för att vara med i AppStore när iPad kommer ut på marknaden. De vill dock ha den ganska omedelbart och sätter 27:e mars som deadline för att få vara med i den första granskningsprocessen.

apple-ipad-start


10 bästa iPhone-spelen just nu

Posted: March 19th, 2010 | Author: anders | Filed under: iphone | Tags: , , , , , , , , , , , | 2 Comments »

När deadlines:en haglar är det svårt att ta sig tid till att blogga. Däremot har jag fått lite mer tid till iPhone-spelande då jag flyttat utanför tullarna igen, så jag här följer en lista på mina favoriter vad gäller spel just nu, istället för en ambitiös bloggpost.

1. Angry Birds

2. Orbital

3. MX Mayhem

4. X2Football

5. MoonDrop

6. Sway

7. NanoDrops

8. StarDefense

9. Project72

10. BirdStrike


Apples nya policy för AppStore

Posted: March 9th, 2010 | Author: anders | Filed under: apple | Tags: , , | No Comments »

För inte alltför länge sedan började Apple rensa ut bland sexuellt orienterade appar från AppStore. Ryktet säger att de i samma veva också för ett ögonblick öppnade upp för en ny kategori med  för mer “vågat innehåll”.

I en nyligt publicerad artikel på TechCrunch och även på AppleInsider framkommer rykten om att det skett ytterligare en policyförändring som innefattar fler typer av appar – de som anses vara för grundläggande. Appar som inte är mer än en RSS-läsare ges som exempel på de som kan få problem i granskningsprocessen.

Jag har själv inga problem med att man tar bort appar som inte är appar – exempelvis de som bara rakt av är använder sig av en webbvy eller listar ett rss-flöde. Att kvalitén på AppStore håller någon slags rimlig grundnivå tycker jag är bra. Men de närmsta dagarna kommer vi nog få veta mer exakt vad det här innebär och vilka typer av appar som det här berör.


Android Developer Lab – MWC Barcelona

Posted: February 19th, 2010 | Author: anders | Filed under: Android | 2 Comments »

android-seminar-google-top

Google var självklart också på mobilmässan och körde introduktions- och spelutvecklingsseminarier. Introduktionen var inte särskilt inspirerande i sig och på det stora hela var det i mångt och mycket en diss av iPhone. Ryktet om att de delade ut Nexus One gjorde däremot att det var ett enormt tryck på att komma in på seminarierna. Många var besvikna och upprörda när de inte kom in och vissa försökte gå in flera gånger.

Det stora som togs upp var att med en Android kan man göra nåt så fantastiskt som att lyssna på Spotify samtidigt som du kollar mailen. Det finns även möjligheter att på ett annat sätt kommunicera direkt mellan appar och att i grunden ändra systemet då det är open-source.

Föreläsaren talade även om vikten av mobiltelefoner för att nå internet och att i utvecklingsländer kan det komma att bli det enda fönstret mot internet. Han påtalade även att Android växer med stormsteg och har 20% av mobilsurfandet i världen där iPhone samtidigt har 50%. Sifforna kom från Admob, Googles nyförvärv och just jämförelser mot iPhone återkom flera gånger. Han menade även att Android-användare återkom oftare till nedladdade appar och behöll dem längre.

Men det stora för min del på det här seminariet var det faktum att Google faktiskt gav bort en Nexus One till alla på seminarierna. Det var faktiskt det bästa på hela mässan och en rejäl överraskning. Och jag kommer definitivt börja kolla på att koda för Android även om iPhone fortfarande är min favvo och får mitt huvudfokus.

En spontan Nexus One utvärdering: Den känns väldigt mycket bättre än vad jag trodde. Det bästa är möjligheten att lägga in widgets samt att man faktiskt köra appar parallellt i bakgrunden. Den smidiga kopplingen till ditt Google-konto är också väldigt skön. Däremot är det fortfarande mycket med interfacet som känns bättre och mer lätthanterligt i en iPhone. Men det är ändå vasst. Way to go, Google! Och tack som f-n för telefonen!

android-and-anders-fardigh

android-opening-box

me-opening-android

nexus-one-big-simulator nexus-one-box


Windows Phone – Microsoft kan ha en chans – MWC Barcelona

Posted: February 16th, 2010 | Author: anders | Filed under: Mobilt, iphone | No Comments »

Microsoft Windows Phone Demo

Jag har länge varit skeptiskt till Windows-mobilernas framtid och hade inte trott att det kunde vara något intressant som skulle dyka upp. Men när jag såg Microsofts presentation igår på MWC blev jag imponerad. Gränssnittet och animeringarna är underbara. Det gick att provköra på en stor touch screen och jag tycker att känslan verkligen är klockren. De verkar ha lyckats göra ett gränssnitt som är mer anpassat för mobilen än tidigare windows mobile-versioner. Väl genomtänkt.

microsoft-windows-phone-inboxIntegreringen med andra system är också bra. Visserligen har väl Zune aldrig varit så stort, men det är nu integrerat i systemet. Zune Market finns även kopplat till telefonen. Därutöver är även Xbox Live var kopplat till det samt vanliga Live och Facebook. Alla flöden som dyker upp är snyggt integrerade i gränssnittet som var väldigt minimalistiskt och snyggt.

De säger att de gjort om allt från grunden och att det prestandamässigt ska ligga mycket nära det simulatorn visade idag. Jag är väldigt skeptisk till det, men om prestandan kan vara bra så vill jag jag åtminstone ha en Windows Phone för att testa.

Är det en iPhone-dödare då? Det tror jag verkligen inte, men det ser lovande ut och Microsoft kommer nog kunna behålla en hel del Windows Mobile-användare. Det största problemet lär bli att få företag och utvecklare som vill utveckla för annat än iPhone och Android.

Läs mer på mobil.se.

microsoft-windows-phone-input

microsoft-windows-phone-test


Adobe Flash och iPhones på MWC Barcelona

Posted: February 16th, 2010 | Author: anders | Filed under: Flash, iphone | Tags: , , , , | No Comments »

Adobe-mwc

MWC har kickat igång och i och med Adobes satsning på mobilplattformar, senast iPhone var de självklart på plats. Med min bakgrund som flashutvecklare är Adobe:s iPhone-satsning självklart intressant att hålla koll på. En av de som arbetar med iPhone och mobil-exporten i största allämnhet var där och jag passade på att fråga ut honom.

Tydligen har Adobe c:a 400 flashutvecklare som just nu  testar deras iPhone-inriktning. Och till skillnad från vad man kan se på Adobe:s hemsida menade han bland annat att det just nu finns 40 st appar på AppStore som är gjorda via Flash, fast de har inte rätt att publicera namnen på dessa på adobe.com. Det är intressant! Jag skulle gärna veta vilka fler appar som gjorts och se om de är bättre än de exempel som finns på adobe.com.

Adobe iPhone Export

Jag frågade även om prestandan och tog upp att jag inte var helt nöjd med prestandan på de spel jag sett exporterade till iPhone och provat på en 3G. Han höll med men tillade att samma spel flyter bättre på exempelvis en Android-telefon, samtidigt han även sa att de jobbar vidare med optimering samt koppling till iPhone:s GPU. iPhone-exportmöjligheter kommer finnas i Flash CS5, men han sa att det kommer vara beta-stadie även på det och han ville inte ge någon tidsram för när systemet kan anses vara komplett. Adobe arbetar även på ett white paper för optimering rent generellt som ska underlätta för utvecklare att skriva hårdare optimerade program och spel.

Har inte sett det här själv förut men såhär ser export-rutan ut. Du behöver alltså bara fylla i dina grunduppgifter från iPhone Developer Programme, lägga in certifikatet och sen exporteras en färdig app. Att kompilera direkt till telefonen kommer inte fungera, men allting förbereds så att det bara är att dra och släppa till iTunes för att installera på din iPhone.

Passade även på att kolla in källkoden på ett av programmen som använde multi-touch och jag måste spontant säga att det såg ganska enkelt ut att programmera.

När jag frågade vad han trodde om Flash för iPhone sa han bland annat att han förstår att Apple inte vill ta in Flash av strategiska skäl.

Adobe demonstration

Adobe iPhone Export


I Barca – MWC coming up

Posted: February 13th, 2010 | Author: anders | Filed under: Personligen | Tags: , | 2 Comments »

Anders & Mårten

Då var man på plats i vår lägenhet i Barcelona med mina vänner från Wizmobi. Solen skiner från och till och vi är laddade för MWC som kickar igång på måndag.

Mest spännande ska bli att se hur mobiltillverkare tacklar eller utnyttjar iPhone och Android. To be continued…


”Världens första” iPad-app

Posted: February 6th, 2010 | Author: anders | Filed under: Sociala Medier, iPad | Tags: , , , , , , , , , , , , , | 2 Comments »

Anders Färdigh iPad App

I samband med iPad-vakan på Carnaby förra veckan kodade jag snabbt ihop en app, så fort den nya utvecklingsmiljön släppts för allmänheten. iPad-appen visade en bild på mig i röd mössa och en adress till min hemsida – något som vanligtvis inte imponerar på någon.

På plats var dock iPhone24 som bevakade eventet och bilder på min kreation lades upp med formuleringar som ”Världens första iPad-app är svensk” och ”den redan nu legendariska appen”. Allting med glimten i ögat såklart.

Redan på kvällen började det spridas på twitter och när jag vaknade dagen efter och som vanligt började med att kolla twitterflödet ser jag retweets och mentions. Jag blev dock väldigt förvånad då mitt namn så småningom dök upp i flödet tillsammans med MacWorld, som publicerat en artikel med rubriken ”Svensk ligger bakom första iPad-appen”.

Jag blev ännu mer förvånad när även Metro Teknik ringer upp mig samma dag för en intervju – en intervju som publicerades i onsdags med rubriken ”Svensken som gjorde första appen till iPad”.

De senaste dagarna har jag blivit gratulerad till den lyckade PR-kuppen, vilket är väldigt roligt, men det roligaste för min egen del är att “PR-kuppen” var lika oplanerad som utfallet var oväntat.

Huruvida det tillhör världens första kompilationer kan ifrågasättas. Det mest intressanta i min mening är dock att en sån här, till synes ointressant, app kan få spridning och även nå traditionella medier. Detta skulle dels kunna visa på det enorma intresset för iPad. Men det bekräftar framförallt att journalister, på ett annat sätt än tidigare, bevakar vad som bedöms vara intressant genom att hålla koll på aktiviteter inom sociala medier.

Avslutningsvis, var detta en väldigt rolig vecka för en utvecklare som vanligtvis inte syns så mycket i medier. Nästa gång det händer hoppas jag dock kunna visa upp en app som i sig är imponerande.

Relaterade länkar


Äntligen

Posted: January 23rd, 2010 | Author: anders | Filed under: Personligen | Tags: , , | 1 Comment »
Working a bit (at the recent office Apple-event-party). Photography by Tobias Björkgren.

Foto: Tobias Björkgren.

Efter några månader av att ha låtit min hemsida vara en ouppdaterad bild som bara talat om vad jag jobbar med, fick jag till slut tid att göra den här sidan.

Den senaste tiden har det varit mycket iPhonefokus för min del och det kommer fortsätta och även genomsyra den här bloggen.

Annat spännande är att jag varit del av att ha startat upp Appsters.