Fælles kodebase bag succesfuld app på tre platforme

Den populære app Døgnrapport blev egentlig udviklet som et rent fritidsprojekt, men projektet fik vokseværk. Så i dag arbejder Mads Laumann på at forenkle udviklingen på tværs af alle tre mobilplatforme, trækker data ind fra en række kilder og benytter nogle af de mere snedige funktioner i Azure, som ”Microsoft simpelthen ikke får nok credit for.”

Mads Laumann bor egentlig i et ganske fredeligt boligkvartér. Så da to biler på vejen en dag i 2012 stod i brand, skulle han lige ind på politiets onlinebaserede døgnrapport for at læse mere.

– Forklaringen var ret banal – det var noget med et mislykket tyveri og en ildpåsættelse. Men det undrede mig, hvor besværligt det var overhovedet at finde døgnrapporten på politiets hjemmeside. Så jeg tænkte, at der sikkert var en app, hvor man nemt kunne finde den slags. Men det var der ikke. Hverken på iOS, Android eller Windows Phone. Og så måtte jeg jo bygge den selv, konstaterer Mads Laumann.

Som selvstændig udvikler med speciale i bl.a. ASP.NET kunne man måske ellers tro, at han havde rigelig kode mellem hænderne til hverdag.

– Men jeg kan godt lide at udvikle og at lære nye værktøjer at kende. Så da jeg allerede havde lavet flere apps til Windows Phone og kender Visual Studio som min egen bukselomme, tænkte jeg, at en døgnrapport-app ville være et godt hobbyprojekt, forklarer han.

Ville gerne lære Azure at kende

I første omgang byggede Mads Laumann en basal webtjeneste baseret på ASP.NET Web API og lagde den på Microsoft Azure.

– Azure var ret nyt i 2012, og jeg ville gerne lære det bedre at kende. Det var en kende kringlet dengang, men grænseflade og funktionalitet er heldigvis blevet langt bedre siden, bemærker han. Servicen indsamlede døgnrapporter, når de kom op, og fødede dem til en enkel Windows Phone-app, som fik det sigende navn ”Døgnrapport.”

– App’en og den bagvedliggende service fungerede rigtig fint. Det første halve års tid blev Døgnrapport hentet nogle tusinde gange og fik i store træk lov at leve sit eget liv. Men med tiden holdt nogle af politikredsene op med at udgive døgnrapporter og flyttede mere aktivitet over på Twitter. Og da formålet med app’en netop var at indsamle forskellige informationer og nyheder fra politiet for at gøre dem let tilgængelige, ja så udvidede jeg servicen til også at indsamle disse tweets. Det var supernemt i forhold til at indsamle døgnrapporterne, da data var dejlig struktureret, siger Mads Laumann.

”Notification Hub er ganske enkelt genialt!”

Med tiden kom endnu mere indhold til, da han fik lov til at trække krimistof fra bl.a. Jyllands-Posten og privatperson i Nordsjælland, der fulgte området tæt. Det krævede endnu flere tilpasninger – og løsningen voksede.

I takt med at Microsoft Azure har fået flere muligheder, er den eksempelvis gået fra at være baseret på Azure Cloud Services til at køre udelukkende på Azure Websites med tilhørende WebJobs, hvilket har gjort deployments via Git væsentlig hurtigere og nemmere.

– Med tiden er der også kommet mange andre funktionaliteter til i Azure, og en af de ting, som Microsoft simpelthen ikke har fået nok credit for, er Notification Hub. Den gør det utrolig nemt at sætte målrettede notifications op. I mit tilfælde er det praktisk, fordi man f.eks. kan bruge den til at automatisere distributionen af varsler, efterlysninger eller hvad det nu måtte være. Hvis en lastvogn med kemikalier f.eks. bryder i brand i Ishøj, får Døgnrapport-brugere på Vestegnen automatisk politiets varsling om at blive indenfor eller tage en rute uden om ulykkesstedet. Men naturligvis kun hvis de har accepteret at få varslingerne, forklarer Mads Laumann. Notification Hub fungerer i øvrigt på tværs af alle mobile platforme – hvilket er praktisk i dag, hvor Døgnrapport findes til både Windows Phone og iOS.

Udvikler i C# på iOS og Android med Xamarin

– Oprindelig udviklede jeg app’en til Windows Phone i C# og Visual Studio, som jo er min hjemmebane. Men det ville være rart at komme på iOS også. Her brugte jeg Xamarin, som gør det muligt at udvikle iOS apps i C#. Det er ikke noget, man ”bare” gør, men det er absolut til at arbejde med, siger han.

Mads Laumann lægger dog ikke skjul på, at det stadig er en smule bøvlet at skulle arbejde med flere forskellige platforme – og udfordringen bliver kun større, når han senere på året lancerer Døgnrapport til Android, som også er udviklet i C#.

Fælles kodebase vil lette arbejdet på tre platforme

– Derfor er jeg nu gået i gang med at bygge et Portable Class Library med MvvmCross, så jeg kan bruge så meget som muligt af kernekoden og den grundlæggende logik på tværs af platformene. Det gør det nemmere og hurtigere at implementere nye features på alle platforme i fremtiden når alle versioner af app’en er baseret på denne delte .NET kerne, forklarer han.

I skrivende stund er Døgnrapport hentet lidt over 22.000 gange på Apples AppStore og ca. 7.000 gange til Windows Phone. Mads Laumann håber, at Android-udgaven – og Windows Phones stadig hurtigere udbredelse – vil give app’en endnu mere vind i sejlene.

– Jeg vil ikke påstå, at jeg kan leve af app’en. Slet ikke, faktisk. Men den har efterhånden så mange brugere, at den kan betale for sig selv. Så jeg ikke har decideret udgifter ved at lave den, ud over de utallige aftentimer jeg bruger på det. Der er heller ingen tvivl om, at Azure-funktioner som Notification Hub gør livet væsentlig nemmere for mig på tværs af platformene; det er ganske enkelt genialt, konstaterer han.