Rate My app : notez mon application universelle

Les notes et les commentaires de vos applications sont la clé de la réussite.

Plus vous avez de bonnes notes, et plus vous avez de téléchargements, plus vous avez de téléchargements et plus vous gagnez d’argents…
Donc il ne faut pas sous-estimer les notations des utilisateurs.

Je vous propose ici, d’ajouter un rappel à l’utilisateur pour qu’il note votre application universelle (Windows 8.1 et Windows Phone 8.1 WinRT).

Pour les applications Windows Phone 8 Silverlight, il était facile d’ajouter ce type de rappel, Nokia nous avait concocté une solution clé en main : “RateMyApp” (http:\\developer.nokia.com).

Mais pour les applications Universelles, rien de disponible, il faut donc se créer un composant sois-même. Mais rassurez vous, rien de difficile !

Création

Tout d’abord, on va créer une classe qui va s’occuper de créer ce rappel sous forme de popup.
On va appeler cette classe “RateMyAppHelper”.

namespace MyApp.Utils
{
    public class RateMyAppHelper
    {

    }
}

“LA” méthode

Puis on va créer une méthode qui, quand on l’appellera, vérifiera si l’on doit afficher la popup de demande pour noter l’application, et si oui, l’affichera.
Trêve de bavardage, voici la fameuse méthode, je l’expliquerai après.

public static async void launchReview()
{
    int review = StorageHelper.GetSetting("nbLaunchApp", -1);

    if (review == -1)
    {
        // C'est la première fois, on initialise les valeurs
        StorageHelper.StoreSetting("nbLaunchApp", 1, true);
        StorageHelper.StoreSetting("isRated", false, true);
    }
    else
    {
        review = StorageHelper.GetSetting("nbLaunchApp");
        bool check = StorageHelper.GetSetting("isRated");

        review++;

        // Afficher la popup de demande de note quand l'application s'est lancée 4, 7 et 10 fois.
        if ((review == 4 || review == 7 || review % 10 == 0) && check == false)
        {
            MessageDialog md = new MessageDialog("Donner votre avis et noter cette application nous aide à l'améliorer. Voulez-vous la noter?", "Noter Mon Application");
            bool? result = null;
            md.Commands.Add(
                new UICommand("Oui", new UICommandInvokedHandler((cmd) => result = true)));
            md.Commands.Add(
                new UICommand("Annuler", new UICommandInvokedHandler((cmd) => result = false)));

            await md.ShowAsync();
            if (result == true)
            {
                StorageHelper.StoreSetting("isRated", true, true);
                #if WINDOWS_PHONE_APP
                await Windows.System.Launcher.LaunchUriAsync(new Uri(WindowsPhoneAppUri));
                #endif
                #if WINDOWS_APP
                await Windows.System.Launcher.LaunchUriAsync(new Uri(WindowsAppUri));
                #endif
            }
        }
        StorageHelper.StoreSetting("nbLaunchApp", review, true);
    }
}

Dans cette méthode on a donc les éléments suivants :

L’initialisation des compteurs

int review = StorageHelper.GetSetting("nbLaunchApp", -1);

if (review == -1)
{
    // If first time, init values
    StorageHelper.StoreSetting("nbLaunchApp", 1, true);
    StorageHelper.StoreSetting("isRated", false, true);
}

Ici j’utilise la classe “StorageHelper” pour m’aider à gérer le stockage des paramètres en local.
Pour plus d’informations sur cette classe, je vous invite à aller voir cet article :

Je vérifie donc ici que le paramètre “nbLaunchApp” n’existe pas en  local (LocalSettings), et dans ce cas la je crée les 2 paramètres suivants :

  • “nbLaunchApp” : ce compteur va nous permettre de savoir combien de fois l’application a été lancée.
  • “isRated” : cette variable indiquera si l’utilisateur a déjà noté l’application.

Vérifications

review = StorageHelper.GetSetting("nbLaunchApp");
bool check = StorageHelper.GetSetting("isRated");

review++;

if ((review == 4 || review == 7 || review % 10 == 0) && check == false)
{
}

Les lignes précédentes vérifient que l’utilisateur n’a pas déjà noté l’application : “isRated=true”, et si ce n’est pas le cas, affichera la popup de notation au 4, 7 et 10ème lancement de l’application.

L’affichage de la popup

MessageDialog md = new MessageDialog("Donner votre avis et noter cette application nous aide à l'améliorer. Voulez-vous la noter?", "Noter Mon Application");
bool? result = null;
md.Commands.Add(
    new UICommand("Oui", new UICommandInvokedHandler((cmd) => result = true)));
md.Commands.Add(
    new UICommand("Annuler", new UICommandInvokedHandler((cmd) => result = false)));

await md.ShowAsync();
if (result == true)
{
    StorageHelper.StoreSetting("isRated", true, true);
    #if WINDOWS_PHONE_APP
    await Windows.System.Launcher.LaunchUriAsync(new Uri(WindowsPhoneAppUri));
    #endif
    #if WINDOWS_APP
    await Windows.System.Launcher.LaunchUriAsync(new Uri(WindowsAppUri));
    #endif
}

Pour lancer cette fameuse “popup” (qui n’en est pas vraiment une), on fait appel au composant “MessageDialog” qui permet d’afficher ce type de message aussi bien sur Windows Phone que sur Windows pour les applications universelles.
A l’ouverture de la popup on laisse alors l’utilisateur choisir s’il veut (OUI) ou non (Annuler) noter l’application.
Et si oui, on lance alors le chargement de la page de notation de l’application à l’aide de la commande suivante :

await Windows.System.Launcher.LaunchUriAsync(new Uri(myAppUri));

Pour les applications Windows Phone 8.1, la variable “WindowsPhoneAppUri” correspond à ceci :

  • ms-windows-store:reviewapp?appid=<appId> : avec appId que vous pouvez retrouver sur le détail de votre app sur dev.windowsphone.com.

Pour les applications Windows 8.1, la variable “WindowsAppUri” correspond à cela:

  • ms-windows-store:REVIEW?PFN=<packageName> : avec packageName correspondant au nom du package de l’application. Vous pouvez retrouver cet élément dans le fichier “package.appxmanifest” de votre projet, onglet “packaging”.

L’appel de la popup

Il ne reste plus qu’a appeler cette popup pour l’afficher à l’écran.
Comme la méthode “launchReview” est “static”, cela nous permet de l’appeler n’importe où sans avoir à instancier la class “RateMyAppHelper”.

Il vous suffit donc de faire l’appel suivant et le tour est joué:

RateMyAppHelper.launchReview();

Attention, il n’est toute fois pas possible d’appeler cette méthode dans le constructeur de votre “Main”. La popup ayant besoin de s’exécuter sur le thread UI qui n’est alors pas encore disponible.

Et voilà, c’était tout simple finalement !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Prouve moi que tu es bien humain ->