Partager via


Implémenter une version d’évaluation de votre application

Si vous configurez votre application en tant qu’essai gratuit dans l’Espace partenaires afin que les clients puissent utiliser votre application gratuitement pendant une période d’essai, vous pouvez inciter vos clients à effectuer une mise à niveau vers la version complète de votre application en excluant ou en limitant certaines fonctionnalités pendant la période d’évaluation. Déterminez les fonctionnalités qui doivent être limitées avant de commencer à coder, puis assurez-vous que votre application leur permet uniquement de fonctionner lorsqu’une licence complète a été achetée. Vous pouvez également activer des fonctionnalités, telles que des bannières ou des filigranes, qui s’affichent uniquement pendant la version d’essai, avant qu’un client n’achète votre application.

Cet article montre comment utiliser des membres de la classe StoreContext dans l’espace de noms Windows.Services.Store pour déterminer si l’utilisateur dispose d’une licence d’évaluation pour votre application et être averti si l’état de la licence change pendant l’exécution de votre application.

Remarque

L’espace de noms Windows.Services.Store a été introduit dans la version 1607 de Windows 10 et ne peut être utilisé que dans les projets ciblant Windows 10 édition anniversaire (10.0 Build 14393) ou une version ultérieure dans Visual Studio. Si votre application cible une version antérieure de Windows 10, vous devez utiliser l’espace de noms Windows.ApplicationModel.Store plutôt que Windows.Services.Store. Pour plus d’informations, consultez cet article.

Instructions pour l’implémentation d’une version d’évaluation

L’état de licence actuel de votre application est stocké en tant que propriétés de la classe StoreAppLicense . En règle générale, vous placez les fonctions qui dépendent de l’état de la licence dans un bloc conditionnel, comme nous le décrivons à l’étape suivante. Lorsque vous envisagez ces fonctionnalités, assurez-vous que vous pouvez les implémenter d’une manière qui fonctionnera dans tous les états de licence.

Déterminez également la façon dont vous souhaitez gérer les modifications apportées à la licence de l’application pendant l’exécution de l’application. Votre application d’évaluation peut être complète, mais disposez de bannières publicitaires dans l’application où la version payante ne le fait pas. Ou, votre application d’évaluation peut désactiver certaines fonctionnalités ou afficher des messages réguliers demandant à l’utilisateur de l’acheter.

Réfléchissez au type d’application que vous créez et à quelle stratégie d’essai ou d’expiration est adaptée. Pour une version d’évaluation d’un jeu, une bonne stratégie consiste à limiter la quantité de contenu de jeu qu’un utilisateur peut jouer. Pour une version d’évaluation d’un utilitaire, vous pouvez envisager de définir une date d’expiration ou de limiter les fonctionnalités qu’un acheteur potentiel peut utiliser.

Pour la plupart des applications non-jeux, la définition d’une date d’expiration fonctionne bien, car les utilisateurs peuvent développer une bonne compréhension de l’application complète. Voici quelques scénarios d’expiration courants et vos options de gestion.

  • La licence d’évaluation expire pendant l’exécution de l’application

    Si la version d’évaluation expire pendant l’exécution de votre application, votre application peut :

    • Ne rien faire.
    • Affichez un message à votre client.
    • C’est presque ça.
    • Invitez votre client à acheter l’application.

    La meilleure pratique consiste à afficher un message avec une invite d’achat de l’application et, si le client l’achète, continuez avec toutes les fonctionnalités activées. Si l’utilisateur décide de ne pas acheter l’application, fermez-la ou rappelez-lui d’acheter l’application à intervalles réguliers.

  • La licence d’évaluation expire avant le lancement de l’application

    Si la version d’évaluation expire avant que l’utilisateur lance l’application, votre application ne démarre pas. Au lieu de cela, les utilisateurs voient une boîte de dialogue qui leur donne la possibilité d’acheter votre application à partir du Windows Store.

  • Le client achète l’application pendant son exécution

    Si le client achète votre application pendant son exécution, voici quelques actions que votre application peut entreprendre.

    • Ne faites rien et laissez-les continuer en mode d’évaluation jusqu’à ce qu’ils redémarrent l’application.
    • Merci d’acheter ou d’afficher un message.
    • Activez silencieusement les fonctionnalités disponibles avec une licence complète (ou désactivez les notifications d’évaluation uniquement).

