Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
- Android
- Cordova
- iOS
- Windows
- Xamarin.Android
- Xamarin.Forms
- Xamarin.iOS
Aperçu
Ce tutoriel traite de la fonctionnalité de synchronisation hors connexion d’Azure Mobile Apps pour Android. La synchronisation hors connexion permet aux utilisateurs finaux d’interagir avec une application mobile (affichage, ajout ou modification de données), même s’il n’existe aucune connexion réseau. Les modifications sont stockées dans une base de données locale. Une fois que l’appareil est de nouveau en ligne, ces modifications sont synchronisées avec le back-end distant.
S’il s’agit de votre première expérience avec Azure Mobile Apps, vous devez d’abord suivre le tutoriel Créer une application Android. Si vous n’utilisez pas le projet de serveur de démarrage rapide téléchargé, vous devez ajouter les packages d’extension d’accès aux données à votre projet. Pour plus d’informations sur les packages d’extension de serveur, consultez Utiliser le Kit de développement logiciel (SDK) du serveur principal .NET pour Azure Mobile Apps.
Pour en savoir plus sur la fonctionnalité de synchronisation hors connexion, consultez la rubrique Offline Data Sync dans Azure Mobile Apps.
Mettre à jour l’application pour prendre en charge la synchronisation hors connexion
Avec la synchronisation hors connexion, vous lisez et écrivez à partir d’une table de synchronisation (à l’aide de l’interface IMobileServiceSyncTable), qui fait partie d’une base de données SQLite sur votre appareil.
Pour envoyer et extraire des modifications entre l’appareil et Azure Mobile Services, vous utilisez un contexte de synchronisation (MobileServiceClient.SyncContext), que vous initialisez avec la base de données locale pour stocker les données localement.
Dans
TodoActivity.java
, commentez la définition existante demToDoTable
et supprimez les marques de commentaire de la version de la table de synchronisation :private MobileServiceSyncTable<ToDoItem> mToDoTable;
Dans la méthode
onCreate
, commentez l’initialisation existante demToDoTable
et décommentez cette définition :mToDoTable = mClient.getSyncTable("ToDoItem", ToDoItem.class);
Dans
refreshItemsFromTable
, commentez la définition deresults
et décommentez cette définition :// Offline Sync final List<ToDoItem> results = refreshItemsFromMobileServiceTableSyncTable();
Commentez la définition de
refreshItemsFromMobileServiceTable
.Retirez le commentaire de la définition de
refreshItemsFromMobileServiceTableSyncTable
:private List<ToDoItem> refreshItemsFromMobileServiceTableSyncTable() throws ExecutionException, InterruptedException { //sync the data sync().get(); Query query = QueryOperations.field("complete"). eq(val(false)); return mToDoTable.read(query).get(); }
Décommenter la définition de
sync
:private AsyncTask<Void, Void, Void> sync() { AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>(){ @Override protected Void doInBackground(Void... params) { try { MobileServiceSyncContext syncContext = mClient.getSyncContext(); syncContext.push().get(); mToDoTable.pull(null).get(); } catch (final Exception e) { createAndShowDialogFromTask(e, "Error"); } return null; } }; return runAsyncTask(task); }
Tester l’application
Dans cette section, vous testez le comportement avec wi-fi activé, puis désactivez wi-fi pour créer un scénario hors connexion.
Lorsque vous ajoutez des éléments de données, ils sont conservés dans le magasin SQLite local, mais pas synchronisés avec le service mobile tant que vous n’avez pas appuyé sur le bouton Actualiser . D’autres applications peuvent avoir des exigences différentes en ce qui concerne le moment où les données doivent être synchronisées, mais à des fins de démonstration, cet utilisateur l’a explicitement demandé.
Lorsque vous appuyez sur ce bouton, une nouvelle tâche en arrière-plan démarre. Il envoie tout d’abord toutes les modifications apportées au magasin local à l’aide du contexte de synchronisation, puis extrait toutes les données modifiées d’Azure vers la table locale.
Test hors connexion
Placez l’appareil ou le simulateur en mode avion . Cela crée un scénario hors connexion.
Ajoutez des ToDo éléments ou marquez certains éléments comme étant terminés. Quittez l’appareil ou le simulateur (ou fermez l’application de force) et redémarrez. Vérifiez que vos modifications ont été conservées sur l’appareil, car elles sont conservées dans le magasin SQLite local.
Affichez le contenu de la table TodoItem Azure avec un outil SQL tel que SQL Server Management Studio, ou un client REST tel que Fiddler ou Postman. Vérifiez que les nouveaux éléments n’ont pas été synchronisés avec le serveur
+ For a Node.js backend, go to the [Azure portal](https://portal.azure.com/), and in your Mobile App backend click **Easy Tables** > **TodoItem** to view the contents of the `TodoItem` table. + For a .NET backend, view the table contents either with a SQL tool such as *SQL Server Management Studio*, or a REST client such as *Fiddler* or *Postman*.
Activez le Wi-Fi dans l’appareil ou le simulateur. Ensuite, appuyez sur le bouton Actualiser.
Affichez à nouveau les données TodoItem dans le portail Azure. Les nouveaux todoItems modifiés doivent maintenant apparaître.
Ressources additionnelles
- La synchronisation des données hors connexion dans Azure Mobile Apps
- Cloud Cover : Synchronisation hors connexion dans Azure Mobile Services (remarque : la vidéo se trouve sur Mobile Services, mais la synchronisation hors connexion fonctionne de manière similaire dans Azure Mobile Apps)