共用方式為


將離線資料同步新增至 Apache Cordova 應用程式

注意

此產品已淘汰。 如需使用 .NET 8 或更新版本的專案取代專案,請參閱 Community Toolkit Datasync 連結庫

本教學課程涵蓋適用於 Apache Cordova 的 Azure Mobile Apps 快速入門應用程式的離線同步處理功能。 離線同步處理可讓使用者與行動應用程式互動—檢視、新增或修改數據,即使沒有網路連線也一點也不然。 變更會儲存在本機資料庫中。 裝置重新上線后,這些變更會與遠端後端同步。

開始本教學課程之前,您應該已完成 Apache Cordova 快速入門教學課程,其中包括建立適當的後端服務。

若要深入瞭解離線同步功能,請參閱在 Azure Mobile Apps 中 離線數據同步主題。

更新應用程式以支援離線同步處理

在在線作業中,您可以使用 getTable() 來取得在線數據表的參考。 實作離線功能時,您可以使用 getSyncTable() 取得離線 SQlite 存放區的參考。 SQlite 存放區是由 Apache Cordova cordova-sqlite-storage 外掛程式提供。

注意

離線同步處理僅適用於 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 中測試

如果您已安裝 Cordova Tools 擴充功能,則可以在 Visual Studio Code 中使用調試程式。 按兩下調試程式,然後建立 launch.json 檔案。 出現提示時,選取 [Cordova],然後選取組態(例如 在模擬器上執行 Android]。 建立啟動組態之後,您就可以在調試程式中執行應用程式。 它會在您選擇的模擬器上啟動。 不過,您現在可以在偵錯控制台中看到偵錯輸出。

測試應用程式

在本節中,使用WiFi開啟測試行為,然後關閉WiFi以建立離線案例。

Todo 清單中的專案會儲存在裝置上的 SQLite 資料庫中。 當您重新整理數據時,變更會傳送至服務 (push)。 然後,應用程式會要求任何新專案(提取)。 在本教學課程中,按下圖示或使用「提取重新整理」來選取重新整理。

  1. 將裝置或模擬器置於 飛機模式
  2. 新增一些Todo專案,或將某些項目標示為完成。
  3. 結束裝置或模擬器(或強制關閉應用程式),然後重新啟動應用程式。
  4. 確認您的變更已保存在裝置上。
  5. 檢視 Azure TodoItem 數據表的內容。 使用 SQL 工具,例如 SQL Server Management Studio或 REST 用戶端,例如 Curl。 確認新專案 尚未同步至伺服器
  6. 在裝置或模擬器中開啟WiFi。
  7. 藉由「提取以重新整理」或按重新整理圖示來重新整理數據。
  8. 再次檢閱 TodoItem 數據表數據。 新的和已變更的項目現在應該會出現。

後續步驟

繼續執行 驗證