Статьи

Создание приложения для iOS, которое синхронизируется в фоновом режиме с Couchbase Mobile

Несколько месяцев назад Джеймс Ноцентини, евангелист из команды 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 ). Откройте приложение, и вы увидите, что табличное представление уже заполнено:

Использование фоновой выборки в вашем приложении может значительно улучшить восприятие и скорость работы пользователей.