Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Détection de 1er lancement ou de changement de version

Il est très courant d’afficher un message ou de déclencher un traitement lors de la première utilisation d’une App ou du premier run d’une nouvelle version. Comment le faire simplement ?

Avec Xamarin.Essentials bien entendu…

je ne présenterai pas cette librairie qui est même installée d’office avec les Templates Xamarin.Forms désormais. C’est une mine d’or pour tous les petits besoins liées aux devices, plateformes, etc. Il y a aussi des fonctions simples mais bien pratiques comme le stockage des préférences.

C’est grâce à ce dernier que nous allons réaliser le premier exercice :

Détection de premier lancement de l’App

En utilisant astucieusement la gestion des préférences de Xamarin.Essentials on peut parfaitement écrire, par exemple dans App.Xaml.cs afin que cela soit disponible de partout dans l’App, le code suivant :

public static class Settings
{
  public static bool FirstRun
  {
      get => Preferences.Get(nameof(FirstRun), true);
      set => Preferences.Set(nameof(FirstRun), value);
  }
}

Il suffit ensuite dans le constructeur de tester et positionner ensuite à False la propriété statique précédente :

if(Settings.FirstRun)
{
   // faire une action comme afficher un dialogue
   Settings.FirstRun = false;
}

Cette approche est ultra simple et fonctionnera tant que l’App restera installée. Bien entendu en cas d’effacement et de réinstallation le marqueur sera perdu mais cela n’est pas gênant s’agissant d’un cas bien particulier.

Détecter ainsi le 1er run est très intéressant mais très souvent on a aussi besoin d’y ajouter un critère : celui de la version.

Détecter le 1er run d’un version donnée

Il n’est en effet pas rare d’afficher au moins un petit dialogue des nouveautés quand on livre une nouvelle version. Il s’agit bien d’une détection de 1er run mais avec un critère de plus : pour la dernière version installée.

Les Xamarin.Essentiels nous offre quelque chose de plus packagé et plus simple à utiliser que de bricoler du code même en s’aidant de l’astuce du 1er run étudiée plus haut. Il s’agit du Version Tracking (suivi de version).

On utilisera l’astuce en commençant par l’activer au plus tôt dans le logiciel, dans el AppDelegate iOS, la MainActivity Android ou pourquoi pas dans le constructeur App côté Xamarin.Forms :

VersionTracking.Track();

Une fois le suivi de version activé, il ne reste plus qu’à faire des contrôles suivant ce qu’on veut afficher ou faire :

if(VersionTracking.IsFirstLaunchEver)
{
  // Afficher un message de premier lancement de l’App
}
else if(VersionTracking.IsFirstLaunchForCurrentVersion)
{
  // Afficher un message pour le 1er lancement de la version en cours (1.0.0 par exemple)
}
else if(VersionTracking.IsFirstLaunchForCurrentBuild)
{
  // Afficher un message de 1er lancement pour le build courant (le 3 par exemple)
}

Cette API est plus complète que la précédente et permet de gérer plus de cas de figure. Mais elle est capable de faire encore plus de chose ! N’hésitez pas à visiter la documentation des Xamarin.Essentials !

Conclusion

Ce sont souvent les petites choses qui en permettent de grandes… Certaines aides des Xamarin.Essentials semblent très limitées ou peu sophistiquées (d’autres le sont plus), mais elles viennent juste apporter la petite brique qui manquait pour terminer le mur.. A ce titre elles sont tout aussi essentielles que le reste… Visitez l’aide des Xamarin.Essentials, vous y trouverez des tas de choses intéressantes !

Stay Tuned !

blog comments powered by Disqus