SPF Index du Forum
 Accueil    FAQ    Rechercher
 Connexion

Home -> Logiciels Windows Phone


Conseils pour un dev débutant : version d'évaluation
Estyaah
Posté le: 27/07/2015 08:56

Bonjour à tous !

Je débute dans le développement pour windows/windows phone. Je me suis aidé de App Studio (super outil) pour créer une application, et j'ai ensuite édité le code (principalement xaml) dans visual studio pour l'adapter à ce que je voulais.
Cependant, je suis un peu coincé, dû à mes lacunes en c# (je suis plus dev web / scripting).
Voici ce que je souhaite faire : une version d'évaluation avec de la publicité, et si la personne achète la version complète, la publicité disparait.
Actuellement, mon application fait tout ce que je veux (sur WP8.1 et W8 ) et contient de la publicité.
C'est maintenant que je rentre dans la technique :
pour tester si je suis en mode d'évaluation, j'ai initialisé une "LicenseInformation", puis j'ai créé un élément AdControl ( mon code : AdControl Pub = new AdControl(); )
Ensuite, je fais mon test sur "IsTrial". En fonction de la condition, j'attribue la valeur "Visibility.Visible" ou "Visibility.Collapse" à "Pub.Visibility".
Enfin, dans mon code xaml, j'ai un bloc "<AdControl " dans lequel j'ai ajouté x:Name="Pub".
Mais c'est peut-être pas du tout comme ça que ça devrait se faire ?

En tout cas, le code ne génère pas d'erreur lors du build, mais quelles que soit les conditions, la pub est toujours affichée.

Comme je ne connais pas bien le c#, je fais sans doute une erreur grossière, mais j'avoue que je suis un peu pommé, malgré mes heures passées sur les différentes pages MSDN (pourtant pas mal faites)...

J'espère que j'ai posté ça au bon endroit, car je n'ai pas vraiment trouvé de sujet similaire...

A plus !

Répondre en citant  |   | Revenir en haut de page  | 
Estyaah
Posté le: 28/07/2015 09:44

J'ai réussi à faire ce que je voulais.

Voici la procédure que j'ai effectuée, qui n'est surement pas la meilleure niveau algo, mais qui a le mérite de fonctionner.

Dans la partie spécifique à windows et dans views (ou windows phone et views), il y a tous les xaml, et pour chaque xaml, un .cs associé.
Dans ce .cs, il n'y a pas forcément grand chose (s'il n'y a pas d'action spécifique à faire en c# pour cette page en particulier).
C'est dans la classe associée à une page xaml que l'on va faire appel à la fonction OnNavigatedTo() qui est normalement déjà existante dans le projet.

Code:

using MonApplication;
using Windows.ApplicationModel.Store; // pour la licence
using Windows.UI.Xaml; // pour Visibility
using Windows.UI.Xaml.Navigation; // pour NavigationEventArgs

// déjà présent :
namespace MonApplication
{
    public sealed partial class NomDeLaPage : PageBase
    {
// A partir d'ici j'ajoute mon code :
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            #if DEBUG  // Si on utilise le simulateur, on récupère la licence du fichier WindowsStoreProxy.xml généré dans %userprofile%\\appdata\\local\\packages\\<package-name>\\localstate\\microsoft\\Windows Store\\Apidata\\ qui est à modifier à sa convenance)
            LicenseInformation licenseInformation = CurrentAppSimulator.LicenseInformation;
            #else // si on est en prod, on prend la vrai licence
            LicenseInformation licenseInformation = CurrentApp.LicenseInformation;
            #endif



            if (licenseInformation.IsActive) // toujours vérifier ce point
            {
                if (licenseInformation.IsTrial) // si on est en éval
                {
                    Pub.Visibility = Visibility.Visible;
                }
                else
                {
                    Pub.Visibility = Visibility.Collapsed;
                }
            }
            base.OnNavigatedTo(e);
        }
    }
}

Attention, pour les tests ce code fonctionne pour Windows, mais pour WindowsPhone, CurrentAppSimulator n'est pas pris en charge, donc il faut soit même simuler les valeurs que l'on souhaite :

Code:

...
LicenseInformation licenseInformation = CurrentApp.LicenseInformation;

            var trial = licenseInformation.IsTrial;
#if DEBUG       
            trial = false; // ou true, selon ce que vous voulez tester
#endif
            if (licenseInformation.IsActive)
            {
                if (trial)
                {...


Ensuite, on va dans le fichier xaml. Dans son bloc de pub, cela donne un truc comme ça :
Code:
<UI:AdControl x:Name="Pub" ApplicationId="toto" ...


Voilà... J'ai tellement galéré que je me dit que je ne suis peut-être pas le seul (ou alors je suis vraiment nul...). Donc si un autre nul comme moi se pose la question trouve ce topic, je ne voudrais pas qu'il trouve uniquement un "c'est bon, c'est résolu, merci à plus !" Wink

Répondre en citant  |   | Revenir en haut de page  | 
Christophe
Posté le: 28/07/2015 11:22

Ca me semble propre comme code Smile

A noter que pour les achats InApp tu peux faire la même chose Smile

Répondre en citant  |   | Revenir en haut de page  | 
heurdert
Posté le: 23/09/2015 08:33

J'aurais bien aimé que des gens rebondisse sur ce passage, je ne suis pas pro mais, je vois souvent revenir ce genre d'attitude d'adaptation clientel dans les forums.
Et aussi et surtout, ai-je bien compris ce passage? imaginons que demain un chanteur de renom viennes me demander de faire sa jackette de cd (dans tes rêves petit) , je peux vraiment rien faire au niveau du prix? [url=http://www.etuicoquesamsung.com/category-accessoires-coque-etui-film-chargeur-samsung-galaxy-s6-edge-plus-680.html] housse samsung galaxy s6 edge plus [/url] [url=http://www.etuicoquesamsung.com/category-accessoires-coque-etui-film-chargeur-samsung-galaxy-s6-edge-plus-680.html] coque samsung galaxy s6 edge plus [/url]

Répondre en citant  |   | Revenir en haut de page  | 
Poster un nouveau sujet
Répondre au sujet




Voir le sujet suivant
Voir le sujet précédent

Forum version classique