Tuesday, December 6, 2011

Tak for kaffe ... Statoil

Statoil har lagt en reklame app ud i market. Egentlig synes jeg den virker ganske gennemarbejdet, specielt hvis man sammenligner den med andre apps der ikke rigtig har andet formål end at reklamere for brands.

Kaffekortet
Men en sjov feature appen har er dette her klippekort.

 

Tanken er naturligvis at man skal trykke på en kop og give telefonen til personalet man handler med, for så at unlocke en kop af gangen - indtil man har købt 10 kopper kaffe.

Koden til at unlocke en kop kan man af gode grunde ikke vide, app'en spørger en statoil server ude i verden efter om det man har indtastet er korrekt og den svare selvfølgelig ugyldig kode, med mindre man er statoil ekspedient ... formentlig :)


Det er jo i bund og grund som det skal være, og man tænker ved sig selv - endelig nogen som har lavet det som det bør være - Men nææh nej! :)

Af en eller anden grund har udviklerne af app'en valgt at lade tælleren ligge ude på telefonen, hvilket betyder at snydere i praksis bare kan sætte et 10 tal ind i en xml fil - og så tror applikationen ellers blindt på denne tæller.

Hvis man tager et hurtigt kig ned i mappen /data/data/statoil.denmark/shared_prefs finder man 2 xml filer, som formentlig oprettes via androids Shared Preferences API.

backedUpPreferences.xml indeholder tælleren - så kan den ellers bare skiftes ud med adb push og en tilsvarende fil med tæller med en værdi efter ejet ønske. Dette kræver dog at telefonen er rooted, eller at man som jeg selv - blot leger med applikationerne i android emulatoren.

Og wupti - en gratis kop kaffe:

Nu får jeg nok selv svært ved at forklare en eventuel Statoil ekspedient at den er go nok og at jeg altid har min android emulator med mig når jeg handler kaffe, men ikke destomindre vil jeg da synes det er en halv problematisk implementering for Statoil.

Ud fra deres navngivning af filen backedUpPreferences.xml antager jeg at det er fordi at de ønsker at tage backup til folks google konti med android frameworket, men jeg kan ikke forstå hvorfor de ikke bare tager backup af den unikke device key de alligevel genere og gemmer i GLOBAL_PREFERENCES.xml og så ligger tælleren i en database hos dem selv sammen med deviceid'et. Og så selvfølgelig kun ligger +1 til når der angives en korrekt kontrol kode samt at applikationen så spørger deres "Mobile Application Backend" om hvormange kopper der er købt, i stedet for at stole blindt på en lokal tæller.

Skulle brugeren midste sin telefon og købe en ny - burde den unikke nøgle blive restored når han installere applikationen igen.

Update 19. 04. 2012 Se Historien om en kop kaffe