Projecten
Contact
Over ons
Blog
9 oktober 2015

Push Notificaties met Laravel en Arrow

TitaniumNL_2015-Oct-07_01

Op 7 oktober heb ik een presentatie voor de Nederlandse Appcelerator Titanium User Group @TitaniumNL gehouden.

In mijn presentatie laat ik zien hoe wij middels een custom Laravel PHP backend voor zowel Android als iOS custom payload push notificaties versturen voor respectievelijk GCM en APNs m.b.v. een uniforme API van Appcelerator Arrow.

Daarnaast heb ik laten zien hoe wij onze custom backends automatisch opzetten en inrichten. Ook heb ik laten zien hoe wij onze code auto deployen via Git en Laravel Forge.

Aan de manier hoe wij tot onze backend opzet en code voor het versturen van push notificaties zijn gekomen, ligt een aantal overwegingen ten grondslag. Onderstaand volgen puntsgewijs de voornaamste uitgangspunten.

Uitgangspunten

Met het maken van deze codebase en server setup wilden wij de volgende zaken oplossen:

  • Zeer snelle implementatie voor zowel apps als backend servers.
  • Lage operationele kosten in combinatie met een groot aantal geregistreerde gebruikers en devices.
  • De backend service moet onderhoudsvriendelijk en makkelijk te schalen zijn.
  • Daarnaast moet deze betrouwbaar zijn, een hoge performance kennen en bovenal stabiel zijn.
  • Mogelijkheid tot het versturen en schedulen van push notificaties met een custom payload naar individuele gebruikers.
  • Een cross platform oplossing, dus voor zowel Android als iOS.

Hoe het werkt

In zowel de iOS als Android apps wordt gebruik gemaakt van een uniforme commonjs interface voor het registreren van het device voor push notificaties middels ofwel een directe API call naar ACS, ofwel een call naar de API van het app specifieke backend, welke vervolgens zelf de registratie bij ACS afhandelt.

Platform agnostisch

Communicatie met het custom Laravel backend en de ACS Arrow service vindt plaats via cURL op de Arrow REST API. Het voordeel van deze setup is dat ook hier sprake is van één uniforme, platform agnostische en geversioneerde ACS API voor beide platforms (GCM en APNs). Indien Google of Apple haar API signature wijzigt, zal deze verandering voor beide platforms door ACS worden opgevangen met ten hoogste één API wijziging aan de kant van onze backend service.

Het versturen van push notificaties

TiMeetupTalk_20151007_ACS_Laravel

Op de server worden diverse taken in de achtergrond op aparte service queues uitgevoerd. Via diverse Laravel Commands, Jobs en Queues wordt alle communicatie met third party services asynchroon en fail-safe uitgevoerd. Op deze manier worden dus bijvoorbeeld ook via Arrow de push notificaties afgeleverd bij de gebruikers.

Flexibiliteit middels een custom API

Daarnaast maken zowel onze apps als custom backends gebruik van een REST API framework, waardoor zeer snel aan beide kanten aanpassingen en uitbreidingen zijn te maken op de API endpoints.

Build APIs You Won't Hate

Aangezien een app zonder backend, bijna nooit meerwaarde kent, is het onzichtbare stuk van een applicatie zeer belangrijk. Dit moet niet alleen áltijd werken, maar bovenal snel werken. Alleen op deze manier kan een app zich onderscheiden en een gebruiker daadwerkelijk helpen te communiceren met informatie diensten of andere gebruikers. Aangezien wij van mening zijn dat je een app veel beter kunt maken, indien je ook controle hebt over de voor de app te gebruiken backend diensten, ontwikkelen wij ook dit deel van het totale 'app systeem'. Om dit goed, on-time en binnen budget te doen, is het belangrijk hier uit te gaan van een goede basis. Samengevat...

TitaniumNL_2015-Oct-07_02

Everybody and their brother’s dog wants an API, so you should probably learn how to build them.

Phil Sturgeon

Mede dankzij Phil :) zijn wij, naast goede app ontwikkelaars, met de skills van het op een goede manier opzetten van een backend er toe in staat zeer snel custom backends en daarmee unieke app functionaliteiten te implementeren en aan te bieden voor onze klanten.

De presentatie zelf geeft meer technische details over de precieze setup. Onderstaand vind je links om deze te bekijken.

Meer informatie?

Zie Speakerdeck voor mijn slides.

Klik hier voor een PDF versie van de presentatie.


Frank Eijking
Door Frank Eijking Software Engineer