Добавление автономной синхронизации данных в приложение Apache Cordova
В этом учебнике рассматривается возможность автономной синхронизации мобильных приложений Azure для приложения Apache Cordova. Автономная синхронизация позволяет конечным пользователям взаимодействовать с мобильным приложением — просматривать, добавлять или изменять данные, даже если сетевое подключение отсутствует. Изменения сохраняются в локальной базе данных. Как только устройство возвращается в режим подключения к сети, эти изменения синхронизируются с удаленной внутренним сервером.
Перед началом работы с этим учебником нужно изучить учебник по Apache Cordova, в котором описывается создание подходящей серверной службы.
Дополнительные сведения о функции автономной синхронизации см. в статье Синхронизация автономных данных в мобильных приложениях Azure.
Обновление приложения для поддержки синхронизации автономных данных
При работе онлайн используется getTable()
для получения ссылки на таблицу в Интернете. При реализации возможностей автономной работы используется getSyncTable()
для получения ссылки на автономное хранилище SQLite. Хранилище SQLite предоставляется подключаемым модулем cordova-sqlite-storage
Apache Cordova.
Примечание.
Автономная синхронизация доступна только для Android и iOS. Она не будет работать в рамках спецификации платформы браузера.
В файле www/js/index.js
:
Обновите метод
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); }
Обновите метод
setup()
для использования автономной версии таблицы:function setup() { todoTable = client.getSyncTable('todoitem'); refreshDisplay(); addItemEl.addEventListener('submit', addItemHandler); refreshButtonEl.addEventListener('click', refreshDisplay); }
Замените метод
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-уведомлений). Затем приложение запрашивает все новые элементы (с помощью вытягивания). В этом учебнике обновление выбирается путем нажатия значка или с помощью команды вытягивания для обновления.
- Переведите устройство или эмулятор в режим В самолете.
- Добавьте несколько записей задач или отметьте некоторые записи как завершенные.
- Выйдите из устройства или эмулятора (или принудительно закройте приложение) и перезапустите его.
- Убедитесь, что изменения были сохранены на устройстве.
- Просмотрите содержимое таблицы TodoItem в Azure. Используйте средство SQL, например SQL Server Management Studio, или клиент REST, например Fiddler или Postman. Убедитесь, что новые элементы не были синхронизированы с сервером.
- Включите Wi-Fi в эмуляторе или на устройстве.
- Обновите данные, выполнив вытягивание для обновления или нажав значок "Обновить".
- Снова просмотрите данные таблицы TodoItem. Должны отображаться как новые, так и измененные записи.
Следующие шаги
Перейдите к реализации аутентификации.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по