iCulture forum | iPhone, iPad,  iPod touch, Apple TV en iOS

iCulture forum | iPhone, iPad, iPod touch, Apple TV en iOS (https://forum.iculture.nl/)
-   Ontwikkelen voor iOS (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/)
-   -   Interactie met internet (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/86101-interactie-internet.html)

DJ14 06-03-11 08:10

Interactie met internet
 
Hallo,

Nu ik wat ingewikkeldere apps wil gaan ontwikkelen vroeg ik mij af hoe interactie (data ophalen + terugsturen) vanuit een app mogelijk is met bepaalde websites. Zo kun je met bepaalde apps data ophalen (nieuwsberichten van bijv. nu.nl) en data ook weer terugsturen (reacties plaatsen in apps). Ik neem aan dat er gebruik wordt gemaakt van databases. Werkt dat gewoon via MySQL? (Nog een beter voorbeeld: de Trein applicatie, haalt ook gegevens uit een database. Wat voor database is dat (ik neem aan dat de site deze uit MySQL databases haalt) en hoe kan je hiermee communiceren vanuit een app?).

Bij voorbaat dank.

Geno 06-03-11 16:22

De Trein applicatie haalt z'n gegevens van de mobiele NS site vandaan, niet direct uit een database.

DJ14 06-03-11 18:05

Allereerst bedankt voor je reactie. Jij zegt dat de Trein applicatie zijn content van de mobiele site van de NS haalt. Hoe komt deze mobiele site dan aan zijn gegevens (ik vermoed uit een database). En bedoel je dat er XML van de mobiele site van de NS wordt gebruikt als bron voor de Trein app?

Geno 06-03-11 23:30

Ja gewoon de gebruikelijke manier om data van een website te halen.

Als je gebruik maakt van een website of webservice heb je niet zomaar toegang tot de database. Communicatie verloopt meestal via de website naar de database.

In het geval om direct met een database te communiceren, zou dat ik afraden ivm veiligheid. Je kan beter met een tussenlaag werken om bepaalde verzoeken te doen, bv. PHP. Je stuurt vanuit je app GET POST requests naar de PHP script op je server en de script haalt de gegevens uit de database en geeft ze weer als XML of JSON.

nop 10-03-11 16:46

Ik gebruik voor mij apps een eigen server die data verzamelt en aanbiedt aan de app. Een stukje middleware.
Voordeel is je flexibiliteit en je kunt zaken aanbieden als queueing en caching. Ik zou dus nooit direct data van een derde partij afnemen zonder er eerst zelf iets tussengezet te hebben. De kans dat je app omvalt als de derde partij iets wijzigt is erg groot.

DJ14 10-03-11 21:05

Heel erg bedankt allemaal. Toch snap ik het nog niet helemaal. Stel je hebt een MySQL database op een server waar je gegevens uit wilt halen om die te tonen in een iphone app. Volgens nop maak ik dan een PHP script welke deze gegevens uit de database ophaalt (allemaal geen probleem). Maar hoe moet het dan verder na dat PHP script? Een webview lijkt me niet van toepassing, beter is om tableviews te gebruiken. Maar hoe vul ik een tableview dan met data van het PHP script? Alvast bedankt.

nop 11-03-11 08:38

Ik gebruik een webview voor het tonen van de aangepaste content. Dat is gewoon een linkje naar een bestaande webpagina.

Download Mijn Hemel eens ( MijnHemel voor iPhone, iPod touch en iPad in de iTunes App Store )
Op het eerste tabje zie je een kalender. Dat is een UIWebview die gekoppeld is aan een php pagina die onderstaande ruwe data (die wordt vernieuwd met een cronjobje) verwerkt:
Code:

2455563.190289 12  1  za  1 januari  17.34  <img align="right" width="133" height="100" src="jupitermanen/kaart_20110101_1734b.png" title="Io in conjunctie met Europa" alt="Io in conjunctie met Europa" style="cursor: pointer;" onclick="window.open('afbeelding.php?f=jupitermanen/kaart_20110101_1734a.png&amp;t=Io in conjunctie met Europa', '_blank', 'width=1016,height=716,scrollbars=yes,toolbar=no,menubar=no,status=no,directories=no,resizable=yes'); return false">De Galile&iuml;sche maan Io staat op 6,1&rdquo; ten zuiden van Europa. Even later wordt de satelliet Callisto voor korte tijd bedekt door de schijf van Jupiter (18:07-19:49). Zie ook de figuur hiernaast en de tabel <a href="baseurl/jupiter/jupsat_2011.html#jan" title="Verschijnselen van de manen van Jupiter" target="_top">Verschijnselen van de manen van Jupiter</a> voor meer informatie.
 2455563.284039 13  1  za  1 januari  19.49  <img align="left" width="0200" height="0062" src="jupitermanen/kaart_20110101_2129b.png" title="Alle manen staan ten oosten van Jupiter" alt="Alle manen staan ten oosten van Jupiter" style="cursor: pointer;" onclick="window.open('afbeelding.php?f=jupitermanen/kaart_20110101_2129a.png&amp;t=Alle manen staan ten oosten van Jupiter', '_blank', 'width=1016,height=716,scrollbars=yes,toolbar=no,menubar=no,status=no,directories=no,resizable=yes'); return false">Van 19:49 tot 23:08 uur nemen we alle grote Jupitermanen ten oosten van de planeetschijf waar. In toenemende afstand van de planeet staan Callisto, Io, Europa en Ganymedes. Om 19:49 komt Callisto van achter de Jupiterschijf vandaan, na 23 uur staat Jupiter zo laag dat de planeet en zijn satellieten moeilijk zichtbaar worden.

De ruwe gegevens formatteer ik tot een leesbaar formaat en toon dmv php script alleen de relevante/actuele gegevens.
Het resultaat zie je hier : http://www.waarnemen.com/hemel/iphone.php

Maar goed, dit is een eenvoudige oplossing. Je kunt natuurlijk ook data in een tableview laden. Je serveert je gegevens dan in XML of je haalt met php parameters de elementen op (dat laatste is minder sjiek).
Ook zie je in de App UIImageviews. Die haalt ook data van Internet op, die centraal wordt geserveerd door mijn eigen server. Ik wil nooit afhankelijk worden van derden: hoe meer bronnen je direct raadpleegt, hoe meer kans op instortingsgevaar!

Geno 12-03-11 01:13

Als XML de output is van je PHP script gebruik je een XMLparser bv.

Cocoa heeft z'n eigen XMLparser, genaamd NSXMLParser. Meer info te vinden in de Apple documentatie.


Alle tijden zijn GMT +2. Het is nu 17:53.