Предлагам проста уеб технология от страната на сървъра -- PHP, Ruby on Rails и т.н. -- която действа като основна RESTful-ish уеб услуга, която изпраща JSON. Това е лесно и не изисква много опит в програмирането - извеждането на JSON чрез PHP изисква един ред код, а заявката за извличане на данните изисква само няколко, например.
От страна на iPhone, ASIHTTPRequest прави невероятно лесно създаването на асинхронни заявки за актуализации и SBJSON прави превръщането на получените данни в NSArray от NSDictionaries невероятно лесно, само с няколко реда код.
Ключът към това да работи всичко е да следите отблизо датите на промяна на данните, както за да гарантирате изтеглянето на нови записи, така и за да сте сигурни, че iPhone получава всеки актуализиран запис.
Например всеки запис на MYSQL сървъра може да има LastModified поле, което използва командата on update CURRENT_TIMESTAMP, за да поддържа полето актуално. На iPhone ще съхраните и тези дати. Когато устройството поиска и актуализира, то първо търси последната дата на LastModified за таблицата, която актуализира, и я изпраща на сървъра. Кодът на сървъра изпраща обратно всички записи, където LastModified е по-голяма от изпратената дата.
Това може да бъде допълнително рационализирано чрез наличие на поле DateCreated от страната на сървъра също за всеки запис. Това позволява на сървъра да върне два набора от данни, един, където полето DateCreated е по-голямо от изпратената дата на LastModified -- това ще бъдат вмъквания в базата данни на iPhone -- и един набор, където датата на сървъра LastModified е по-късна от изпратената в, но полето DateCreated е по-малко или равно на изпратената дата -- това са редовете с данни, които се нуждаят от актуализиране.
Току-що написах приложение, което прави това, така че проблемите са свежи в съзнанието ми. Надявам се това да помогне.
person
Matthew Frederick
schedule
27.11.2010