Vérifier la version de son application Windows Phone (en complément de l’article de Julien Dollon)

Il peut être intéressant pour vos applications Windows Phone d’être capable de détecter si une nouvelle version est disponible sur le marketplace.
En effet l’icone du Marketplace indiquant que de nouvelles mises à jours sont disponibles n’est visible que lorsqu’elle est accrochée à la page d’accueil.
Il est alors très facile de passer à coté d’une mise à jour de votre application pourtant essentielle à son bon fonctionnement.

Julien Dollon a écrit un excellent article sur le sujet dont je vous conseille vivement la lecture.

http://julien.dollon.net/post/WP7-Prevenir-vos-utilisateurs-de28099une-nouvelle-version.aspx

Dans l’article, Julien donne l’adresse d’une l’url pointant vers son serveur et qui permet de vérifier si votre appli est bien à jour.
l’url prend en paramètre le pays et l’id de l’application.

Afin d’avoir une connexion plus direct, on va appeler l’url du MarketPlace au lieu de passer par le serveur de Julien.
Cela nous permettra d’être plus indépendant et l’accès sera légérement plus rapide.

L’url a appeler est la suivante pour l’application PurpleCherry du marketplace Français :

http://catalog.zune.net/v3.2/fr-FR/apps/97ce48a0-2241-456f-b4ef-da74d60ddeb9/?version=latest&clientType=WinMobile%207.1&store=Zest

Deux paramètres sont importants :

- L’id de l’application
- Le pays du marketplace

L’id de l’application est généré lors de la certification du Marketplace.
On ne peut donc pas le connaitre lors de la première certification.
Il est tout de même possible de le connaitre lors de sa mise en place pour la certification dans l’apphub (merci Rudy pour l’info).
Il est également stocké dans le fichier WMAppManifest.xml dans l’attribut ProductId du tag App.
On peut donc le récupérer facilement en utilisant une classe XDocument.
Je vous laisse consulter le code du helper pour plus d’information sur le sujet.

Note : Il y a déjà un ProductId dans le tag App lorsque vous créer une nouvelle application Windows Phone. Il sera écrasé par un Id definitif lors du processus de certification.

Obtenir le pays du marketplace est en revanche plus problématique car bien que l’on puisse récupérer facilement la langue utilisée par le télephone, le pays utilisé par le marketplace est lié au téléphone (merci de nouveau Rudy). Il est donc préférable de fixer un pays par défaut qui sera prise en compte par notre application. Dans le helper celui est fixé à « en-US » mais rien n’empeche de le changer en « fr-FR ».

Une fois notre Url complete on va pouvoir l’appeler à l’aide d’un WebClient.
Si tout se passe bien il devrait nous renvoyer un fichier XML (type flux RSS Atom) contenant l’information que l’on recherche : le numéro de version.
On va parser de nouveau avec un XDocument pour obtenir le contenue du tag version.

Pour savoir si le marketplace dispose d’une nouvelle version, il faudra comparer la version du MarketPlace à celle de l’application.
Il y a plusieurs façons d’obtenir le numéro de version de l’application (car il ya plusieurs endroits ou elle est stockée). Julien suggère d’utiliser celui de l’assembly, pour ma part je préfère utiliser l’attribut version du tag App du fichier WMAppManifest.xml (à coté de ProductId donc).

à partir de ces informations j’ai généré un helper de version assez solide :

VersionHelper.CheckForNewVersion(
    (args) =>
    {
        // pas d'erreur
        if (args.Error != null)
            return;

        // Une nouvelle version est détectée
        if (args.IsNewVersionDetected == true)
        {
            // Envoyé vers le detail de l'application sur le marketplace ?
            if( MessageBox.Show("Voulez-vous mettre à jour cette application ?", string.Format("Version {0} disponible !", args.NewVersion), MessageBoxButton.OKCancel) ==  MessageBoxResult.OK )
            {
                VersionHelper.ShowMarketplaceDetail();
            }
        }
    }
);

Les paramètres de pays (« en-US » par défaut), d’ancienne version et d’id de produit peuvent être fournis à la méthode si vous préférez gérer ces informations par vous même.
Le Helper vous permet de récupérer également le ProductId et la Version par le biais des propriétés du même nom.

Vous pouvez télécharger le Helper ici !
es
VersionHelper.cs

PS : Grand merci à Rudy Huyn pour les remarques constructives fournit sur cet article.

Tags: , , ,
Posted in Silverlight WP7 by Samuel Blanchard. 5 Comments

