iPhone офлайновое приложение с синхронизацией

Вы используете неправильный конструктор для Scanner. Вы используете это: https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#Scanner (java.lang.String) , который создает [ 111], которая имеет строку в качестве входного потока.

Измените конструктор на new Scanner(new FileReader(file.getAbsolutePath())).

28
задан Jonas 19 December 2011 в 02:43
поделиться

5 ответов

существует много приложения на App Store, которое полагается на оба, а также офлайновых данные онлайн

то, что необходимо действительно делать, идет, запускаются приложения, выполняют фоновый поток (который работает тихо, таким образом, пользователь никогда не видит задержки). этот поток загружает последние данные из Вашего сервера и продвигает его в Вашу локальную базу данных (sqlite, лучший выбор),

удостоверьтесь, что Вы реализуете некоторое управление версиями данных так, чтобы Ваше приложение только загрузило данные, которые на самом деле изменяются начиная с последней загрузки - еще Вы излишне загрузили бы весь набор данных, который может быть довольно огромным (в зависимости от Ваших требований приложения)

также удостоверьтесь, что протестировали на интернет-соединение при выполнении этого. если никакой Интернет не доступен, предупредите пользователя наверняка

этим путем Вы получаете лучший из обоих миров. пользователи, когда далеко от Интернета может все еще использовать Ваше приложение с их локальными sqlite данными

в iPhone OS 3.0 яблоко представило услуги по нажатию - где можно просто "ПРОДВИНУТЬ" данные вместо того, чтобы делать "ПОЛУЧЕНИЕ ПО ЗАПРОСУ" однако, это не доступно в текущей iPhone OS (2.x.x)

14
ответ дан Raj 28 November 2019 в 03:34
поделиться

Я хранил бы всю информацию, которую я собираю в то время как офлайн в базе данных SQLite. Затем по запросу пользователя можно СИНХРОНИЗИРОВАТЬ всю хранившую информацию с сервером с помощью HTTP или пользовательского протокола TCP/IP, который можно придумать.

Я использовал этот подход к приложениям Palm OS в течение почти 10 лет теперь, и они действительно работают очень эффективно.

Насколько я знаю, единственный "инструмент", который необходимо будет выполнить, это - простой Objective C с Касанием Какао. Хотя Вы могли использовать некоторый TCP/IP библиотеки C++, которые сделают Вашу жизнь легче, если Вы решите реализовать свой собственный протокол.

2
ответ дан Pablo Santa Cruz 28 November 2019 в 03:34
поделиться

Я работал над приложением, которое обрабатывает это точное поведение в течение последних 2 месяцев или около того. Он имеет небольшое подмножество функций, которые доступны только в сети, и большой набор функций, которые находятся в автономном режиме / в сети.

Я использую sqlite для локального хранения, как предлагается здесь, с измененной версией библиотеки sqlitepersistentobjects. Базовая версия sqlitepersistentobjects не является поточно-ориентированной, поэтому следите, если вы ее используете. (см. targetrecord в: tasksync для альтернативы, ориентированной на многопотоковое исполнение, но будьте готовы углубиться в код). Если вы готовы разрабатывать для 3.0 SDK, то основные данные - это еще одна возможность для библиотеки sqlite.

Общая архитектура достаточно проста. Я смоделировал локальное хранилище, используя sqlite и удаленное взаимодействие, используя целевой ресурс для приложения rails и API REST. Он может использовать xml или json для сериализации данных.

Когда объект изменяется локально, изменение сначала сохраняется в записи базы данных sqlite для этого объекта, а затем добавляется в очередь, которая сериализуется и сохраняется в локальной базе данных sqlite как хорошо. (Затем очередь может быть обработана в любое время)

Если доступно соединение, любые локальные изменения в очереди десериализуются и добавляются в NSOperationQueue, который затем обрабатывает их в фоновом режиме.

Для того, чтобы все это работало, я подкласс NSOperation, так что он может поддерживать несколько типов операций удаленной очереди - создание, обновление,

16
ответ дан paulthenerd 28 November 2019 в 03:34
поделиться

http://blog.webscale.co.in/?p=159 В этой статье перечислены подходы к обработке автономной / онлайн-синхронизации данных. Это может помочь вам, если вы хотите создать свой собственный фреймворк.

2
ответ дан Adi 28 November 2019 в 03:34
поделиться

Push is probably not a viable option here, since the amount of data you can push is miniscule, and basically comes back to "tell my app to make a server call". We use an online/offline model in Satchel. Whenever we have to communicate with the server, we bundle that communication (a URL and possibly some POST data) and store it to a database. If we're online, we pull it right back out, send it, and when we get a valid response back, we remove the record from the database. If we're offline, those rows build up, and the next time we ARE online, they get sent out. This is not a workable model in all situations, but can be adapted to most.

In 3.0, you've got access to CoreData, which is a great data management tool. Other than that, the NSURLXXX family is your friend.

4
ответ дан Ben Gottlieb 28 November 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: