De native Facebook iOS app

Door Bas van Kuijck, mobile developer - @basvankuijck
24 augustus 2012 - 963 x bekeken -

De Facebook app is altijd een punt van kritiek geweest onder de (iOS) gebruikers. Problemen met snelheid, verkeerde afbeeldingen, reacties die niet/wel/niet/wel/niet getoond worden en app crashes passeerden regelmatig de revue. Het was daarom wel te verwachten dat het development team van Facebook niet onder de druk van de community uit kon en de app aan moest passen.

Een tijdje terug werd bekend gemaakt dat Facebook bezig is met de ontwikkeling van een complete native app. Waarom is dit nu zo'n verbetering ten opzichte van de vorige versie?

De nieuwe Facebook app:


De vorige versies van de Facebook app waren zogenoemde hybride apps. Hybride, native... WTF? Juist! Er zijn een aantal manieren om een mobiele (iOS) app te ontwikkelen, maar ik ga me in deze post enkel richten op iOS hybrid, native en web(view)apps en uiteraard Facebook. Ondanks dat er tal van andere mogelijkheden zijn om een mobiele app op te zetten.
Een web(view)app is eigenlijk niets anders dan een app waarin een browserscherm (webview) wordt getoond welke HTML, CSS en Javascript bestanden inlaadt. Eigenlijk is zo'n app niets anders dan een 'kleine' website die er uit ziet als een app.
Aan de andere kant heb je de native app, welke compleet wordt ontwikkeld in de omgeving en taal die Apple heeft "gekozen" (Objective-c), waardoor je de 'native' elementen direct kan gebruiken die het iOS framework je biedt.
Daartussen valt de hybrid app. Wat eigenlijk niets anders is dan een combinatie van een web(view)app en native app. De Facebook app was precies dat.
Je had het hoofdvenster (timeline) welke in HTML, JS en CSS was opgezet en daarboven de navigatie van de app welke (gedeeltelijk) native is opgezet. Dat in combinatie met onder andere het toevoegen van foto's en locatiebepaling maakte de 'oude' Facebook app een hybrid app.

Okay allemaal leuk en aardig, maar waarom zijn er verschillende ontwikkelmethodes?
Nou, bij het ontwikkelen van een web(view)app (ook wel 'HTML5 app' genoemd) kun je namelijk vanuit één applicatie verschillende devices / platformen bereiken. Een app voor de iPhone, iPad, Android, Windows Phone, etcetera is in één keer te ontwikkelen. Waarbij een native app platformspecifiek moet worden ontwikkeld. Bijvoorbeeld iOS apps worden ontwikkeld in Objective-c en Android apps in JAVA. Wat dus betekent dat Facebook minimaal 2 apps diende te ontwikkelen als ze zowel iOS als Android gebruikers tevreden wilde stellen. Waar hun voorkeur blijkbaar niet lag.
"As mobile usage exploded over the last few years, our priority was to ensure that regardless of device, platform, network, or region, Facebook users had a good experience on their mobile devices. To support thousands of devices and multiple mobile platforms, we leveraged HTML5 to build and distribute Facebook mobile experiences across iOS and other platforms."
Duidelijke zaak zou je zeggen: HTML5 apps maken! Dat is ook wat het algemene gevoel was eind 2010. Een logische gedachte, waarom zou je tijd en geld investeren in het ontwikkelen van 5 apps, waarbij je ook 'klaar' kan zijn met één? En ook Facebook dacht er zo over. Helaas zijn dingen die te mooi lijken om waar te zijn, vaak ook echt te mooi om waar te zijn. Dit geldt ook voor het ontwikkelen van HTML5 (hybrid) apps. De keerzijde van dit alles is de exacte reden waarom de Facebook iOS app 23 augustus geüpdate kon worden naar versie 5.0 (de native variant versie).

"So, we rewrote Facebook for iOS from the ground up (I really did open up Xcode and click "New Project") with a focus on quality and leveraging the advances that have been made in iOS development."

Facebook heeft een uitgebreide post geschreven waarom de overstap naar native is gemaakt. Waaruit blijkt dat snelheid en het 'native gevoel' belangrijke punten waren om opnieuw te beginnen. Punten als multi-threading en caching dragen daar mooi bij. Waarom zou je namelijk een HTML5 app maken die zo dichtmogelijk bij het native gevoel moet komen, als je het native gevoel eenvoudig krijgt bij een -juist- native app?

Bij de lancering van hun eerste app zorgde Facebook voor flink wat opschudding, door juist niet een native app te schrijven, maar een generieke webapp welke (nagenoeg) op elk toestel is te gebruiken. Welke op zich prima werkte. Maar door de jaren heen werden de mobiele toestellen sneller, gebruikers veeleisender en technieken verbeterd. Native apps konden met gemak meeliften met deze golf, waarbij webapps afhankelijk blijven van browsercapabiliteiten. Met als gevolg dat deze veeleisende gebruikers met hun nieuwe toestellen zich gingen ergeren aan de merkbaar gedateerde techniek.

Waar voorheen de Facebook app werd gebruikt door webapp ontwikkelaars als goed voorbeeld van hybrid/webapps. Wordt het nu door native developers gebruikt om aan te tonen dat native apps 'on the long run' een betere oplossing zijn: "Want zelfs Facebook is om".
De webapp aanhang voert online flink wat vetes met onder anderen flash- en native mobile developers. Maar eigenlijk is er maar één echte conclusie te trekken:
Elke situatie / project is uniek. Voor situatie A is een native app de beste oplossing, maar situatie B vraagt wellicht om een HTML5 app. Dit is ook hoe wij bij elk project te werk gaan. Het concept, de doelgroep en (technische) uitdagingen in acht nemen en dan beslissen of een web(view)-, native of hybrid app de beste oplossing is voor die specifieke situatie.

Wil je meer te weten komen over mobiele toepassingen? Bezoek onze mobiele expertise pagina.

Sifteo "Intelligent Play"

Door Bas van Kuijck

Wat is Sifteo en wat kun je er mee? - Lees meer

Lees verder