Dot.Blog

C#, XAML, WinUI, WPF, Android, MAUI, IoT, IA, ChatGPT, Prompt Engineering

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 application ou du premier lancement d’une nouvelle version. Comment le faire simplement avec .NET MAUI ?

.NET MAUI (Multi-platform App UI) est l'évolution de Xamarin.Forms, offrant des fonctionnalités similaires mais avec des améliorations et des changements. Dans cet article, nous allons voir comment adapter notre approche pour détecter le premier lancement d'une application et le premier lancement d'une version donnée.

Détection de premier lancement de l’App

En utilisant astucieusement la gestion des préférences de .NET MAUI, nous pouvons parfaitement écrire, par exemple dans App.xaml.cs afin que cela soit disponible de partout dans l'application, le code suivant :


using Microsoft.Maui.Storage;
public static class Settings
{
    public static bool FirstRun
    {
        get => Preferences.Default.Get(nameof(FirstRun), true);
        set => Preferences.Default.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'application 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 premier lancement 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 premier lancement d’une 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 premier lancement mais avec un critère de plus : pour la dernière version installée.

.NET MAUI 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 premier lancement étudiée plus haut. Il s’agit du suivi de version (Version Tracking). 

Cette fonctionnalités avait été originellement ajoutée dans les Xamarin.Essentials, paquet maintenu par la communauté et apportant de nombreuses aides. Puis lors des premières versions de MAUI un portage a eu lieu vers MAUI Essentials. Au fil du temps ces ajouts se sont avérés tellement... essentiels, que Microsoft a décidé de les intégrer directement dans les librairies de MAUI. Quelques changements d'espaces de noms ont eu lieu au passage, mais ... l'essentiel est toujours là !

Pour utiliser cette fonctionnalité, nous devons d'abord l'activer au plus tôt dans l'application, dans le MauiProgram.cs :

public static MauiApp CreateMauiApp()
{
    var builder = MauiApp.CreateBuilder();

    builder
        .UseMauiApp<App>()
        .ConfigureFonts(fonts =>
        {
            fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
        })
        .ConfigureEssentials(essentials =>
        {
            essentials.UseVersionTracking();
        });

    return builder.Build();
}

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


using Microsoft.Maui.ApplicationModel;

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

Différences entre les plateformes

Toutes les informations de version sont stockées en utilisant l'API des Préférences et sont enregistrées avec un nom de fichier sous la forme [VOTRE-ID-DE-PAQUET-APP].microsoft.maui.essentials.versiontracking. Cette méthode suit la même persistance des données décrite dans la documentation des Préférences.

Conclusion

Ce sont souvent les petites choses qui permettent de grandes réalisations. Certaines aides de .NET MAUI 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. À ce titre, elles sont tout aussi essentielles que le reste. Visitez l’aide de .NET MAUI, vous y trouverez des tas de choses intéressantes, notamment celle sur le version tracking !

Stay Tuned !

 

Faites des heureux, PARTAGEZ l'article !