Share via


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

Si vous donnez aux clients la possibilité d’utiliser votre application gratuitement pendant une période d’évaluation, vous pouvez leur donner envie de mettre à niveau vers la version complète de votre application en excluant ou en limitant certaines fonctionnalités pendant la période d’évaluation. Choisissez les fonctionnalités à limiter avant de commencer à coder, puis faites en sorte que votre application ne les rende disponibles qu’à l’achat de la licence complète. Vous pouvez également activer certaines fonctionnalités, telles que des bannières ou des filigranes, qui ne s’afficheront que pendant la période d’évaluation, avant l’achat de votre application par un client.

Important

Cet article explique comment utiliser les membres de l’espace de noms Windows.ApplicationModel.Store pour implémenter des fonctionnalités 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 types de modules complémentaires les plus récents, tels que les extensions et abonnements consommables gérés par le Store, 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 Windows Store. L’espace de noms Windows.Services.Store a été introduit dans Windows 10 version 1607 et ne peut être utilisé que dans les projets qui ciblent 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 que les clients peuvent acheter.

Étape 1 : Sélection des fonctionnalités à activer ou désactiver durant la période d’évaluation

L’état actuel de la licence de votre application est stocké dans les propriétés de la classe LicenseInformation. D’une manière 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 développez ces fonctionnalités, assurez-vous de pouvoir les implémenter de telle manière qu’elles fonctionnent avec tous les états de la licence.

Décidez également comment vous voulez gérer les modifications apportées à la licence de l’application lorsque celle-ci est en cours d’exécution. La version d’évaluation de votre application peut être entièrement fonctionnelle, mais comporter des bandeaux publicitaires intégrés à l’application, contrairement à la version payante. La version d’évaluation de votre application peut également être privée de certaines fonctionnalités ou afficher régulièrement des messages demandant à l’utilisateur de l’acheter.

Pensez au type d’application que vous développez et demandez-vous quelle est la meilleure stratégie d’évaluation ou d’expiration. Pour la version d’évaluation d’un jeu, une bonne stratégie est de limiter le contenu du jeu auquel un utilisateur peut avoir accès. Dans le cas de la 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 qui ne sont pas des jeux, la définition d’une date d’expiration est une bonne méthode, car cela permet aux utilisateurs d’avoir une idée correcte de l’application complète. Voici quelques scénarios d’expiration classiques et comment les gérer.

  • La licence d’évaluation expire tandis que l’application est en cours d’exécution.

    Si la version d’évaluation expire tandis que votre application est en cours d’exécution, cette dernière peut :

    • Ne rien faire.
    • Afficher un message à l’attention de votre client.
    • C’est presque ça.
    • Inviter votre client à acheter l’application.

    La pratique recommandée est d’afficher un message invitant l’utilisateur à acheter l’application, et si c’est le cas, de poursuivre l’exécution avec toutes les fonctionnalités activées. Sinon, fermez l’application ou redemandez régulièrement à l’utilisateur s’il souhaite acheter l’application.

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

    Si la version d’évaluation expire avant que l’utilisateur ne lance l’application, cette dernière ne démarre pas. Au lieu de cela, une boîte de dialogue s’affiche pour donner à l’utilisateur la possibilité d’acheter votre application dans le Windows Store.

  • Le client achète l’application tandis que celle-ci est en cours d’exécution.

    Si le client achète votre application tandis que celle-ci est en cours d’exécution, voici quelques actions possibles.

    • Ne rien faire et continuer en mode d’évaluation jusqu’au redémarrage de l’application.
    • Les remercier de leur achat ou afficher un message.
    • Activer de manière silencieuse les fonctionnalités qui sont disponibles avec une licence complète (ou désactiver les notifications réservées à la version d’évaluation).

Si vous voulez détecter la modification de la licence et exécuter une action quelconque dans votre application, vous devez ajouter un gestionnaire d’événements, comme décrit à l’étape suivante.

Étape 2 : Initialisation des informations de licence

Lors de l’initialisation de votre application, recherchez l’objet LicenseInformation de votre application, comme indiqué dans cet exemple. Nous supposons que licenseInformation est une variable globale ou un champ global de type LicenseInformation.

Pour le moment, vous obtenez des informations de licence simulées, en utilisant CurrentAppSimulator à la place de CurrentApp. Avant de soumettre la version finale de votre application au Windows Store, vous devez remplacer tous les références CurrentAppSimulator par des références CurrentApp dans votre code.

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 en cas de modification de la licence lorsque l’application est en cours d’exécution. La licence de l’application peut notamment changer si la période d’évaluation arrive à expiration ou si le client achète l’application dans un Windows Store.

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 des blocs conditionnels

Lorsque l’événement de changement de licence est déclenché, votre application doit appeler l’API de licence pour déterminer si l’état de la version d’évaluation a changé. Le code de cette étape indique comment structurer votre gestionnaire pour cet événement. À ce stade, si un utilisateur a acheté l’application, il est de bonne pratique de lui indiquer que l’état de sa licence a été modifié. Demandez à l’utilisateur de redémarrer l’application si vous avez conçu votre application ainsi. Rendez cependant cette transition aussi simple que possible.

Cet exemple montre comment évaluer l’état de la licence d’une application pour activer ou désactiver une fonctionnalité particulière de votre application.

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 de la version d’évaluation d’une application

Ajoutez le code permettant de déterminer la date d’expiration de la version d’évaluation de l’application.

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

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 : Test des fonctionnalités à l’aide d’appels simulés à l’API de la licence

Maintenant, testez votre application à l’aide des 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\nom>_<package\LocalState\Microsoft\Windows Store\ApiData. Vous pouvez modifier les dates d’expiration simulées de votre application et de ses fonctionnalités dans le fichier WindowsStoreProxy.xml. Testez l’ensemble de vos configurations d’expiration et de licence possibles, afin de vous assurer que tout fonctionne comme vous le souhaitez. 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 lors de l’installation ou de l’exécution. Si vous essayez d’accéder à la propriété CurrentAppSimulator.LicenseInformation mais que le fichier WindowsStoreProxy.xml n’est pas présent à cet emplacement, une erreur se produit.

Étape 6 : Remplacement des méthodes d’API de licence simulées par l’API réelle

Après avoir testé votre application à l’aide du serveur de licences simulées et avant d’envoyer votre application à un Windows Store à des fins de 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, sinon elle échoue à la certification.

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 : Description du fonctionnement de la version d’évaluation à vos clients

Prenez soin d’expliquer à vos clients comment votre application se comportera pendant et après la période d’évaluation gratuite afin qu’ils ne soient pas surpris.

Pour plus d’informations sur la description de votre application, voir Créer des descriptions d’application.