Kapcsolat nélküli adatszinkronizálás hozzáadása a Xamarin.Android-alkalmazáshoz
Ez az oktatóanyag az Azure Mobile Apps offline szinkronizálási funkcióját ismerteti a Xamarin.Android gyorsútmutató-alkalmazáshoz. Az offline szinkronizálással a végfelhasználók akkor is használhatják a mobilalkalmazásokat – adatok megtekintését, hozzáadását vagy módosítását –, ha nincs hálózati kapcsolat. A módosítások helyi adatbázisban vannak tárolva. Az eszköz online állapotba helyezése után a rendszer szinkronizálja ezeket a módosításokat a távoli háttérrendszerrel.
Az oktatóanyag megkezdése előtt el kell végeznie a Xamarin.Android rövid útmutatót, amely magában foglalja a megfelelő háttérszolgáltatás létrehozását. Azt is feltételezzük, hogy hozzáadott hitelesítést az alkalmazáshoz. Ez azonban nem kötelező.
Az alkalmazás frissítése az offline szinkronizálás támogatásához
Az online művelet során egy IRemoteTable<T>
. Offline szinkronizálás használata esetén ehelyett olvasási és írási műveletet IOfflineTable<T>
kell elvégeznie. A IOfflineTable
háttéradatbázist egy eszközalapú SQLite-adatbázis készíti, és szinkronizálja a háttéradatbázissal.
A Visual Studióban:
Kattintson a jobb gombbal a
TodoApp
megoldásra, majd válassza a Megoldáshoz készült NuGet-csomagok kezelése... lehetőséget.Az új lapon válassza a Tallózás lehetőséget, majd írja be a Microsoft.Datasync.Client kifejezést a keresőmezőbe.
Válassza ki a
Microsoft.Datasync.Client.SQLiteStore
csomagot.A jobb oldali panelen válassza ki az összes ügyfélprojektet (kivéve a
TodoAppService.NET6
projektet).Válassza a Telepítés lehetőséget.
Amikor a rendszer kéri, fogadja el a licencszerződést.
A távoli szolgáltatásügyfél frissítése
Nyissa meg a TodoApp.Data
projektet, és keresse meg az RemoteTodoService.cs
osztályt (a könyvtárban Services
). Frissítse az osztályt az alábbiak szerint:
Adja hozzá a következő
using
utasítást a fájl elejéhez:using Microsoft.Datasync.Client.SQLiteStore;
Módosítsa a definíciót
_table
IOfflineTable<TodoItem>
:/// <summary> /// Reference to the table used for datasync operations. /// </summary> private IOfflineTable<TodoItem> _table = null;
Adjon hozzá egy új tulajdonságot az offline adatbázis helyének tárolásához:
/// <summary> /// The path to the offline database /// </summary> public string OfflineDb { get; set; }
Frissítse a metódust az
InitializeAsync
offline adatbázis definiálásához:// 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;
Frissítse az
RefreshItemsAsync()
offline szinkronizálást:/// <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; }
Az offline adatbázis helyének beállítása
A projektben TodoApp.Android
szerkessze a App.xaml.cs
fájlt. Módosítsa a definíciót az RemoteTodoService
alábbiak szerint:
TodoService = new RemoteTodoService(async () => await GetAuthenticationToken())
{
OfflineDb = Xamarin.Essentials.FileSystem.AppDataDirectory + "/offline.db"
};
Ha még nem fejezte be a hitelesítési oktatóanyagot, a definíciónak a következőképpen kell kinéznie:
TodoService = new RemoteTodoService()
{
OfflineDb = Xamarin.Essentials.FileSystem.AppDataDirectory + "/offline.db"
};
Az alkalmazás tesztelése
Az alkalmazás nem szinkronizálódik a háttérrendszerrel, amíg a frissítés ikonja nem lesz lenyomva. Tesztelés:
Nyissa meg az Azure Portalt.
Nyissa meg a rövid útmutatóhoz tartozó erőforrásokat tartalmazó erőforráscsoportot.
Válassza ki az adatbázist
quickstart
.Válassza ki a Lekérdezésszerkesztőt (előzetes verzió).
Jelentkezzen be SQL Server-hitelesítéssel az adatbázishoz beállított hitelesítő adatokkal.
- Ha szükséges, a rendszer kérni fogja, hogy engedélyezze az IP-címhez való hozzáférést. Kattintson a hivatkozásra az engedélyezési lista frissítéséhez, majd az OK billentyű lenyomásával próbálkozzon újra a bejelentkezéssel.
A lekérdezésszerkesztőben adja meg a következőt
SELECT * FROM [dbo].[TodoItems]
: Ezután válassza a Futtatás lehetőséget.
Megjelenik az aktuális todoItemek listája.
Most végezze el a módosításokat az alkalmazáson keresztül. NE NYOMJA LE A FRISSÍTÉS BILLENTYŰT (még).
Ismételje meg az SQL-utasítást az Azure Portalon, és ellenőrizze, hogy nem történt-e módosítás az adatbázisban lévő adatokon.
Válassza az alkalmazás Frissítés ikonját az adatok várólistába helyezéséhez a háttérszolgáltatásba. A HTTP-tranzakciók a Kimeneti hibakeresés ablakban fognak megjelenni.
Ismételje meg az SQL-utasítást az Azure Portalon, és ellenőrizze, hogy a módosítások le lettek-e küldve a távoli szolgáltatásba.
Az erőforrások eltávolítása
Ha nem végez újabb gyors üzembe helyezési oktatóanyagot, törölheti a háttérszolgáltatáshoz társított erőforrásokat.
- Nyissa meg az Azure Portalt.
- Válassza ki a gyorsindítási erőforrásokat tartalmazó erőforráscsoportot.
- Válassza az Erőforráscsoport törlése elemet.
- Kövesse az utasításokat a törlés megerősítéséhez.
Az Azure CLI-t is használhatja:
az group delete -g quickstart
Ha az Azure Developer CLI-t használta az erőforrások üzembe helyezéséhez, használhatja helyette a azd down
parancsot.
A törlés néhány percet vesz igénybe.
Következő lépések
- Tekintse át az ÚTMUTATÓ dokumentációját:
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: