Как приложения iphone взаимодействуют с сервером?

Я новый программист, который является новичком в разработке iPhone и материале сервера. Я задаю много вопросов.

Вам не нужно отвечать на все вопросы; любая помощь приветствуется!

  • Как приложения iPhone взаимодействуют с сервером?
  • Есть ли определенный тип сервера, который я должен использовать для взаимодействия приложения iphone с сервером?
  • Если нет определенного типа сервера, то какой сервер можно использовать?
  • Каковы их преимущества и недостатки?
  • Что должно сделать приложение iPhone (которое является клиентом) для взаимодействия с сервером?
  • Как сервер знает, на какой iPhone отправлять данные?
  • Что должен делать сервер для взаимодействия с iPhone-приложением (клиентом)?

Ответ 1

Лучше всего, чтобы ваш iPhone делал веб-запросы веб-сервера. Приложение iPhone работает точно так же, как веб-браузер, делает HTTP-запросы на веб-сервер и анализирует ответ.

Я сейчас создаю приложение, которое обрабатывает скрипты PHP, которые я написал, которые работают с базой данных и т.д., и возвращают объекты JSON. Это не очень интересно - я мог бы создать полноценный веб-сервис SOAP или RPC, но я этого не делал, он просто делает запросы GET с аргументами строки запроса.

Есть удобные библиотеки, о которых вы хотите узнать. Google "iPhone JSON", чтобы найти библиотеку JSON, написанную Стигом Браутасетом, которая, по-видимому, используется большинством людей. Кроме того, вместо того, чтобы прокладывать себе все обручи, которые требуется встроенной инфраструктуре веб-клиента iPhone, зайдите в ASIHTTPRequest, очень мощную и MUCH упрощенную веб-клиентскую библиотеку.

Как правило, вы хотите сделать как можно больше обработки на сервере. Например, есть место в моем приложении. Я ищу события, происходящие в пределах заданного пользователем диапазона их локальных координат ( "в пределах 10 миль от меня" ). Я написал PHP, чтобы создать ограничивающий прямоугольник широты/долготы и запрос из базы данных на основе этого. Это WAY быстрее, чем приносить кучу событий вниз, а затем просить Core Location рассчитать их расстояние от того места, где я стою.

Ответ 2

Вы задали несколько вопросов, поэтому я постараюсь ответить на все:

Во-первых, вам нужно быть немного понятнее, о каком типе сервера вы говорите? Сервер электронной почты, веб-сервер, сервер lolcat, это зависит.

На базовом уровне iphone общается через Интернет. Интернет использует интернет-протокол, и есть два стандартных протокола, построенных поверх протокола IP: Transmission Control Protocol и User Datagram Protocol. У каждого есть свои собственные функции и функции.

TCP/IP и UDP/IP составляют основу интернет-связи.

Более конкретный протокол приложения построен поверх этих двух интернет-протоколов с определенным форматом для данного приложения. Например, HTTP - это стандартный протокол для передачи HTML и другой веб-информации между веб-сервером клиенту веб-браузера по TCP.

Итак, ваш iPhone будет использовать любой протокол, необходимый для общения с сервером. Для более общей связи с сервером IOS SDK предоставляет методы для создания сообщений (например, если вы хотите сделать HTTP-запрос на веб-сервер, вы можете использовать initWithContentsOfURL для отправки запроса GET).

Если вы создали пользовательский сервер, вам понадобится построить требуемый протокол сообщений на iphone и отправить его на сервер с использованием TCP или UDP (независимо от того, что ожидает ваш пользовательский сервер).