Dec 09

De heilige graal voor de beginnende iPhone Developer. Het einde ook.

Het einde omdat als je dit beheerst, je beginner af bent. Maar ook het einde omdat je hier weinig aan je iPhone kennis hebt. Hier begint de SQL, PHP, .Net wereld.

Even toelichten. Een van de krachten van de iPhone is de combinatie van telefoon, fototoestel, GPS, internet etc. Door een koppeling te maken met het internet kun je informatie (bijvoorbeeld: locatie) van de iPhone combineren met al het andere mooie van internet (bijvoorbeeld: de gouden gids). Schematisch kan dit er technisch zo uitzien:webservices

In deze Post wil ik proberen alle punten toe te lichten en een zoekrichting te geven. Het heeft mij namelijk dagen gekost de informatie te verzamelen. Die is vanwegen de nieuwigheid en de domeinoverschrijdingen nu nog erg versnipperd. 

Zie het plaatje voor de nummers. Ik probeer me te beperken tot de meest makkelijke an gangbare varianten.

  1. De database. Een veelgebruikte en gratis variant is mySQL (niet te verwarren met SQLite op je iPhone. Dat is een lokale versie). phpAls je hosting provider PHP ondersteunt, dan kan vaak vanuit PHP een mySQL database benadert worden. Dit is redelijk standaard functionaliteit. Vaak is er dan ook nog de applicatie “phpMyAdmin” geïnstalleerd waarmee je makkelijk tabellen kan beheren. Vanuit phpMyAdmin kun je ook exporteren naar XML (dat is al stap 2). Mijn provider www.mijndomein.nl heeft dat allemaal.
  2. De eigenlijke web service. In deze stap wordt de data vertaald naar brokken die een iPhone (maar ook andere apparaten) kan lezen. Dankzij deze stap is de data beveiligd, kan een dataselectie gedaan worden, maar is het ook dé manier om te borgen dat anderen weten welke taal (protocol en syntax) ze moeten gebruiken om het te benaderen. De talen die voor de iPhone veel worden gebruikt zijn XML en JSON (afkomstig van Java). Men zegt dat JSON het makkelijkste is om te programmeren. Als je liever met een universeel web service model werkt, dan kun je met WSDL aan de slag. Kijk dan hier voor een tool die code genereert. In deze stap heb ik me rot moeten zoeken op welke manier je nou makkelijk van mySQL naar XML of JSON kan. Er zijn allerlei professionele manieren voor pro’s, dat moge duidelijk zijn. Google eens op SOAP of .NET. Helaas ben ik geen pro. Na lang zoeken vond ik eindelijk deze makkelijke beschrijving.
  3. In stap 3 “leest” men data uit de database. In bijna alle boeken die ik hierover heb nagezocht begint het voorbeeldproject in deze fase met een openbare web service (API) van Google, Twitter of Yahoo. Stap 1 en 2 moet je zelf uitzoeken. Een goed JSON voorbeeld is hier. Een goed XML voorbeeld is hier. Jargon: deze stap wordt aangeduid met “GET” of “request”. Het onleden heet “parsen”of “parsing”.
  4. In deze stap schrijft men data naar de database. Meestal wordt deze stap niet beschreven. Er staat hooguit: “…en schrijven gaat precies andersom.” Hier vind je een uitstekend voorbeeld hoe dat wel kan met XML(sowieso is dit een zeer goede tutorial voor de hele keten). Het jargon is “POST”.
  5. Eindelijk ben je op de iPhone. Maar ook hier heb je keuzes te maken. Wat doe je met de data? Meestal zal je hem ook lokaal opslaan om er iets mee te doen. Je kan dan kiezen uit a) een Property list (het meest makkelijke maar geheugen intensief bij grote bestanden. b) SQLite (een lokaal SQL bestand) of c) Core Data (sinds SDK 3.0). (d: NS Object subclass sla ik over. Dat biedt geen enkel voordeel t.o.v. abc). Op het internet zijn Mac Developers lyrisch over Core Data. Core Data gebruikt onder de motorkap trouwens gewoon ook SQLite. Het verhaal is dat je met Core Data je objecten structuur kan behouden. Je hoeft die niet te vertalen naar een relationele database structuur. Een mooi voorbeeld van een Core Data implementatie geeft Apple hier.
  6. iconEigenlijk ben je nu klaar voor je meeste projecten. Deze laatste stap is bij velen discutabel. Het gaat namelijk om web scraping of screen scraping. Zelf vind ik hem er zeker bij horen. Zo ging het ook in de begin dagen van internet. Bovendien kun je met andere informatie, op een nieuwe manier ontsloten, vaak leuke dingen doen. Maar ga hier dus wel verantwoordelijk en netjes mee om. Wat is web scraping? Het gaat erom dat je je database (1) vult met gegevens die je weghaalt bij anderen. Een voorbeeld van een App die daar zeer succesvol mee is is Trein. Helaas zal ik hier geen voorbeelden geven hoe je dat moet doen. De Wiki pagina samen met Google is een goed start punt. Een tip die ik wel kan geven is dat je na moet gaan of het wel echt nodig is om deze stap te automatiseren. Hoe vaak verandert jouw data? Kan het ook met de hand? Als het echt niet anders kan, doe dan deze stap als laatste. Zo voorkom je onnodig puzzel werk.

Een heel verhaal! Hopelijk heb je er wat aan.

One Response to “Web Services voor de iPhone”

  1. Patric says:

    Goed verhaal. Ik ben momenteel bezig met het ontwikkelen van mijn 1e App met behulp van het PureMVC Framework (een aanrader trouwens, ook gebruik voor actionscript en C#).

Leave a Reply

Tag Cloud 

 

Advertenties 

Wij zoeken ontwikkelaars, developers, app-fanaten voor iOS, Android, HTML5

www.dutchapplications.com

 
preload preload preload