Det senaste inom .NET-utveckling på VS Live del 2

I den förra delen började Mikael Gidmark berätta om våra erfarenheter under VS Live i Austin i maj. Första konferensdagen på VS Live fanns det tre olika workshop att välja på. Vi valde att gå på ”Building Modern Mobile Apps”. Målet med workshopen var att ge en överblick över några olika sätt att bedriva utveckling av moderna appar på.

VS Live

I den här artikeln skriver jag om första delen av workshoppen som handlade om vad man bör tänka på när man väljer målplattform och teknologi för utveckling. Kevin Ford och Brent Edwards på Magenic höll i workshoppen.

Vad definierar en modern app?

  • Ska fungera på användarens enheter oavsett plattform.
  • Ska kunna lagra data i molnet på ett säkert sätt.
  • Ska minimera datatrafik över mobilnätet.

Vilken eller vilka målplattformar man ska välja

De tre största plattformarna på marknaden för mobila enheter är föga förvånande: iOS, Android och Windows. Eftersom Windows fortfarande är en liten spelare i sammanhanget fokuserade man i föreläsning på Android och iOS.

Om man inte har resurser att utveckla en app för alla plattformar eller vill välja en plattform att börja med finns det en del att ta hänsyn till.

Tittar man på sålda enheter globalt så står Android för 81,6 % och iOS för 15,9 % (siffror från Business Insider baserat på sålda enheter i världen 2015). Med utgångspunkt från detta kan det tyckas självklart att man ska välja Android som första plattform, men valet behöver inte alltid vara så enkelt.

Fördelningen kan skilja stort inom olika målgrupper och mellan olika regioner. Tittar man t ex på https://www.netmarketshare.com så kan man se att fördelningen av sålda enheter i Sverige ser annorlunda ut med Android på 58 % och iOS på ca 38 % (perioden 201507-201605). I USA ser det ungefär likadant ut med Android på 58 % och iOS på 34 %.

Innan man sätter igång att förverkliga sin app är det därför viktigt att utvärdera vilken plattform som är vanligast för den region och målgrupp man vänder sig till.

Utmaningar – Android

Ett par av de största utmaningarna med att utveckla appar för Android är:

  • Den stora fragmenteringen av enheter med avseende på tillverkare, modeller, skärmstorlek och OS-version.
  • Att synas bland alla appar som finns i Play-butiken.

Tittar man närmre på t ex OS-version så kan man se att det är en stor eftersläpning innan OS-versionen uppdateras. I dag kör t ex nästan var tredje Android-enhet KitKat som släpptes i oktober 2013 och ca 23 % kör ännu äldre versioner. Detta beror nog till stor del på att mobilleverantörerna inte är så intresserade av att släppa nya OS-versioner till gamla enheter.

Utmaningar – iOS

Några av utmaningarna med att utveckla appar för iOS är:

  • Flera skärmstorlekar (dock långt färre än för Android).
  • Att synas bland alla appar i App store.
  • Apple skickar med kort varsel ut uppdateringar som kan få appar att sluta att fungera.
  • Du måste ha en Mac (för iOS-utveckling).

iOS lider inte av samma eftersläpning på OS där 84 % av enheterna kör iOS 9.

Utveckling

Om du bestämmer dig för att utveckla en app för flera plattformar finns det ett antal teknologier att välja mellan som hjälper dig att dela kod mellan dem. I workshoppen tog man upp styrkor och svagheter med följande teknologier:

  • Mobilanpassad sajt
  • Specifik plattform (native)
  • Cordova
  • Xamarin
  • Xamarin.Forms

Mobilanpassad sajt

Traditionell sajt anpassad för mobiler och plattor.

Fördelar:

  • Finns mycket erfarenhet kring webbutveckling.
  • Samma kodbas oavsett plattform.
  • Snabb utveckling.

Nackdelar:

  • Ser inte ut som användarna förväntar sig på en specifik plattform.
  • Svårt att jobba med plattformens hårdvara, till exempel GPS.
  • Svårare att jobba offline.
  • Prestanda på klientsidan kan vara dålig för CPU-intensiva uppgifter.

Specifik plattform (native)

Innebär att du utvecklar din app enbart för Android, iOS eller Windows.

Fördelar:

  • Ser ut som användarna förväntar sig på plattformen.
  • Bästa möjliga prestanda.

Nackdelar:

  • Ingen återanvändning av kod. Appen måste skrivas om helt och hållet för nya plattformar.
  • Kräver kunskap om alla målplattformar.

Alla plattformar – Cordova

Cordova är en hybridlösning där man mer eller en mindre utvecklar i webbmiljö och som ger möjlighet att paketera en app för distribution i de olika app-butikerna. Cordova har också plugins för att interagera med enhetens hårdvara.

Fördelar:

  • Fungerar på alla plattformar.
  • Mycket kod går att återanvända.
  • Utvecklaren kan återanvända sina kunskaper inom webbutveckling.
  • Snabb utveckling.

Nackdelar:

  • Användaren kan ofta se att det inte är en ren iOS- eller Android-app.
  • Det kan dröja innan det finns plugin för nya funktioner i hårdvaran.
  • Saknas plugin kan du behöva skriva den själv vilket kräver att utvecklaren behärskar utveckling i alla målplattformar.

Alla plattformar – Xamarin

Xamarin är en produkt som låter dig skriva dina appar i C# och låter dig dela kod mellan olika plattformar. Xamarin har tidigare krävt en ganska dyr licens, men i och med att Microsoft köpte dem i våras blev produkten gratis.

Xamarin säger att man kan dela upp 80-90 % av koden medan föreläsarna menar att ungefär 60 % ligger närmre sanningen.

Fördelar:

  • Appen ser ut som användarna förväntar sig på en specifik plattform.
  • Ganska mycket kod går att dela mellan olika plattformar.

Nackdelar:

  • Det går inte att återanvända UI-kod och viss API-kod.
  • Kräver en Mac för att bygga och editera UI (när du utvecklar för iOS).
  • Du måste som utvecklare känna till respektive plattforms API:er och UI-ramverk.

Alla plattformar – Xamarin.Forms

Xamarin.Forms är ett tillägg till Xamarin som abstraherar bort den plattformsspecifika UI-hanteringen och låter utvecklarna skapa användargränssnitt som kan delas mellan Android, iOS, Windows och Windows Phone.

Fördelar:

  • Samma som för Xamarin.
  • UI-kod går att återanvända.
  • En del av plattformarnas API:er är abstraherade.

Nackdelar:

  • Kräver både en Windows- och Mac-maskin för att bygga.
  • Vissa kompromisser med avseende på UI.

Sammanfattning

Det är inte helt självklart vad du ska välja för plattform för din app och du kanske behöver göra en marknadsundersökning för att ta reda på vilken som är den vanligaste plattformen för din målgrupp.

Vid val av teknologi så har alla både för- och nackdelar. Vänder du dig till användare som inte är så noga med att en iOS-app ska följa Apples design guidelines till punkt och pricka kanske du snabbare kommer i mål med en Cordova-app eller en mobilsajt.

Har du däremot ”petigare” användare kanske Xamarin är rätt väg att gå som inte begränsar dig med avseende på användargränssnitt och funktioner.

Peter Andersson

Peter Andersson Affärsutvecklare e-handel, Gruppchef