Lägga till offlinedatasynkronisering i Xamarin.iOS-appen
Den här självstudien beskriver funktionen för offlinesynkronisering i Azure Mobile Apps för Xamarin.iOS. Med offlinesynkronisering kan slutanvändarna interagera med en mobilapp – visa, lägga till eller ändra data – även om det inte finns någon nätverksanslutning. Ändringar lagras i en lokal databas. När enheten är online igen synkroniseras dessa ändringar med fjärrserverdelen.
Innan du påbörjar den här självstudien bör du ha slutfört snabbstartsguiden Xamarin.iOS, vilket innefattar att skapa en lämplig serverdelstjänst.
Mer information om funktionen för offlinesynkronisering finns i avsnittet Offline datasynkronisering i Azure Mobile Apps.
Uppdatera appen för att stödja offlinesynkronisering
I onlineåtgärden läser du till och skriver från en IRemoteTable<T>
. När du använder offlinesynkronisering läser du till och skriver från en IOfflineTable<T>
i stället. IOfflineTable
Backas upp av en SQLite-databas på enheten och synkroniseras med serverdelsdatabasen.
I Visual Studio:
Högerklicka på
TodoApp
lösningen och välj sedan Hantera NuGet-paket för lösning....På den nya fliken väljer du Bläddra och anger sedan Microsoft.Datasync.Client i sökrutan.
Välj paketet
Microsoft.Datasync.Client.SQLiteStore
.I den högra rutan väljer du alla klientprojekt (förutom
TodoAppService.NET6
projektet).Välj Installera.
Godkänn licensavtalet när du uppmanas att göra det.
Uppdatera fjärrtjänstklienten
TodoApp.Data
Öppna projektet och leta upp RemoteTodoService.cs
klassen (i Services
katalogen). Uppdatera klassen enligt följande:
Lägg till följande
using
-instruktion överst i filen:using Microsoft.Datasync.Client.SQLiteStore;
Ändra definitionen av
_table
till enIOfflineTable<TodoItem>
:/// <summary> /// Reference to the table used for datasync operations. /// </summary> private IOfflineTable<TodoItem> _table = null;
Lägg till en ny egenskap för lagring av offlinedatabasplatsen:
/// <summary> /// The path to the offline database /// </summary> public string OfflineDb { get; set; }
InitializeAsync
Uppdatera metoden för att definiera offlinedatabasen:// Create the offline store definition var connectionString = new UriBuilder { Scheme = "file", Path = OfflineDb, Query = "?mode=rwc" }.Uri.ToString(); var store = new OfflineSQLiteStore(connectionString); store.DefineTable<TodoItem>(); var options = new DatasyncClientOptions { OfflineStore = store, HttpPipeline = new HttpMessageHandler[] { new LoggingHandler() } }; // Create the datasync client. _client = TokenRequestor == null ? new DatasyncClient(Constants.ServiceUri, options) : new DatasyncClient(Constants.ServiceUri, new GenericAuthenticationProvider(TokenRequestor), options); // Initialize the database await _client.InitializeOfflineStoreAsync(); // Get a reference to the offline table. _table = _client.GetOfflineTable<TodoItem>(); // Set _initialized to true to prevent duplication of locking. _initialized = true;
RefreshItemsAsync()
Uppdatera för att utföra offlinesynkronisering:/// <summary> /// Refreshes the TodoItems list manually. /// </summary> /// <returns>A task that completes when the refresh is done.</returns> public async Task RefreshItemsAsync() { await InitializeAsync(); // First, push all the items in the table. await _table.PushItemsAsync(); // Then, pull all the items in the table. await _table.PullItemsAsync(); return; }
Ange platsen för offlinedatabasen
Redigera filen i TodoApp.iOS
projektet ViewControllers\HomeViewController.cs
. Ändra definitionen av RemoteTodoService
i konstruktorn enligt följande:
TodoService = new RemoteTodoService(async () => await GetAuthenticationToken())
{
OfflineDb = Xamarin.Essentials.FileSystem.AppDataDirectory + "/offline.db"
};
Om du inte har slutfört autentiseringsguiden bör definitionen se ut så här i stället:
TodoService = new RemoteTodoService()
{
OfflineDb = Xamarin.Essentials.FileSystem.AppDataDirectory + "/offline.db"
};
Testa appen
Appen synkroniseras inte med serverdelen förrän uppdateringsikonen trycks ner. Så här testar du:
Öppna Azure Portal.
Öppna den resursgrupp som innehåller resurserna för snabbstarten.
quickstart
Välj databasen.Välj Frågeredigeraren (förhandsversion).
Logga in med SQL Server-autentisering med samma autentiseringsuppgifter som du har konfigurerat för databasen.
- Om det behövs uppmanas du att tillåta åtkomst för din IP-adress. Välj länken för att uppdatera listan över tillåtna och tryck sedan på OK för att försöka logga in igen.
I frågeredigeraren anger du
SELECT * FROM [dbo].[TodoItems]
. Välj sedan Kör.
En lista över aktuella TodoItems visas.
Gör nu några ändringar via din app. TRYCK INTE PÅ UPPDATERA (ännu).
Upprepa SQL-instruktionen i Azure-portalen och kontrollera att inga ändringar har gjorts i data i databasen.
Välj ikonen Uppdatera i din app för att skicka data i kön till serverdelstjänsten. Http-transaktionerna visas i fönstret Utdatafelsökning.
Upprepa SQL-instruktionen i Azure-portalen och kontrollera att ändringarna har överförts till fjärrtjänsten.
Rensa resurser
Om du inte gör en ny snabbstartsguide kan du ta bort de resurser som är associerade med serverdelstjänsten nu.
- Öppna Azure Portal.
- Välj den resursgrupp som innehåller snabbstartsresurserna.
- Välj Ta bort resursgrupp.
- Följ anvisningarna för att bekräfta borttagningen.
Du kan också använda Azure CLI:
az group delete -g quickstart
Om du använde Azure Developer CLI för att distribuera resurser kan du använda azd down
kommandot i stället.
Borttagningen tar några minuter att slutföra.
Nästa steg
- Läs dokumentationen om HUR DU GÖR:
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för