Participation au concours du site du Zéro !

Le site du Zéro en partenariat avec Microsoft lance un concours de développement sur Windows Phone avec des lots des plus alléchants :
Une table surface pour le premier, un voyage en Australie pour le 2nd et une XBOX pour le 3em avec une centaine de Nokia Lumia 800 pour les suivants.

Le concours se divise en plusieurs catégories :

  • Application RSS
  • Application Géolocalisation
  • Application OData
  • Application Sociale (connectée à un réseau social type Facebook, Twitter, etc.)



Les catégories sont nombreuses et ne brident pas la créativité.
Dépechêchez vous si vous voulez vous participer car les inscriptions sont ouvertes jusqu’au 9 mai (demain) !
Les applications doivent être impérativement être positionné sur le marketplace entre le 4 avril et le 16 mai.

Pour s’inscrire ou avoir plus de précision sur ce concours, rendez-vous sur ce lien :
http://www.siteduzero.com/concours-654-172-p1-concours-applications-windows-phone.html

Pour ma part je presente deux applications :

« Let’s Walk ! »

« Friend Roulette »

Je vous laisse découvrir le descriptif de mes apps sur cette page :
http://www.siteduzero.com/forum-83-762281-p1-participation-de-sam-blanchard.html

Le concours sera sans doute d’un bon niveau vu les quelques contributions que j’ai pu déjà voir !

Posted in Silverlight by Samuel Blanchard. No Comments

Accéder à WordPress depuis Windows Phone ! (Part I)

WordPress a réussi à s’imposer comme un standard du blog ce qui lui permet d’héberger facilement votre blog personnel ou des sites tendances. Il pourrait être intéressant d’accéder à ces blogs sur notre Windows Phone afin de les porter aux couleurs de Métro ;) Qu’en pensez vous ?

Cet article sera divisé en 2 parties : La récupération du SDK WordPress et l’ouverture de WordPress à RPC puis l’utilisation du SDK dans une application Windows Phone.


Installation du SDK WordPress



Rendez-vous sur cette page afin de télécharger le SDK de WordPress :

http://windowsphone.wordpress.org/

Cette page propose de télécharger l’application officielle de WordPress mais aussi, heureusement pour nous, de télécharger également son code.

Celui ci est récupérable à partir d’un client Subversion. Personnellement, J’utilise le client Tortoise SVN que vous pouver installer à partir de l’adresse suivante :

http://tortoisesvn.net/downloads.html

Pour pouvoir récupérer le code qui nous intéresse on crée un répertoire (par exemple sur le bureau) puis dans ce répertoire on clique gauche pour effectuer un « SVN Checkout ».

L’adresse du Repository est la suivante : https://windowsphone.svn.wordpress.org/ (ATTENTION au https !).
Vous n’avez qu’a appuyer sur OK pour lancer le téléchargement.

Si tous c’est bien passé, Un dossier « windowsphone.svn.wordpress.org » vient d’être crée.
Ce qui nous intéresse plus précisement est le dossier windowsphone.svn.wordpress.org/WP7/WordPress.Model puisqu’il contient l’ensemble des méthodes permettant d’accéder à WordPress.

On va donc lancer la solution de l’application windowsphone.svn.wordpress.org/WP7/WordPress.sln puis la compiler avec VisualStudio.
Pour ma part la solution ne compile pas car il manque une dll de Toolkit dans l’application WordPress. Mais cela n’a pas vraiment d’importance puisque c’est le projet WordPress.Model qui nous interesse.

On va donc le compiler lui et lui seul. click droit sur le projet pour effectuer une Build de l’application en mode Release puis ouverture du dossier projet dans l’explorateur Windows sont nécessaire pour pouvoir récupérer la DLL dans le répertoire bin\Release du dossier exploré.

Nous intégrerons cette DLL dans notre future projet WordPress !
Notons que notre DLL n’est compatible qu’avec les WordPress de version 2.9 et supérieur.


Communiquer avec WordPress


WordPress utilise la communication avec d’autre application à travers le protocole XML-RPC.
Des applications bien connues comme par exemple Live Writer une application d’écriture de billet de la suite Live de Microsoft utilise ce protocole.
RPC nous permettra de créer, modifier, lire ou détruire des posts et gérer les commentaires de ceux-ci.

Pratique certes mais cela nécessitera une petite configuration coté WordPress.
Si vous n’êtes pas titulaire du Blog, vous devriez contacter les créateur du blog afin d’obtenir les informations décrites ci-dessous.