Veillez à expliquer comment votre application se comportera pendant et après la période d’évaluation gratuite afin que vos clients ne soient pas surpris par le comportement de votre application. Pour plus d’informations sur la description de votre application, consultez Créer des descriptions d’application.

Prérequis

Cet exemple dispose des prérequis suivants :

  • Un projet Visual Studio pour une application de la Plateforme Windows universelle (UWP) qui cible Windows 10 édition anniversaire (10.0 Build 14393) ou une version ultérieure.
  • Vous avez créé une application dans l’Espace partenaires configurée en tant qu’essai gratuit sans limite de temps et cette application est publiée dans le Windows Store. Vous pouvez configurer de manière alternative l’application afin qu’elle ne soit pas détectable dans le Store pendant que vous la testez. Pour plus d’informations, consultez nos conseils de test.

Le code de cet exemple suppose que :

  • Le code s’exécute dans le contexte d’une page contenant un progressRing nommé workingProgressRing et un TextBlock nommé textBlock. Ces objets sont utilisés respectivement pour indiquer qu’une opération asynchrone se produit et afficher les messages de sortie.
  • Le fichier de code contient une instruction using pour l’espace de noms Windows.Services.Store.
  • Cette application mono-utilisateur ne s’exécute que dans le contexte de l’utilisateur qui l’a lancée. Pour plus d’informations, consultez Achats in-app et versions d’évaluation.

Remarque

Si vous disposez d’une application utilisant le pont du bureau, vous allez peut-être devoir ajouter du code supplémentaire (non affiché dans cet exemple) pour configurer l’objet StoreContext. Pour plus d’informations, consultez Utilisation de la classe StoreContext dans une application bureautique qui utilise le Pont du bureau.

Exemple de code

Lorsque votre application initialise, obtenez l’objet StoreAppLicense pour votre application et gérez l’événement OfflineLicensesChanged pour recevoir des notifications lorsque la licence change pendant l’exécution de l’application. Par exemple, la licence de l’application peut changer si la période d’évaluation expire ou si le client achète l’application via un Windows Store. Lorsque la licence change, obtenez la nouvelle licence et activez ou désactivez une fonctionnalité de votre application en conséquence.

À ce stade, si un utilisateur a acheté l’application, il est recommandé de fournir des commentaires à l’utilisateur indiquant que l’état des licences a changé. Vous devrez peut-être demander à l’utilisateur de redémarrer l’application si c’est la façon dont vous l’avez codée. Mais faites cette transition aussi fluide et indolore que possible.

private StoreContext context = null;
private StoreAppLicense appLicense = null;

// Call this while your app is initializing.
private async void InitializeLicense()
{
    if (context == null)
    {
        context = StoreContext.GetDefault();
        // If your app is a desktop app that uses the Desktop Bridge, you
        // may need additional code to configure the StoreContext object.
        // For more info, see https://aka.ms/storecontext-for-desktop.
    }

    workingProgressRing.IsActive = true;
    appLicense = await context.GetAppLicenseAsync();
    workingProgressRing.IsActive = false;

    // Register for the licenced changed event.
    context.OfflineLicensesChanged += context_OfflineLicensesChanged;
}

private async void context_OfflineLicensesChanged(StoreContext sender, object args)
{
    // Reload the license.
    workingProgressRing.IsActive = true;
    appLicense = await context.GetAppLicenseAsync();
    workingProgressRing.IsActive = false;

    if (appLicense.IsActive)
    {
        if (appLicense.IsTrial)
        {
            textBlock.Text = $"This is the trial version. Expiration date: {appLicense.ExpirationDate}";

            // Show the features that are available during trial only.
        }
        else
        {
            // Show the features that are available only with a full license.
        }
    }
}

Pour obtenir un exemple complet d’application, consultez l’exemple Store.