Я предлагаю простую веб-технологию на стороне сервера — PHP, Ruby on Rails и т. д. — которая действует как базовая веб-служба RESTful, которая отправляет JSON. Это просто и не требует большого опыта программирования — для вывода JSON через PHP требуется одна строка кода, а для запроса данных требуется, например, всего несколько строк.
На стороне iPhone ASIHTTPRequest невероятно легко создавать асинхронные запросы на обновления и SBJSON позволяет невероятно легко преобразовать полученные данные в NSArray из NSDictionaries — всего пара строк кода.
Ключом к тому, чтобы все это работало, является тщательное отслеживание дат изменения данных, как для обеспечения загрузки новых записей, так и для обеспечения того, чтобы iPhone получал каждую обновленную запись.
Например, каждая запись на сервере MYSQL может иметь поле LastModified, которое использует команду on update CURRENT_TIMESTAMP для обновления поля. На iPhone вы также сохраните эти даты. Когда устройство запрашивает и обновляет, оно сначала ищет последнюю дату LastModified для таблицы, которую оно обновляет, и отправляет ее на сервер. Код сервера отправляет обратно все записи, в которых значение LastModified превышает дату отправки.
Это может быть дополнительно упрощено за счет наличия поля DateCreated на стороне сервера для каждой записи. Это позволяет серверу возвращать два набора данных: один, в котором поле DateCreated больше, чем отправленная дата LastModified (это будут вставки в базу данных iPhone), а другой набор, в котором дата сервера LastModified более поздняя, чем отправленная. in, но поле DateCreated меньше или равно отправленной дате — это строки данных, которые необходимо обновить.
Я только что написал приложение, которое делает это, так что проблемы свежи в моей памяти. Надеюсь это поможет.
person
Matthew Frederick
schedule
27.11.2010