Configurer WordPress



Pour pouvoir communiquer avec WordPress il va nous falloir deux choses :

+ Une autorisation d’accéder à WordPress via XML-RPC
+ Un utilsateur ayant des droits en rapport avec les actions à réaliser (lecture/ecriture de posts)


Activez XML-RPC



Si votre blog est hébergé sur WordPress.com, ce protocole est activé par défaut.
En revanche, si votre blog est hébergé par vos propres moyens, suivez la demarche suivante :

Coté Administration, dans le DashBoard cliquez sur le menu Settings puis « writing » et cochez « Enable the WordPress, Movable Type, MetaWeblog and Blogger XML-RPC publishing protocols ».


Un utilisateur pour se connecter



Maintenant que wordpress accepte les connexions externes, il nous manque juste un utilisateur capable de se connecter.

votre application peu nécessiter l’utilisation d’un login et password du blog à rentrer en tant que paramètre.
Vous pourrez donc vous connecter directement.

Si ce n’est pas le cas il vous faudra créer un utilisateur par défaut capable d’accéder à votre application.

Ce n’est pas une bonne idée que cet utilisateur soit l’administrateur du Blog car ses droits sont souvent trop élevé au regard d’une application de lecture de post par exemple. On va donc lui ajouter un nouvel utilisateur.

Si vous hébergez votre wordpress, c’est très simple. Coté Administration, allez dans le menu Utiisateurs puis « Ajouter ». Remplissez le formulaire en lui indiquant un rôle. On verra la signifaction des rôles dans le paragraphes suivant.

Si votre blog est hébergé par WordPress.com, c’est un peu plus compliqué puisque vous ne pouvez ajouter que des utilisateurs possédant déjà un autre blog. Il va donc falloir créer un blog bidon pour pouvoir bénéficier de cet utilisateur.


Des droits pour notre utilisateur



Maintenant que nous avons un utilisateurs, il nous reste à choisir le rôle qu’il devra tenir dans notre applications qui déterminera les possibilités qui lui sont offertes.

Cinq rôles existent dans WordPress :

- Administrator : accès complet au blog.
- Editor : Edition, publication et destruction de tous les posts et pages. Modération des commentaires. Upload de fichiers et d’images.
- Author : Edition, publication et destruction de ses posts. Upload de fichier et d’images.
- Contributor : Comme l’auteur mais la publication doit passer par un administrateur.
- Follower : Lecteur des posts et écriture de commentaires (je n’ai pas vérifié cette partie).

Selon le type de votre applications choisissez le rôle adéquate (en évitant de préférence les rôle d’administrateur, voir d’éditeur).
Pour une application d’écriture de posts vous pouvez utiliser le rôle Author.
En revanche pour un lecteur de posts, le rôle Follower devrait suffire.

Pour plus d’info sur les rôles : http://en.support.wordpress.com/user-roles/


Conclusion



Dans la deuxième partie nous verrons comment developper avec la librairie et notre WordPress fraîchement configuré !

Tags: ,
Posted in Silverlight WP7 by Samuel Blanchard. No Comments

Ajouter une SystemTray dans une app Silverlight+XNA pour WP

J’ai développé ces derniers temps plusieurs projets utilisant Silverlight+XNA.

L’utilisation d’un écran XNA au sein d’une application Silverlight est, pour certain projet, un véritable plus puisqu’elle permet d’allier la puissance graphique de XNA avec la simplicité d’utilisation de Silverlight notamment dans la gestion de contrôles complexes nécessaire aux paramètres de l’application.

Ma dernière réalisation nécessitait, dans ce contexte, l’utilisation de la SystemTray, c’est à dire l’affichage de la barre contenant la charge de la batterie et d’autres informations comme la qualité de la liaison par exemple.

Une SystemTray sur notre écran XNA

J’ai donc ajouté dans la page XAML chargée d’accueillir l’écran XNA la propriété SystemTray.IsVisible :

<phone:PhoneApplicationPage
    ...

    shell:SystemTray.IsVisible="True"
    >

    <!--No XAML content is required as the page is rendered entirely with the XNA Framework-->

</phone:PhoneApplicationPage>

Malheureusement dès que l’écran XNA est lancé on constate un bug étrange.

La barre SystemTray apparait convenablement mais des bords de 20 pixels ont été ajoutés de chaque coté de l’écran.
De plus l’ecran est rétaillé en 460×768 au lieu des 480×800 attendu (32 pixels se decalant normalement vers le bas) ce qui donne un effet de flou à notre écran assez déplaisant.

