Partager via


Exclure ou limiter des fonctionnalités de la version d’évaluation

Si vous autorisez les clients à utiliser votre application gratuitement pendant une période d’évaluation, 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.

Important

Cet article montre comment utiliser des membres de l’espace de noms Windows.ApplicationModel.Store pour implémenter la fonctionnalité d’évaluation. Cet espace de noms n’est plus mis à jour avec de nouvelles fonctionnalités et nous vous recommandons d’utiliser l’espace de noms Windows.Services.Store à la place. L’espace de noms Windows.Services.Store prend en charge les derniers types d’extensions, tels que les modules complémentaires consommables gérés par le Store et les abonnements, et est conçu pour être compatible avec les futurs types de produits et de fonctionnalités pris en charge par l’Espace partenaires et le Store. 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. Pour plus d’informations sur l’implémentation de fonctionnalités d’évaluation à l’aide de l’espace de noms Windows.Services.Store , consultez cet article.

Prérequis

Application Windows dans laquelle ajouter des fonctionnalités pour les clients à acheter.

Étape 1 : choisir les fonctionnalités que vous souhaitez activer ou désactiver pendant la période d’évaluation

L’état de licence actuel de votre application est stocké en tant que propriétés de la classe LicenseInformation . 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).

Si vous souhaitez détecter la modification de la licence et effectuer une action dans votre application, vous devez ajouter un gestionnaire d’événements pour cela, comme décrit à l’étape suivante.

Étape 2 : Initialiser les informations de licence

Lorsque votre application initialise, obtenez l’objet LicenseInformation pour votre application, comme illustré dans cet exemple. Nous partons du principe que licenseInformation est une variable globale ou un champ de type LicenseInformation.

Pour l’instant, vous obtiendrez des informations de licence simulées à l’aide de CurrentAppSimulator au lieu de CurrentApp. Avant de soumettre la version de publication de votre application au Windows Store, vous devez remplacer toutes les références CurrentAppSimulator dans votre code par CurrentApp.

void InitializeApp()
{
    // Some app initialization code...

    // Initialize the license info for use in the app that is uploaded to the Store.
    // Uncomment the following line in the release version of your app.
    //   licenseInformation = CurrentApp.LicenseInformation;

    // Initialize the license info for testing.
    // Comment the following line in the release version of your app.
    licenseInformation = CurrentAppSimulator.LicenseInformation;

    // Other app initialization code...
}

Ensuite, ajoutez un gestionnaire d’événements pour recevoir des notifications lorsque la licence change pendant l’exécution de l’application. 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, par exemple.

void InitializeApp()
{
    // Some app initialization code...

    // Initialize the license info for use in the app that is uploaded to the Store.
    // Uncomment the following line in the release version of your app.
    //   licenseInformation = CurrentApp.LicenseInformation;

    // Initialize the license info for testing.
    // Comment the following line in the release version of your app.
    licenseInformation = CurrentAppSimulator.LicenseInformation;

    // Register for the license state change event.
    licenseInformation.LicenseChanged += LicenseInformation_LicenseChanged;

    // Other app initialization code...
}

void LicenseInformation_LicenseChanged()
{
    // This method is defined later.
    ReloadLicense(); 
}

Étape 3 : Coder les fonctionnalités dans les blocs conditionnels

Lorsque l’événement de modification de licence est déclenché, votre application doit appeler l’API de licence pour déterminer si l’état d’évaluation a changé. Le code de cette étape montre comment structurer votre gestionnaire pour cet événement. À 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.

Cet exemple montre comment évaluer l’état de la licence d’une application afin de pouvoir activer ou désactiver une fonctionnalité de votre application en conséquence.

void ReloadLicense()
{
    if (licenseInformation.IsActive)
    {
        if (licenseInformation.IsTrial)
        {
            // Show the features that are available during trial only.
        }
        else
        {
            // Show the features that are available only with a full license.
        }
    }
    else
    {
        // A license is inactive only when there' s an error.
    }
}

Étape 4 : Obtenir la date d’expiration d’évaluation d’une application

Incluez du code pour déterminer la date d’expiration de l’évaluation de l’application.

Le code de cet exemple définit une fonction pour obtenir la date d’expiration de la licence d’évaluation de l’application. Si la licence est toujours valide, affichez la date d’expiration avec le nombre de jours restants jusqu’à l’expiration de la version d’évaluation.

void DisplayTrialVersionExpirationTime()
{
    if (licenseInformation.IsActive)
    {
        if (licenseInformation.IsTrial)
        {
            var longDateFormat = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longdate");

            // Display the expiration date using the DateTimeFormatter.
            // For example, longDateFormat.Format(licenseInformation.ExpirationDate)

            var daysRemaining = (licenseInformation.ExpirationDate - DateTime.Now).Days;

            // Let the user know the number of days remaining before the feature expires
        }
        else
        {
            // ...
        }
    }
    else
    {
        // ...
    }
}

Étape 5 : Tester les fonctionnalités à l’aide d’appels simulés à l’API de licence

À présent, testez votre application à l’aide de données simulées. CurrentAppSimulator obtient des informations de licence spécifiques aux tests à partir d’un fichier XML appelé WindowsStoreProxy.xml, situé dans %UserProfile%\AppData\local\packages\<package name>\LocalState\Microsoft\Windows Store\ApiData. Vous pouvez modifier WindowsStoreProxy.xml pour modifier les dates d’expiration simulées de votre application et pour ses fonctionnalités. Testez toutes vos configurations d’expiration et de licence possibles pour vous assurer que tout fonctionne comme prévu. Pour plus d’informations, consultez Utilisation du fichier WindowsStoreProxy.xml avec CurrentAppSimulator.

Si ce chemin d’accès et ce fichier n’existent pas, vous devez les créer, soit pendant l’installation, soit au moment de l’exécution. Si vous essayez d’accéder à la propriété CurrentAppSimulator.LicenseInformation sans WindowsStoreProxy.xml présente dans cet emplacement spécifique, vous obtiendrez une erreur.

Étape 6 : Remplacer les méthodes de l’API de licence simulée par l’API réelle

Après avoir testé votre application avec le serveur de licences simulé et avant de soumettre votre application à un Windows Store pour certification, remplacez CurrentAppSimulator par CurrentApp, comme indiqué dans l’exemple de code suivant.

Important

Votre application doit utiliser l’objet CurrentApp lorsque vous soumettez votre application à un Windows Store ou qu’elle échoue.

void InitializeApp()
{
    // Some app initialization code...

    // Initialize the license info for use in the app that is uploaded to the Store.
    // Uncomment the following line in the release version of your app.
    licenseInformation = CurrentApp.LicenseInformation;

    // Initialize the license info for testing.
    // Comment the following line in the release version of your app.
    // licenseInformation = CurrentAppSimulator.LicenseInformation;

    // Register for the license state change event.
    licenseInformation.LicenseChanged += LicenseInformation_LicenseChanged;

    // Other app initialization code...
}

Étape 7 : Décrire le fonctionnement de l’essai gratuit pour vos clients

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.