I am a new programmer who is new to iPhone development and server stuff. I have a lot of questions to ask.
You don’t have to answer all the questions; any help is appreciated!
- How does iPhone apps interact with server?
- Is there a particular kind of server i should use to interact iphone app with server?
- If there is no particular kind of server then what kind of server can be used?
- What are their advantages and disadvantages?
- What should the iPhone app (which is the client) do in order to interact with the server?
- How does the server know which iPhone to send data to?
- What should the server do in order to interact with iPhone app (client)?
Your best bet is to have your iPhone make web requests of a web server. Your iPhone app acts just like a web browser, making http requests to a web server, and parsing the response.
I’m building an app right now that hits PHP scripts I’ve written that do database work, etc, and return JSON objects. It’s not fancy–I could have built a whole SOAP or RPC web service, but I didn’t do that, it just makes GET requests with query-string arguments.
There are handy libraries you want to know about. Google “iPhone JSON” to find the JSON library written by Stig Brautaset, that’s the one most people seem to be using. Also, rather than putting yourself through all the hoops that the iPhone’s built-in web client framework requires, go get ASIHTTPRequest, a very powerful and MUCH simplified web client library.
As a general rule, you want to do as much processing on the server as possible. For instance, there’s a place in my app I’m searching for events happening within a user-specified range of their local coordinates (“within 10 miles of me”). I wrote PHP to build a latitude/longitude bounding box, and query from the database based on that. That’s WAY faster than bringing a bunch of events down and then asking Core Location to calculate their distance from where I’m standing.