L’Opacité à la rescousse

Afin de contrer ce drôle d’effet de bord et récupérer ces pixels perdues, on rajoute une opacité à notre SystemTray.

Si vous voulez que le fond de la barre soit visible une valeur de 0.99 est requise sinon une valeur à 0 permettra une intégration plus poussée (car pas de fond).
Dans tous les cas il faudra prévoir que les 32 pixels de votre écran XNA ne seront pas visibles car il n’y a pas de décalage de l’écran due à l’opacité de la barre différente de 1.

>
<phone:PhoneApplicationPage
    ...

    shell:SystemTray.Opacity="0.99"
    shell:SystemTray.IsVisible="True"
    >

    <!--No XAML content is required as the page is rendered entirely with the XNA Framework-->

</phone:PhoneApplicationPage>

On récupère finalement notre écran XNA aux bonnes dimensions sans l’effet de flou.
Il est possible qu’un effet similaire soit observable sur les applications XNA « pures » mais je n’ai pas vérifié.



Tags: , , , , , , ,
Posted in Silverlight WP7 by Samuel Blanchard. 1 Comment

Url d’application Windows Phone dans le marketplace et récupération des commentaires

Une fois que votre application vient de passer la certification de l’AppHub et qu’elle est publiée, il peut être souhaitable de promouvoir la page du marketplace qui nous est attribuée.

Mais pour cela on doit connaitre l’url de cett page. Celle-ci est facilement constituable mais nécessite l’id de votre application.

:


Obtenir l’identifiant de votre application



ATTENTION, ce n’est pas l’id que l’on peut trouver dans le fichier WMAppManifest.xaml de votre projet d’application comme on pourrait le penser de prime abord. En effet le processus de certification du marketplace regénére cet id avant la publication de l’application.

Alors comment le trouver ?

Rendons-nous, tout d’abord, dans l’AppHub puis dans la page de votre application (ici Purple Cherry, une de mes applications) et consultons les propriétés de cette page.

La propriété de l’adresse url est constituée de la sorte :

https://windowsphone.create.msdn.com/ApplicationDetails?applicationId=IdDeNotreApplication&applicationDetailsView=2

Il suffit donc de récupèrer la valeur de la clé applicationId.

Pour PurpleCherry, l’Id est 97ce48a0-2241-456f-b4ef-da74d60ddeb9 comme le montre cette capture :


Les Urls du MarketPlace


Pour constituer notre url de marketplace il ne nous reste plus qu’a constituer l’url comme suit

http://www.windowsphone.com/s?appId=IdDeNotreApplication

soit pour Purple Cherry :

http://www.windowsphone.com/s?appId=97ce48a0-2241-456f-b4ef-da74d60ddeb9

Cette url à la particularité de s’adapter à la localisation de l’utilisateur.

Si je suis français, il me redirigera vers le marketplace Français.

Pratique !

En revanche, si vous désirez cibler un marketplace particulier vous pouvez utiliser cette autres url :

http://​www.windowsphone.com/CodeDuPays/​apps/IdDeNotreApplication

Quelques exemples de code de pays :

en-US : Etats-Unis
fr-FR : France
en-AU : Australie

La page australienne de PurpleCherry :

http://​www.windowsphone.com/en-Au/​apps/97ce48a0-2241-456f-b4ef-da74d60ddeb9

La liste exaustive des codes pays est trouvable ici (il faut regarder le code dans les urls de chaque pays) :

Liste des marketplaces

Rappelons que ces URLs sont disponibles sur le marketplace 24 à 48h après leur publication sur l’AppHub.


Obtenir les commentaires


Afin d’obtenir les commentaires de votre application sur l’ensemble des marketplaces, vous pouvez utiliser cet outil très bien fait.
Pour y accéder il est nécessaire de lui fournir vote id d’application dans les paramètres de son url :

http://wp7reviews.tomverhoeff.com/AppReviews.aspx?id=IdDeNotreApplication

Pour Purple Cherry par exemple :

http://wp7reviews.tomverhoeff.com/AppReviews.aspx?id=97ce48a0-2241-456f-b4ef-da74d60ddeb9

Il est indispensable de consulter ces commentaires régulièrement si vous voulez que votre application s’adapte aux besoins de vos utilisareurs.



Tags: , , ,
Posted in .NET Silverlight WP7 by Samuel Blanchard. 2 Comments