Blog ENI : Toute la veille numérique !
-25€ dès 75€ sur les livres en ligne, vidéos... avec le code FUSEE25. J'en profite !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Xamarin
  3. Système de fichiers et paramètres
Extrait - Xamarin Développez vos applications multiplateformes pour iOS, Android et Windows
Extraits du livre
Xamarin Développez vos applications multiplateformes pour iOS, Android et Windows Revenir à la page d'achat du livre

Système de fichiers et paramètres

Introduction

L’accès au système de fichiers et aux paramètres est une partie quasi obligatoire dans toutes les applications mobiles. Dans ce chapitre, nous verrons comment accéder à ce système de fichiers par plateforme puis comment écrire et lire des paramètres.

Accès aux fichiers

Accéder au système de fichiers est différent selon le système d’exploitation. De ce fait, nous avons plusieurs approches pour accéder aux fichiers. Dans une première partie, nous verrons les spécificités de chaque plateforme, puis comment accéder aux fichiers avec les API natives. Enfin, nous verrons comment utiliser un code portable sur les trois plateformes.

1. iOS

a. Présentation

Le système de fichiers d’iOS est très orienté applications. Chaque application est dans un bac à sable et a uniquement accès à son propre dossier. À la désinstallation d’une application, ses dossiers sont automatiquement supprimés par le système d’exploitation. Autre spécificité d’iOS : les utilisateurs n’ont pas accès directement au système de fichiers.

b. Répertoires d’application

Avant d’écrire du code pour interagir avec le système de fichiers, il est important de comprendre comment iOS organise celui-ci. Chaque dossier à un rôle propre avec des fonctions différentes.

  • AppBundle : c’est le dossier où sont installées l’application et toutes ses ressources. Lors de son déploiement, l’application est signée. Si un fichier de ce dossier change, la signature ne correspond plus à celle de l’application et iOS bloque le lancement de celle-ci. Lors de la mise à jour de votre application par l’App Store, les fichiers de ce dossier sont mis à jour par le système d’exploitation. Seul l’accès en lecture est autorisé à ce dossier.

  • Documents : c’est le dossier destiné à être utilisé par l’utilisateur. Le dossier doit uniquement contenir des fichiers que vous voulez mettre à disposition d’un utilisateur. Il ne faut donc y mettre aucun fichier technique. Attention, son contenu est sauvegardé sur iTunes et iCloud.

  • Library : c’est le dossier idéal où créer les fichiers techniques comme la base de données et les préférences utilisateur. Ce dossier n’est pas exposé par iTunes à l’utilisateur. Le contenu de ce dossier est sauvegardé par iTunes. Si vous désinstallez/réinstallez...

Paramètres utilisateur

Comme pour le système de fichiers, le système de paramètres utilisateur est différent selon le système d’exploitation. De ce fait, nous avons plusieurs approches pour accéder aux fichiers. Dans une première partie, nous verrons les spécificités de chaque plateforme, puis comment accéder aux fichiers avec les API natives. Enfin, nous verrons comment utiliser un code portable sur les trois plateformes.

1. iOS

a. Présentation

Les préférences utilisateur sont gérées par la classe NSUsersDefaults. Elle utilise un système clé-valeur classique. Ces préférences sont sauvegardées automatiquement dans iTunes.

Elles doivent respecter un nombre restreint de types :

  • Numériques : Float, Double

  • Booléen : Boolean

  • Texte : String

  • URL : URL, NSUrl

Ces limitations peuvent vous amener à choisir le type de stockage par fichier pour manipuler des objets complexes.

b. Sauvegarde des préférences


// Récupération des paramètres par défaut de l'application 
var preference = NSUserDefaults.StandardUserDefaults;
 

Écrire une valeur dans les préférences


// Écriture d'un booléen 
preference.SetBool(true, "CLEF"); 
// Écriture d'un string 
preference.SetString("chaîne de caractère", "CLEF"); 
// Écriture d'un double 
preference.SetDouble(1.2,"CLEF"); 
// Écriture d'un float 
preference.SetFloat(1.2f,"CLEF"); 
// Écriture d'une URL 
preference.SetUrl(new Uri("http://www.google.fr","CLEF");
 

Sauvegarde des valeurs modifiées


preference.Synchronize();
 

Il ne faut pas oublier d’exécuter la méthode Synchronize afin de réellement faire les changements de préférences, sans quoi ils ne seront pas pris en compte.

c. Récupération des préférences

Lire une valeur dans les préférences


// Lecture d'un booléen 
preference.BoolForKey("CLEF"); 
// Lecture d'un string 
preference.StringForKey("CLEF"); 
// Lecture d'un double 
preference.DoubleForKey("CLEF"); 
// Lecture d'un float ...

Conclusion

Dans ce chapitre, nous avons vu comment accéder aux fichiers et lire et écrire des préférences utilisateur de façon native ainsi que les alternatives multiplateformes en utilisant des plug-ins. Si vous avez besoin de stocker des données plus complexes ou volumineuses, il faut utiliser des mécaniques de sérialisation ou même une base de données locale.