Apps voor iPhone & iPad
Al onze apps worden voor ieder platform native ontwikkeld. Dit betekent dat de app voor ieder platform (iOS en Android) op maat wordt gemaakt. Zo kunnen onze apps optimaal gebruik maken van de functionaliteiten van elk apparaat en blijft de kwaliteit van de User Experience gegarandeerd.
Native apps in Swift
Al onze iOS apps worden ontwikkeld met Apple’s native programmeertaal Swift. Swift is de taal bij uitstek om overzichtelijk en productief te kunnen ontwikkelen. Bovendien is Swift continu in ontwikkeling, waardoor er telkens nieuwe mogelijkheden ontstaan waar de apps volop van kunnen profiteren.
De iOS apps ontwikkelen we in Xcode, Apple’s native editor. Xcode is een zeer uitgebreid programma, wat vele mogelijkheden biedt naast uiteraard het ontwikkelen van de app. Zo kunnen we de app testen in verschillende apparaten door ze te draaien op simulators. Dit zijn digitale versies van de iPhones en iPads van Apple. Ook is het eenvoudig om verschillende omgevingen in te stellen, zoals het gebruiken van de staging-server of juist de productie-server. Met Xcode kan je ook apps profileren, dit houdt in dat je analyses uitvoert op efficiëntie, geheugengebruik, etc.
Test Driven Development
We ontwikkelen iOS apps in een TDD-style. Dit houdt in dat we continue en uitgebreid tests schrijven alvorens de daadwerkelijke logica uitgewerkt wordt. Dit zorgt ervoor dat we tijd besparen en fouten voorkomen. Er zijn diverse frameworks beschikbaar om in te testen (denk aan KIF, Quick of Calabash), maar we maken vooral gebruik van Apple’s eigen XCTest module.
CocoaPods (frameworks / pods)
Over de gehele wereld werken toegewijde ontwikkelaars aan zogenaamde ‘frameworks’ die via de dependency manager CocoaPods geïnstalleerd kunnen worden. CocoaPods zorgt voor de distributie en installatie van versies van deze frameworks. Bij de ontwikkeling van iOS apps maken we gebruik van een aantal frameworks. Voorafgaand aan het ingebruikname van een framework toetsen we eerst of het framework actief onderhouden wordt en als ‘best practice’ gezien wordt. Uiteraard moet het framework ook een flinke bijdrage leveren aan het project (lees: tijdbesparend werken). Zo hoeven we het wiel niet opnieuw uit te vinden.
Een project maakt over het algemeen gebruik van niet meer dan een handvol frameworks. Voornamelijk werken we met Alamofire voor de netwerkverzoeken (waar we overigens een blog over geschreven hebben!), Firebase voor crashrapportages/analytics en Texture voor het maken van geweldige Defaults.
TestFlight
Voor het testen van apps in de alpha- en bèta-fase maken we gebruik van TestFlight. Dit is Apple’s oplossing om apps te kunnen distribueren naar devices zodat ze getest kunnen worden. Het enige dat we hiervoor nodig hebben van de gebruiker is een e-mailadres, dat bij voorkeur gekoppeld is aan een iTunes Account. De tester kan dan aan de hand van de uitnodiging via e-mail en de TestFlight-app de testversie van zijn app installeren.
Uploaden nieuwe versies
Bij het uploaden van een nieuwe versie komen een aantal handmatige handelingen kijken (tests draaien, uploaden van de app, 'app signing', buildnummer ophogen, git-wijzigingen verwerken). Tijdens de ontwikkeling zetten we Bitrise in om deze handelingen in de cloud uit te voeren. Doordat we deze stappen automatiseren kunnen we de ontwikkeling versnellen. En doordat we deze taken niet langer lokaal uitvoeren, kunnen we meer tijd besteden aan het ontwikkelen van de app.
Git (version control)
Git is een versiebeheersysteem dat op snelle en vooral eenvoudige wijze de broncode beheert. Iedere wijziging in de code wordt via Git bijgehouden en lokaal en online opgeslagen. Dit zorgt ervoor dat wijzigingen door het gehele team in te zien zijn, broncode nagelopen kan worden, backups beschikbaar zijn en bij nieuwe ‘features’ er op een aparte versie gewerkt kan worden.
Analytics en crash reportage
Hierboven is al melding gemaakt van Fabric/Crashlytics als framework. Naast dat dit framework de app-analytics verzorgd biedt het ook live crash reporting. Dat betekent dat als er een app crasht, er bijna direct een melding binnenkomt met de oorzaak van deze crash. Hierdoor zijn we in staat om eventuele fouten in de broncode aan te passen en indien nodig een update in te dienen.
Swift en Xcode updates
Swift en Xcode zijn nog altijd (en maar goed ook) aan updates onderhevig. Vooral jaarlijks in september krijgt de taal en de editor een grote update. We werken graag met de nieuwste versies, omdat de ontwikkelingen zorgen voor verhoogde productiviteit en ontwikkelplezier.
Voordat de updates aangeboden worden, werken we al met de bèta-versies om de wijzigingen te leren kennen. Belangrijker nog; we kunnen de door ons in het verleden ontwikkelde apps testen en zien of deze de toekomstige updates van Apple zullen doorstaan of dat er eventueel aanpassingen nodig zijn. Op deze manier kunnen we proactief advies geven en zien of er alvorens de daadwerkelijke update zich aanbiedt wijzigingen gedaan moeten worden aan de broncode.