Добавление автономной синхронизации данных в приложение Apache Cordova

В этом учебнике рассматривается возможность автономной синхронизации мобильных приложений Azure для приложения Apache Cordova. Автономная синхронизация позволяет конечным пользователям взаимодействовать с мобильным приложением — просматривать, добавлять или изменять данные, даже если сетевое подключение отсутствует. Изменения сохраняются в локальной базе данных. Как только устройство возвращается в режим подключения к сети, эти изменения синхронизируются с удаленной внутренним сервером.

Перед началом работы с этим учебником нужно изучить учебник по Apache Cordova, в котором описывается создание подходящей серверной службы.

Дополнительные сведения о функции автономной синхронизации см. в статье Синхронизация автономных данных в мобильных приложениях Azure.

Обновление приложения для поддержки синхронизации автономных данных

При работе онлайн используется getTable() для получения ссылки на таблицу в Интернете. При реализации возможностей автономной работы используется getSyncTable() для получения ссылки на автономное хранилище SQLite. Хранилище SQLite предоставляется подключаемым модулем cordova-sqlite-storage Apache Cordova.

Примечание.

Автономная синхронизация доступна только для Android и iOS. Она не будет работать в рамках спецификации платформы браузера.

В файле www/js/index.js:

  1. Обновите метод initializeStore(), чтобы инициализировать локальную базу данных SQLite:

    function initializeStore() {
        store = new WindowsAzure.MobileServiceSqliteStore();
    
        var tableDefinition = {
            name: 'todoitem',
            columnDefinitions: {
                id: 'string',
                deleted: 'boolean',
                version: 'string',
                Text: 'string',
                Complete: 'boolean'
            }
        };
    
        return store
            .defineTable(tableDefinition)
            .then(initializeSyncContext);
    }
    
    function initializeSyncContext() {
        syncContext = client.getSyncContext();
        syncContext.pushHandler = {
            onConflict: function (pushError) {
                return pushError.cancelAndDiscard();
            },
            onError: function (pushError) {
                return pushError.cancelAndDiscard();
            }
        };
        return syncContext.initialize(store);
    }
    
  2. Обновите метод setup() для использования автономной версии таблицы:

    function setup() {
        todoTable = client.getSyncTable('todoitem');
        refreshDisplay();
        addItemEl.addEventListener('submit', addItemHandler);
        refreshButtonEl.addEventListener('click', refreshDisplay);
    }
    
  3. Замените метод syncLocalTable(), который синхронизирует данные в автономном хранилище с онлайн-хранилищем:

    function syncLocalTable() {
        return syncContext.push().then(function () {
            return syncContext.pull(new WindowsAzure.Query('todoitem'));
        });
    }
    

Создание приложения

Выполните следующие команды, чтобы собрать приложение Android:

cordova clean android
cordova build android

Приложение можно запустить:

cordova run android

Тестирование в Visual Studio Code

В Visual Studio Code можно использовать отладчик, если установлено расширение Cordova Tools. Щелкните отладчик, а затем создайте файл launch.json. При появлении запроса выберите Cordova, а затем — конфигурации (например, Запустить Android в эмуляторе). После создания конфигурации запуска можно запустить приложение в отладчике. Оно будет запущено в выбранном вами эмуляторе. Тем не менее теперь вы сможете увидеть выходные данные отладки в консоли отладки.

Тестирование приложения

В этом разделе мы протестируем поведение приложения при доступной сети Wi-Fi, а затем отключим Wi-Fi и рассмотрим автономный сценарий.

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

  1. Переведите устройство или эмулятор в режим В самолете.
  2. Добавьте несколько записей задач или отметьте некоторые записи как завершенные.
  3. Выйдите из устройства или эмулятора (или принудительно закройте приложение) и перезапустите его.
  4. Убедитесь, что изменения были сохранены на устройстве.
  5. Просмотрите содержимое таблицы TodoItem в Azure. Используйте средство SQL, например SQL Server Management Studio, или клиент REST, например Fiddler или Postman. Убедитесь, что новые элементы не были синхронизированы с сервером.
  6. Включите Wi-Fi в эмуляторе или на устройстве.
  7. Обновите данные, выполнив вытягивание для обновления или нажав значок "Обновить".
  8. Снова просмотрите данные таблицы TodoItem. Должны отображаться как новые, так и измененные записи.

Следующие шаги

Перейдите к реализации аутентификации.