Несколько месяцев назад Джеймс Ноцентини, евангелист из команды Couchbase Mobile , рассказал о создании приложения для iOS, которое синхронизирует статьи Hacker News в фоновом режиме для онлайн / офлайн доступа с Couchbase Mobile . Здесь, по его собственным словам, он говорит о том, как это сделать (включая полный исходный код):
Вступление
В этой статье вы узнаете, как использовать Sync Gateway и Couchbase Lite для синхронизации последних новостей Hacker News с приложением для iOS.
Мы сосредоточимся конкретно на функции «Фоновая выборка», которая была добавлена в iOS 7: приложения теперь могут выполнять небольшие операции в фоновом режиме, чтобы получать последние данные с сервера. Если ваше приложение зарегистрировано для фоновой выборки, операционная система будет периодически пробуждать ваше приложение для выполнения обновления, и максимальное время, выделенное для одной фоновой выборки, составляет 30 секунд.
Это идеальный вариант использования одноразовой репликации. Итак, начнем!
Исходный код этого урока находится на GitHub .
Работа с Sync Gateway
Первым шагом является настройка Sync Gateway. Загрузите последнюю версию сообщества здесь . Давайте используем очень простую конфигурацию для этого примера. В новый файл с именем config.json вставьте следующее:
{ "log": ["CRUD", "REST+", "Access"], "databases": { "hackernews": { "server": "walrus:", "users": { "GUEST": {"disabled": false, "admin_channels": ["*"]} } } } }
Важно отметить, что мы используем базу данных Walrus, которая сохраняет документы в памяти. С помощью моржа документы не сохраняются при перезапуске Sync Gateway. Во-вторых, мы включили учетную запись GUEST и дали ей доступ ко всем каналам. Вы можете добавить контроль доступа и логику управления пользователями, но для этого примера мы разработаем без ограничений, что часто является хорошим способом создания прототипа.
Теперь давайте запустим его из командной строки с этим файлом конфигурации:
$ ~/Downloads/sync_gateway/bin/sync_gateway config.json
Запуск приложения для iOS
Я настроил проект Xcode с Cocoapods для управления зависимостями, запустил pod install, чтобы убедиться, что фреймворк CouchbaseLite связан с проектом. Откройте HackerNewsSync + BackgroundFetch.xcworkspace в Xcode и запустите приложение на симуляторе.
Вы должны увидеть пустой табличный вид:
В самом деле, мы должны сначала добавить некоторые новости Hacker News в Sync Gateway.
Новости Хакера
Давайте воспользуемся сценарием NodeJS в worker.js, чтобы получить главные новости из API Hacker News. Мы будем использовать Mashape для этого. Возьмите ключ Mashape отсюда и вставьте его в файл worker.js вместо XXXX-XXXX-XXXX-XXXX .
Установите зависимости, запустив npm install и запустите рабочий:
$ node worker.js
Он будет извлекать главные новости из API Hacker News и сохранять 5 из них в Sync Gateway. Нет необходимости обрабатывать данные, мы просто направляем ответ прямо в порт администратора Sync Gateway, который создаст новый документ для каждой главной статьи.
Запустить выборку фона
Для запуска фоновой выборки мы можем использовать опцию Debug> Simulate Background Fetch в Xcode:
Это отправит ваше приложение в фоновый режим и вызовет приложение: executeFetchWithCompletionHandler: метод, обратите внимание, что мы запускаем репликацию по запросу , и регистрируем прослушиватель события изменения, чтобы закрыть операцию фоновой выборки, когда состояние репликации завершится ( kCBLReplicationStopped ). Откройте приложение, и вы увидите, что табличное представление уже заполнено:
Использование фоновой выборки в вашем приложении может значительно улучшить восприятие и скорость работы пользователей.