Pierre's Embedded and Mobile Blog

Soulevons le capot des systèmes embarqués et mobiles

Posts
  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Rapports de downloads et paiement sur le Marketplace

    • 0 Comments

    Développeurs, réjouissez-vous enfin, vous allez pouvoir retrouver les statistiques de téléchargement de votre application sur le Marketplace! C’est le lien “reports” dans votre dashboard Windows Phone

    DownloadReports

    Par ailleurs, il semble que l’équipe en charge du paiement mette les bouchées doubles pour pouvoir payer au plus vite les développeurs méritants, et la nouvelle date annoncée pour les premiers paiements est fin janvier, au lieu de fin février! on vient de gagner un mois!

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Localisez le titre ou le nom de votre application

    • 3 Comments

    Suite à mon premier article sur la localisation, ou plutôt d’une manière générale l’internationalisation d’une application Windows Phone 7, j’ai eu pas mal de retours sur le fait que la méthode qui consiste à utiliser des fichiers de ressources ne marche qu’à l’intérieur de l’application, mais pas pour le titre de l’application en lui-même: celui qui apparait sur le système et éventuellement sur la vignette dynamique qu’on peut accrocher à l’écran d’accueil. Pour ce cas précis, il faut utiliser une autre méthode… plus complexe, qui est détaillée sur cette page MSDN:

    • Créer un projet DLL Win32 qu’on appellera AppResLib.dll
    • Ajouter dans les ressources une table de chaines de caractères qui ne contient que le titre de l’application et le titre à afficher sur la vignette dynamique
    • Builder la DLL et renommer le résultat en AppResLib.dll.xxxx.mui avec xxxx qui peut être 0409 pour en-US, 040c pour fr-Fr, 0407 de-DE, 0410 pour it-IT, 0809 pour en-UK et 0c0a pour sp-SP.
    • La rebuilder et la renommer (en oubliant pas de changer les chaines de caractères) pour chaque langue qu’on vise
    • Déplacer tous les fichiers renommés dans le répertoire du projet Windows Phone 7 et les inclure en tant que “Content” dans le projet
    • Modifier le fichier WMAppManifest.xml pour utiliser ces chaines de caractères de la DLL.

    Le processus détaillé sur MSDN

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Slides et codes d'exemple de l'Après-Midi du Développement du 3/12/2010

    • 3 Comments

    Et voila à peine le temps de le préparer qu’il est déjà passé cet après-midi du développement sur le thème de “la dissection du SDK Windows Phone 7”. On aura parlé des API, hardware et software, du tombstoning et des notifications en push, de Metro, analyse de performances et une fin sur Marketplace, et notamment ses règles. Merci à tous les présents! Merci également à Julien et Simon qui ont animé avec moi ces 4 heures de présentations particulièrement denses.

    En attendant le webcast, voici déjà les slides et les codes d’exemple que j’ai montré:

     

    Ou bien tout simplement le lien vers le dossier Skydrive contenant la totale:

    Encore un grand merci à tous, et rendez-vous dès le 15/12, toujours au campus, pour un après-midi du développement sur l’asynchronisme!

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Inscription sur Marketplace: les ressources pour s'en sortir dans toutes les situations

    • 12 Comments

    Ca maintenant quelques semaines qu’on peut s’inscrire et publier des applications sur Marketplace. Seulement voila, le processus d’inscription, dépendant de vos comptes existants sur d’autres plateformes Microsoft, peut s’avérer… complexe. Sans compter la validation d’identité par Geotrust, dont on reparle un peu plus bas, ou les formulaires pour être éligible au paiement.

    Aujourd’hui l’idée de Microsoft est d’unifier les comptes développeurs à travers un seul portail, l’App-Hub: ainsi, qu’on soit développeur XBox ou Windows Phone, un seul compte, un seul endroit pour gérer tout son portefeuille d’applications. Ce qui fait du sens vu qu’avec XNA Game Studio 4.0 il devient très facile de faire des jeux multi-plateformes.

    Donc avant toute chose… connaitre les pages de ressources du portail Microsoft:

    Parce que des fois, il suffit de lire la doc… Smile

    Ensuite, https://billing.microsoft.com/ est le site qui unifie les paiements que vous faites avec votre live id: il est donc important que les informations (personnelles, professionnelles, de facturation) qui y sont enregistrées soient valides et valables! Je vous recommande de passer par là dès le départ pour mettre les choses en ordre.

    Enfin, sachez que votre identité est vérifiée par Geotrust, une entité indépendante de Microsoft, et que Geotrust est censé, après votre inscription, vous envoyer un email relatant comment vérifier cette identité (cela consiste la plupart du temps à envoyer un simple scan de pièce d’identité). Pour les entreprises, si vous avez rempli le champ “approver” lors de votre inscription, l’approver en question recevra un email lui demandant de valider que vous avez le droit de poster des applications: cela permet à plusieurs collègues d’accéder au compte Marketplace de la société avec leur live id individuel par exemple. Ces emails sont automatisés… et peuvent donc arriver dans votre filtre antispam !! si vous ne recevez pas de contacts de la part de Geotrust parce que vous n’avez pas la main sur ce filtre antispam par exemple, ce n’est pas grave, vous pouvez toujours les contacter en direct:

    GeoTrust Customer Support
    http://www.geotrust.com/support
    Hours of Operation: Mon - Fri 05:00 - 17:00 (PST)
    Email:     cs-orders@geotrust.com
    Web:       http://www.geotrust.com
    Phone:     1-866-436-8787 or 1-678-366-8399 option 2
    Live Chat: http://www.geotrust.com/support

    Je ne peux que recommander leur Live Chat qui est extrêmement réactif.

    Pour info, certains développeurs ont trouvés une feinte pour se faire valider le compte plus vite: soumettre une application bidon qui oblige Geotrust à vous passer en mode “haute priorité”… je ne recommande pas cette méthode, qui surcharge évidemment l’équipe certification, qui a déjà fort à faire!

    Ensuite, vient le temps des formulaires à remplir pour se rendre éligible au paiement. (Avant toute chose.. sachez que je ne suis pas juriste… j’aide comme je peux…)

    Le formulaire W8-BEN est le seul absolument nécessaire pour se faire payer: il est à renvoyer à Microsoft. Vous pouvez le retrouver directement sur l’App-Hub dans la section “payee details” de votre compte.

    Maintenant, vous pouvez aller plus loin en demandant à être exempté du prélèvement à la source de l’impôt américain (c’est quand même 30%…). Pour cela il faut un numéro ITIN ou un EID, qui s’obtient auprès de l’IRS (l’institut qui gère les impôts américains). Pour obtenir ce numéro… il faut remplir un formulaire W-7, et pour justifier cette demande, utiliser la lettre de justification de Microsoft que vous pouvez générer directement depuis l’App-Hub. L’obtention de ce numéro ITIN permet de certifier que vous vous comportez correctement vis à vis de la loi Américaine, et de la loi de votre pays, et est sujette aux accords entre l’organisation des impôts de votre pays, et de l’IRS.

    On reprend:

    • Demander la lettre de justification de Microsoft
    • Remplir le formulaire W7 de l’IRS pour obtenir un numéro ITIN ou un EID
    • Remplir le formulaire W8-BEN en indiquant le numéro ITIN ou EID

    Ca peut prendre un peu de temps, et ça peut ressembler à la maison qui rend fou, mais c’est un processus légal et standard auquel n’importe quel citoyen est obligé de se conformer quand on reçoit des revenus depuis les US, indépendamment de Microsoft!! Sachez que vous pouvez retrouver toutes ces informations directement dans la section “payee details” de votre compte, et que l’IRS a une antenne à l’ambassade américaine qui est joignable par téléphone. A priori, les fiscalistes, comptables, etc sont censés comprendre toutes ces choses… si vous en avez dans votre entourage, faites vous aider!

  • Pierre's Embedded and Mobile Blog

    F# dans Windows Phone 7: templates de projets, et un exemple

    • 1 Comments

    F# est un langage fonctionnel inspiré d’OCaml qui s’intègre dans la CLR et a la bonne idée, en étant fonctionnel, d’intégrer quand même un modèle de programmation objet, et en plus, des concepts de programmation parallèle et asynchrone assez bluffants… Assurément pas un langage mainstream, clairement pas voué à remplacer C# ou VB.NET, mais néanmoins intéressant pour comprendre l’évolution des langages, et dans pas mal de scénarios notamment quand il s’agit de se connecter et de traiter “naturellement” des sources de données. Si vous trouvez que LINQ c’est cool (c’est une syntaxe fonctionnelle intégrée à C#) vous allez kiffer F#… Pour en comprendre rapidement l’élégance je vous invite à regarder cette petite vidéo de Don Syme (qui en plus d’être un génie et Principal Researcher chez Microsoft Research est très pédagogue) ou pour aller tout de suite dans le coeur technique, sa session au TechEd. Autant vous prévenir, si vous êtes adapté à la programmation objet… ça peut piquer un peu. En tous cas moi ça pique encore…

    Maintenant admettons que vous voulez découvrir ce langage, voire que vous êtes déjà devenu fan de F#, et que vous voudriez en faire usage sur votre téléphone préféré: Il suffit d’utiliser les templates disponibles sur l’online gallery dans Visual Studio 2010.

    Pour cela, dans le wizard de création de nouveau projet (File –> New –> Project) il faut cliquer sur “Online Templates” puis faire une recherche sur F#… et vous obtenez ça:

    fsharp_wp7

    Lorsque vous cliquez sor OK vous obtenez la solution suivante:

    FsharpWP7Solution

    Le code F# se trouve dans le fichier “AppLogic.fs”. Comme vous pouvez le voir, l’application elle même a été séparée en 2 parties: le “host” n’est là que pour charger le code de l’appli elle même: le code C# ne fait qu’instancier un nouvel objet “App” qui est déclaré dans le code F# (le contexte de l’application, qui va lui-même charger la page principale).

    On peut voir dans le template comment se fait l’initialisation de cette page principale: c’est pour le moins rustique… on crée la page principale à partir du XAML, et ensuite on instancie directement les objets à afficher:

    do Application.LoadComponent(this, new System.Uri("/WindowsPhoneApp;component/MainPage.xaml", System.UriKind.Relative))
    
    // Bind named Xaml components relevant to this page.
    let appBarButton1 : ApplicationBarIconButton = this.ApplicationBar.Buttons.[0] |> unbox 
    let appBarButton2 : ApplicationBarIconButton = this.ApplicationBar.Buttons.[1] |> unbox  
    let results : TextBlock = this?Results
    
    // Set the behaviour of the buttons
    do appBarButton1.Click.Add(fun _ -> results.Text <- "Yes, I'm F#")
    do appBarButton2.Click.Add(fun _ -> results.Text <- "F# rocks!")
    

    A mon humble avis F# n’est pas tant fait pour ça que pour traiter les données qu’on pourrait avoir envie d’afficher dans l’application.. mais ça n’engage que moi. En tous cas ça montre qu’on peut tout faire avec F# Smile

    Reste ensuite à créer votre propre code et trouver la bonne utilisation de F# dans votre application. Si vous avez un traitement mathématique ou de classement/formatage sur des gros sets de données, ça peut être très intéressant, pas tant d’un point de vue performance que d’un point de vue simplicité et lisibilité du code… pour autant que vous pratiquiez régulièrement Smile

    Petit bémol, il se trouve que les helpers asynchrones dispos dans Microsoft.FSharp.Control.WebExtensions ne sont pas implémentés dans la version pour Windows Phone 7.. c’est sûrement temporaire mais c’est bien dommage, car on aurait pu alors simplifier certaines interactions avec des API webs (cf la démo de la plénière des MS Days par Mitsu Furuta (à 1h42m30s pour être précis)

    Pour le plaisir de ne pas fournir qu’un template tout vide, voici un petit générateur de fractale de Mandelbrot en F# pour Windows Phone 7 de mon cru! je pense qu’on peut un peu améliorer le code, je débute encore en F#… j’attends vos suggestions, notamment pour supprimer les mutables dans la boucle de calcul!

    Attention – pour profiter de F# il Visual Studio 2010 Pro et les outils F#!! Plus d’info sur http://www.fsharp.net

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Intégration dans un environnement SBS 2008

    • 0 Comments
    Pierre Chesne vient de publier sur son blog un tutorial complet pour intégrer des smartphones Windows Phone 7 dans vos environnements SBS (les solutions Serveurs de Microsoft pour les TPE/PME)

    La question principalement traitée étant “comment faire passer le certificat du serveur vers mon WP7”, c’est un article qui s’adapte particulièrement bien à d’autres scénarios. sans aucun doute une lecture rapide et enrichissante Smile

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Influencez le parcours Windows Phone 7 aux TechDays!

    • 0 Comments

    Les Techdays reviennent les 8, 9 et 10 février au palais des congrès, avec un joli lot de sessions Windows Phone 7 en prévision!

    Vous sentez vous l’âme d’un speaker? vous pouvez proposer des sessions! Tout est expliqué dans ce post du blog Techdays

    Vous êtes développeurs et vous avez envie qu’on traite spécifiquement certains sujets? Faites le savoir dans les commentaires ou en me contactant à travers ce blog ou sur twitter: @pierreca!

    Et inscrivez-vous à l’évènement !

    PS: je prend aussi les propositions et desiderata pour le parcours Robotique et Systèmes Embarqués!

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Analyse de downloads, d’usage et obfuscation : c’est gratuit avec Runtime Intelligence, et Dotfuscator de PreEmptive Solutions

    • 0 Comments

    Vous voulez savoir combien d’utilisateurs ont téléchargé votre application? comment ils l’utilisent? pourquoi elle crashe inexplicablement quand c’est vos utilisateurs qui l’utilisent, et jamais vous? vous voulez obfusquer votre code et améliorer la protection de votre propriété intellectuelle? C’est maintenant facile et possible gratuitement en utilisant les produits de PreEmptive Solutions: Runtime Intelligence, et le Dotfuscator. Connu depuis longtemps par la communauté, car c’est le seul produit d’ISV externe à Microsoft intégré de base dans Visual Studio, c’est maintenant disponible pour Windows Phone 7!

    Concrètement, comment ça marche? votre code est instrumenté, et les données sont envoyées sur un compte que vous avez créé sur le site de Preemptive Solutions, site sur lequel vous pourrez par ailleurs demander à accéder à l’outil (il faut passer par le formulaire de contact pour l’instant)

    Pour en savoir plus, une petite vidéo de quelques minutes:

    Tutorial d’intégration de Runtime Intelligence et Dotfuscator

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Applications métiers : les toolkits pour combler les lacunes du SDK

    • 0 Comments

     

    Disclaimer! à lire avant : La question qui tue : portabilité des applications métier de Windows Mobile 6.5 vers Windows Phone 7

    Tout professionnel qui développe des applications métier (Line of Business / LOB) pour mobile (quelque soit la plateforme) va chercher dans le SDK Windows Phone 7 un certain nombre de fonctionnalités… comme des outils de synchronisation online/offline, une base de données locale, la possibilité de tourner en background… Pour l’instant le SDK est avant tout orienté pour les applications grand public, ces fonctionnalités ne sont donc pas « de base » dedans. Ceci étant dit, l’ouverture vers Silverlight permet aujourd’hui de ce servir de certains frameworks de la communauté pour développer son application métier.

    Attention !!! la principale question à se poser est tout de même autour du déploiement : aujourd’hui le seul moyen de déploiement possible est marketplace, et c’est un marketplace publique !

    Implémenter complètement le pattern MVVM:

    Synchro Online/Offline : la solution Sync Framework 4

    Base de donnée locale :

    Protéger les données en les cryptant :

    Un exemple d’applications LOB avec webservice wcf, serialization JSON, potentiellement hébergée dans Azure et consommé sur Windows Phone 7, par Rob Tiffany (encore lui!):

    Applications en background :

    Il est aujourd’hui impossible de faire tourner une application tierce sous une autre application tierce – cependant il est quand même possible de les faire tourner sous l’écran de verrouillage ou quand le téléphone est en veille. Voici un article qui détaille comment faire

    Quelles sont les fonctionnalités qui manquent selon vous dans le SDK? Quels toolkits de la communauté utilisez-vous?

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Les outils de développement en Français sont disponibles

    • 8 Comments

    Jusqu’à présent le kit de dev WP7 était dispo uniquement pour la version US de Visual Studio et Expression Blend. Les versions localisées sont enfin disponibles., y compris en Français!!

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Faire persister son application sous l’écran de verrouillage

    • 1 Comments

    Malgré le fait qu’une application ne peut exécuter du code quand elle est en background, Windows Phone 7 autorise une application à tourner sous le lock screen (ou écran de verrouillage). On peut aussi empêcher que le téléphone se verrouille, ce qui peut être utile pour certaines applications (navigation turn by turn, détection de mouvement, ce genre de choses). En fait, avec la logique Windows Phone 7, il s’agit de dire à l’application de ne pas détecter que l’utilisateur est inactif (ou l’application elle même…) d’ou la présence de 2 APIs

    • Microsoft.Windows.Phone.Shell.PhoneApplicationService.ApplicationIdleDetectionMode, qui permet de détecter ou pas l’inactivité du téléphone, et qui quand elle est activée, tombstone l’application quand le lock screen démarre.
    • Microsoft.Windows.Phone.Shell.PhoneApplicationService.UserIdleDetectionMode, qui permet de détecter ou pas l’inactivité de l’utilisateur et donc déclencher le lock screen.

    Du coup on peut avoir 3 comportements:

    • Les deux modes sont “enabled” : l’écran se verrouille au bout d’un certain temps comme prévu dans les paramètres du terminal et l’application est tombstonée
    • ApplicationIdleDetectionMode est “disabled”: l’écran se verrouille quand l’utilisateur est inactif mais l’application continue à tourner (et donc à consommer de la batterie!!!
    • ApplicationIdleDetectionMode et UserIdleDetectionMode  sont “disabled” et dans ce cas l’écran ne se verrouille pas et l’application continue à tourner (et donc à consommer de la batterie!!)

    Plusieurs warnings sont à prendre en compte quand on utilise ces APIs, particulièrement en regard des critères de certification (critère 6.3)

    • Il faut que cette fonctionnalité soit une option configurable dans un écran de l’application
    • Lors du premier appel à cette API, il faut avertir l’utilisateur (explicitement) et lui demander son consentement!

    Par ailleurs le modèle de multithreading et de tombstoning étant susceptible d’évoluer, il faudra vérifier au fur et à mesure des versions du SDK le comportement de son application!!

    Dernier point, une fois que la détection d’inactivité, de l’application ou de l’utilisateur, a été “disabled” il n’est pas possible de la réactiver de façon programmatique: une InvalidOperationException sera levée (à traiter, donc!!).

    La page MSDN qui traite du sujet

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] 10 trucs pour passer facilement la certification

    • 0 Comments

    Avec les premières phases de certifications qui démarrent, et un an de recul sur la certifications des applications pour Windows Mobile 6.5, on se rend compte que finalement, la très grande majorité des échecs sont liés à des fautes d’inattention… ou un manque de lecture de la documentation ! Voici donc les 10 points à avoir toujours en tête lorsqu’on prépare la certification :

    1/ LISEZ LA DOC !!!!! tout est dans la documentation. Prendre une petite demi-heure pour lire et comprendre cette documentation vous sauvera peut-être d’un échec cuisant. Mon conseil : annotez la au fur et à mesure de votre lecture. Assurez vous d’avoir la dernière version du document, qu’on trouve sur le portail http://developer.windowsphone.com. Tout y est détaillé. Lisez la doc. (ou je me fâche !!)

    2/ Soignez l’iconographie. D’abord parce que votre iconographie (icônes et screenshots) représentent votre application sur Marketplace et dans le terminal de vos utilisateurs, mais aussi parce qu’une erreur d’iconographie peut vous coûter votre certification.

    • Cas de test 4.6 : les screenshots doivent provenir d’une capture d’écran du téléphone ou de l’émulateur, doivent avoir une résolution de 480x800 pixels et avoir les proportions largeur/hauteur normales de l’application sur le terminal.
    • Cas de test 4.5 : N’utilisez pas les icônes par défaut de Windows Mobile ou Windows Phone

    - Inclure une image de fond au format « panorama » n’est pas nécessaire, mais permettra à Microsoft le cas échéant de « skinner » Marketplace aux couleurs de votre application, et donc vous mettre à l’honneur. Pourquoi refuser ?

    3/ Informations de support (cas de test 5.6) : votre application doit avoir un nom et un numéro de version, et doit inclure des informations de support (url de site web, email) facilement découvrables par l’utilisateur final

    4/ Notifications de type Toast (cas de test 6.2)

    • Il faut fournir à l’utilisateur la possibilité de désactiver les notifications
    • Au premier usage de l’API HttpNotificationChannel.BindtoShellToast, l’application doit demander explicitement à l’utilisateur l’autorisation de recevoir des notifications.

    5/ Applications continuant leur exécution quand l’écran est verrouillé (cas de test 6.3)

    • Ce cas s’applique uniquement aux applications qui continuent à tourner quand l’écran est verrouillé, et ne s’applique pas aux applications dans l’état « suspended ».
    • Il faudra demander à l’utilisateur explicitement la permission d’avoir ce comportement lors du premier appel à l’API ApplicationIdleDetectionMode

    6/ Utilisation du bouton Back – cas de test 5.2.4 : voici un exemple typique d’échec qui aurait été simple à traiter : appuyer sur le bouton back doit ramener à la page précédente de l’application, pas la quitter (sauf si on est sur la première page) ou faire apparaitre un menu ou une boite de dialogue – le plus simple : gardez le comportement par défaut !!

    7/ Thèmes : cas de test 5.1.1 : Utilisez les ressources associées au thème du téléphone plutôt que de hardcoder les couleurs … et risquer de tomber dans un cas ou l’application n’apparaitra pas correctement quand le thème choisi par l’utilisateur est le thème « light » : Et donc testez aussi dans ce mode là avant de soumettre l’application !

    8/ Support des langues : Faites en sorte que la description et le texte dans l’application et dans la marketplace s’affichent dans le langage choisi par l’utilisateur (histoire d’éviter un menu en allemand pour un utilisateur français, et tant qu’on y est, évitez les traductions automatiques débiles du type « la tasse mondiale » quand on parle de « world cup »…

    9/ Erreur à l’upload du XAP : A l’upload du XAP un outil va vérifier son intégrité – l’erreur la plus commune est « Your XAP is missing an interop manifest » : dans votre manifest, spécifiez bien les paramètres d’interop, car même si votre compte développeur n’utilise pas l’interop (privilège réservé aux opérateurs), le message sera généré.

    10/ Version des developer tools : j’enfonce encore une porte ouverte, mais avant de faire certifier votre application, installez, testez et packagez la avec les outils de dev RTM… les applications faites avec des versions précédentes (CTP et beta, publiques et privées) ne passeront pas !

  • Pierre's Embedded and Mobile Blog

    [La question qui tue] Portabilité des applications métier de Windows Mobile 6.5 vers Windows Phone 7

    • 12 Comments

    “Je suis un pro, j’ai fait le choix de Windows Mobile il y a des années, je vois plein de buzz positif autour de Windows Phone 7 mais il parait que la compatibilité n’est pas assurée… Or j’ai des collaborateurs avec des applications d’entreprise, comment je fais ?”

    Mauvaise nouvelle, il n’y a pas de réponse simple. Ce n'’est pas si grave que ça non plus, parce qu’il y a quand même toujours une réponse :) Chaque cas étant particulier c’est difficile de faire des généralités pertinentes, mais on va essayer quand même de se faire une opinion et de “dégrossir” le terrain. En tous cas, On va lister quelles questions et avec quelles informations appeler votre serviteur pour trancher sur une potentielle migration de Windows Mobile 6.x vers Windows Phone 7.

    L’usage: terminal durci ou pas?

    D’abord si vous faites dans les terminaux durcis… Windows Phone 7 ne devrait pas être dans vos plans. Je ne dis pas que ça n’arrivera jamais (qui sait de quoi le futur est fait…) mais ce n’est pas pour ce type de terminaux que cet OS a été pensé. Windows Phone 7 est avant tout grand public, et l’OS, le SDK, les applications et le mode de déploiement des applications ont été pensées avec le grand public en tête. En plus les spécifications matérielles minimales de Windows Phone 7 sont souvent incompatible avec le milieu durci (écran capacitif obligatoire par exemple).

    Ceci étant dit, il existe tout une population “d’information worker” qui utilisent un terminal grand public pour des taches métiers: commerciaux ou agents de terrain avec une application de CRM, chauffeurs, etc. Sans compter la volonté pour un certain nombre d’entreprises de faire une application “intranet” ou “note de frais”. Toutes ces populations pourraient être concernées par des applications métier sur un smartphone sexy avec Windows Phone 7. Ca vaut vraiment le coup de se poser la question. Ou plutôt les questions, car il n’y en a pas qu’une… et tant qu’à faire autant commencer par la question la plus épineuse: le déploiement de l’application en question sur les terminaux.

    Le déploiement passe obligatoirement par le Marketplace public

    C’est le point sensible. Autant on pourra quasiment toujours contourner une difficulté technique, autant, celle là, ce n’est pas possible. Votre application sera visible par tout le monde. Voire, téléchargeable part tout le monde (à condition d’y mettre le prix que vous fixerez). Ca peut être un showstopper, comme une grande force: après tout, un simple système d’authentification peut vous permettre de protéger votre application tout en garantissant que vous êtes visible sur le Marketplace: prenons un exemple simple: vous avez une application “note de frais” qui est customizable par chaque client: la configuration du client lui est propre et ne doit pas forcément se trouver sur Marketplace. Quelqu’un d’anonyme qui téléchargerait l’application pourrait la voir en mode “restreint” et avoir l’option de vous contacter pour en savoir plus: Marketplace devient alors un vecteur de publicité et de leads. Dans le même genre d’optique, vous pouvez aussi utiliser l’authentification pour débloquer par exemple l’accès à des services spéciaux (internes par exemple) et sans authentification proposer à vos clients une application publique qui pourrait leur servir indépendamment de votre backend.

    Si votre application est faite par l’interne, pour l’interne, le cas est plus délicat: quoiqu’il en soit Microsoft étudie toutes les possibilités pour offrir aux entreprises la possibilité de déployer leur application sans passer par les moyens du grand public et saura revenir, on l’espère le plus vite possible, avec des propositions: dans tous les cas, ce n’est pas encore annoncé, et donc pas encore roadmapé…

    La technologie / Les fonctionnalités

    Une fois l’écueil “publication sur Marketplace” passé, reste à savoir si vous pouvez implémenter votre application sur Windows Phone 7 et combien ça va vous coûter.

    Tout a changé avec Windows Phone 7: l’OS, mais aussi le SDK, et le modèle applicatif. Pour de plus amples informations, je vous conseille l’article Comprendre la plateforme Windows Phone 7 sur MSDN. Du coup, il n’y a pas de compatibilité binaire entre Windows Phone 7 et les versions précédentes de l’OS ou entre le kit de développement Windows Phone 7 et les kits de développement précédents. D’une manière ou d’une autre il faudra réécrire l’application. Toute? Pas forcément… tout dépend de votre technologie de départ et de la modularité de votre code. Si vous avez opté pour le Compact Framework par le passé, alors il y a de fortes chances que vous puissiez réutiliser vos couches métiers, même s’il faudra vraisemblablement revoir la partie réseau. En ce qui concerne la couche de présentation en revanche, elle est à oublier, il faudra tout refaire avec Silverlight. Si vous aviez opté pour des technologies natives (C/C++, Win32, MFC…) alors il faudra tout bonnement tout réécrire.

    Une fois la décision sur la réécriture/portage validée, il faudra s’intéresser aux fonctionnalités du SDK. La bonne nouvelle est qu’il y a 98% de chances qu’il soit possible d’écrire une application iso-fonctionnelle à l’ancienne, même s’il faudra surement utiliser quelques ressources de la communauté, et peut-être un peu de malice. En effet, sans background processing par exemple il faudra peut-être recourir à un service online et des notifications en push pour provoquer des synchronisations de données par exemple . Un autre exemple, s’il y a besoin d’une base de donnée locale, Microsoft n’a pas encore porté SQL CE sur Windows Phone 7, mais SQLite existe déjà dans la communauté. Du coup, il est fort probable que votre application puisse, moyennant un peu d’adaptation, être portée. En revanche, il faut rester honnête, certain scénarios vont être impossible à implémenter pour le moment : par exemple le suivi de véhicule avec une application tournant en background dans le téléphone et uploadant régulièrement sa position GPS (il faudrait que l’application soit affichée à l’écran pour que cela marche), ou alors l’accès aux couches basses ou aux API de l’OS comme l’interfaçage avec un équipement particulier qui requiert l’accès à un port série et une pile Bluetooth.

    Après cette longue lecture, vous devriez avoir une idée un peu plus claire mais pas forcément très positive de l’idée du portage de votre application: cela représente de toutes façons pas mal de travail. Mais ce travail peut en valoir la peine. Windows Phone 7 marque une nouvelle page de l’histoire des smartphones avec une ergonomie différente centrée sur l’utilisateur. A vous de voir en fonction des usages, des besoins de vos collaborateurs et de l’image que vous voulez véhiculer. Les points bloquants mentionnés tout au long de cet article sont-ils réellement bloquants? ils ne l’ont pas forcément été pour d’autres! Dans tous les cas, toute l’équipe mobile chez Microsoft saura répondre aux questions et dissiper les doutes éventuels. Cet article n’est là que pour expliquer la base, car encore une fois il est impossible de faire des généralités sur les applications métiers… Alors contactez-nous!!

  • Pierre's Embedded and Mobile Blog

    [Microsoft Days] Session sur Windows Phone 7 pour les développeurs

    • 6 Comments

    Les Microsoft Days c’est reparti, et les rencontres techniques commencent demain à Aix! J’aurai le plaisir d’y animer une session pour développeurs: “Silverlight et XNA: Développeurs, à vous le mobile”. L’occasion de se rencontrer et d’échanger :-)

    Le planning est le suivant:

    • Aix-en-Provence: 30 Septembre
    • Paris: 7 Octobre
    • Lyon: 12 Octobre
    • Toulouse: 14 Octobre
    • Strasbourg: 18 et 19 Octobre
    • Lille: 20 et 21 Octobre
    • Nantes: 02 et 03 Novembre

    Inscrivez-vous et viendez!

  • Pierre's Embedded and Mobile Blog

    Internationalisez votre application Windows Phone 7

    • 8 Comments

    Le Marketplace de Windows Phone 7 autorise une diffusion mondiale de l’application, mais aussi des diffusions spécifiques dans des marchés localisés. Par exemple vous pouvez avoir envie de diffuser une version Française de votre application sur les terminaux en langue française, et en Allemand sur les terminaux allemands. C’est ce qu’on appelle la localisation. De la même manière, certaines valeurs se représentent différemment d’un pays à l’autre : par exemple la date s’écrit au format mm/jj/aaaa dans les pays anglo-saxons mais jj/mm/aaaa dans les pays francophones. En utilisant les bons outils, on peut indiquer au téléphone d’adapter son affichage en fonction des options choisies par l’utilisateur. C’est ce qu’on appelle la globalisation. Localisation et globalisation forment les deux mamelles de l’internationalisation d’une application, et se servent de plusieurs notions qu’il faut connaitre :

    La notion de culture se réfère à un ensemble de préférences (langage, monnaie, affichage des dates…) qu’on identifie par un code en deux parties : <langage>-<region>. Par exemple, en-us pour anglais-états-unis ou fr-fr pour français-France qui n’est pas la même chose que fr-ca (français-canada). Ce code peut aussi porter le nom de « Locale ».

    Il y a 3 types de « culture » dans le framework : « invariant » qui désigne justement l’absence de culture choisie, «  neutral » qui représente un langage sans association à une région particulière (fr par exemple) et specific qui représente une culture associée à la fois à un langage et une région.

    La classe CultureInfo nous permettra de récupérer les informations à propos de la culture comme celle qui a été paramétrée dans le système, le formatage des différents types de données (date, monnaie, etc) et jusqu’à un calendrier spécifique (et oui, le calendrier hébreu est différent du calendrier japonais !!)

    La notion d’encodage, qui est un outil pour représenter les différents caractères utilisés par une langue de façon numérique : les plus connus sont ASCII, UTF-8, Unicode… Il est bon de savoir que Windows Phone 7 utilise l’Unicode. La classe Encoding vous aidera à vous abstraire des problèmes potentiels d’encodage (par exemple lors du téléchargement de données qui ne sont pas encodées en Unicode)

    La globalisation et l’utilisation de la classe CultureInfo

    La première (et peut-être la seule) chose à savoir est qu’il existe deux instances de la classe CultureInfo dont se sert votre application : il s’agit des propriétés CurrentCulture et CurrentUICulture de l’objet Thread.CurrentThread. Cela permet de savoir par exemple comment un objet de type DateTime sera affiché lors de l’appel à sa méthode ToString(). Pour choisir la façon d’afficher ces types de données d’une manière qui n’est pas celle choisie à l’échelle du système (dans le menu Settings du terminal Windows Phone 7) il suffit de créer une nouvelle instance de la classe CultureInfo en lui passant en paramètre la locale souhaitée (par exemple fr-FR) et assigner cette instance aux propriétés CurrentCulture et CurrentUICulture.

    CultureInfo ci = new CultureInfo("fr-FR");
    Thread.CurrentThread.CurrentCulture = ci;
    Thread.CurrentThread.CurrentUICulture = ci;

    La localisation – bien répartir ses ressources pour supporter proprement différents langages

    Comme par le passé avec le .NET Compact Framework, la première étape de la localisation consiste à utiliser des fichiers de ressources (extension .resx). On peut ajouter ces fichers avec dans le menu « Add -> Add New Item » en choisissant « Resource File ».

    clip_image002

    Attention, pour que le framework retrouve ses petits il faut adopter une stratégie de nommage particulière : d’abord un fichier de ressources par défaut qu’on nomme <NomDuFichierRessources>.resx  puis ensuite les fichiers de ressources localisées qu’on nommera de la façon suivante : <NomDuFichierRessources>.<Locale>.resx.

    Je vous conseille de commencer par créer uniquement le fichier par défaut, y insérer toutes vos chaines de caractères, et ensuite seulement, une fois que toutes les ressources par défaut sont créées, copier/coller et renommer le fichier pour les différentes cultures à supporter, avant de changer le contenu des chaines de caractères : de cette manière vous êtes sûr que toutes les chaines de caractères localisées ont le même nom indépendamment de la culture…

    Il faut ensuite définir la culture par défaut supportée par l’application (celle qui utiliser la fichier <NomDuFichierRessources>.resx). Pour cela dans l’explorateur de solution, cliquez sur le nom du projet et choisissez ses propriétés (Properties). Dans l’onglet Application, cliquez sur le bouton Assembly Information et dans la liste Neutral language choisissez la culture par défaut.

    clip_image004

    Dernière opération « manuelle » s’il en est, fermez votre projet et ouvrez le fichier .csproj dans un éditeur de texte : c’est fait un fichier xml. Trouvez le tag  <SupportedCultures> et ajoutez toutes les locales que votre application doit supporter (y compris la locale par défaut) dans ce tag, séparées par des points-virgules.

    <SupportedCultures>en-US;fr-FR;</SupportedCultures>
    

    Il ne reste plus qu’à utiliser ces fichiers de ressources dans votre projet : là encore, il faut suivre quelques étapes : c’est un peu plus compliqué qu’avec le .NET Compact Framework car il faut que ces chaines de caractères localisées soient accessible à la fois depuis le code et le XAML sous forme de ressources.

    D’abord, ouvrez chacun de vos fichiers ressources et dans la liste « Access Modifier » en haut de l’éditeur sélectionnez la valeur « Public ». Il faut le faire pour chacun des fichiers ressources.

    clip_image006

    Ensuite, il faut créer une nouvelle classe dans votre application (qu’on appellera comme on veut, j’utilise ici « LocalizedStrings » car c’est ce qui est suggéré par la documentation MSDN) dans laquelle on créera une propriété qui reverra vers ces fichiers de ressources fraichement créés : dans le bout de code suivant, LocalizedResources est le nom que j’ai choisi pour mon fichier de ressources, on retrouve donc une classe de ce type dans l’espace de nommage de mon application.

    public class LocalizedStrings
    {
        public LocalizedStrings()
        { }
    
        private static LocalizedResources locTestResources = new LocalizedResources();
        public LocalizedResources LocTestResources { get { return locTestResources; } }
    }

    Après ça, il faut ouvrir le fichier App.xaml et dans la section « <Application.Resources> » il faut rajouter le bout de code suivant :

    <Application.Resources>
        <local:LocalizedStrings xmlns:local="clr-namespace:LocalizationTest" x:Key="LocalizedStrings" />
    </Application.Resources>
    

    Si votre projet dispose de plusieurs fichiers de localisation, il suffit de rajouter des propriétés dans la classe LocalizedStrings.

    Enfin, il n’y a plus qu’à utiliser ces ressources dans le code XAML avec un simple Binding de la façon suivante :

    {Binding Path=LocTestResources.PageName, Source={StaticResource LocalizedStrings}}

    Et dans le code C#, c’est d’une simplicité déconcertante : il suffit d’accéder à la classe LocalizedResources :

    PageTitle.Text = LocalizedResources.PageName;

    Vous voilà maintenant en mesure de supporter plusieurs langages dans une même version de votre application, effort qui saura sans aucun doute séduire vos utilisateurs. Attention cependant à bien réfléchir à vos traductions !!

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] RTM des outils: quoi de neuf pour les développeurs?

    • 0 Comments

    La nouvelle n’aura échappée à personne, les outils de développement Windows Phone 7 sont RTM. Quoi de neuf pour les développeurs?

    En plus de cela, Une équipe chez Microsoft a été chargée de développer un certain nombre de contrôles complémentaires:

    • Context Menu
    • DatePicker
    • TimePicker
    • Gesture Recognizer
    • Toggle Switch
    • WrapPanel

    Disponibles dans le Toolkit Silverlight pour Windows Phone!

    Dernière chose, et pas des moindres: le Mobile Advertising SDK for Windows Phone 7 qui permet d’insérer de la pub dans son application pour augmenter ses revenus :) petit bémol: pour l’instant il n’est disponible que pour les états-unis, mais il devrait arriver rapidement dans les autres pays.

    Bien entendu, le Training Kit a été mis à jour également!

  • Pierre's Embedded and Mobile Blog

    Barcamp Windows Phone 7 à la Cantine, organisé par Backélite

    • 0 Comments

    Backelite, l’agence mobile star de la place de Paris, organise un barcamp à la cantine le Samedi 2 Octobre de 10h à 17h:

    http://barcamp.org/WindowsPhone7Camp

    Inscrivez-vous (et venez!) pour tailler le bout de gras avec d’autres développeurs mobiles (on espère en voir de tous bords) et éventuellement (on l’espère aussi) apprendre plein de choses!

  • Pierre's Embedded and Mobile Blog

    Développeurs-bloggeurs: offrez vous un peu de trafic avec Windows Phone 7

    • 0 Comments

    Dans un effort de structurer le contenu Windows Phone 7 francophone à destination des développeurs, le centre de développement Windows Phone 7 se restructure, on y retrouvera des articles techniques, des webcasts sur le développement et le design, un coach pour se former… et des liens vers les articles pertinents de la communauté!

    Nous en avons sélectionnés un certain nombre que nous avons glanés dans nos rss readers et sur le net, mais il doit y en avoir beaucoup plus que ça! si vous voulez profiter du trafic du centre de développement Windows Phone 7 (des dizaines de milliers d’UU par mois) pour renvoyer vers vos blogs, c’est le bon moment!

    Vous pouvez:

    • Nous envoyer directement les liens vers vos posts quand vous les publiez
    • Nous envoyer un lien vers votre flux RSS à propos de Windows Phone 7 (soyez gentils, un peu de filtrage!) et nous publierons nous même le lien
    • Dernier point, et probablement celui qui vous offre le plus de visibilité, c’est carrément de reprendre le template d'article pour MSDN et nous l’envoyer!
  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Tout ce qu’il faut savoir pour faire de belles applications…

    • 0 Comments

    Développement et Design sont deux compétences qu’on retrouve rarement chez les mêmes personnes. Pourtant quand on est développeur mobile on a pas forcément le luxe d’une équipe complète avec ergonomes, graphistes, etc. Et autant les ressources ne manquent pas quand il s’agit de trouver des exemples ou des best practices pour du code, quand on parle du design d’application mobile, c’est autre chose… C’est pour ça que Microsoft a organisé des “Design Days” avec l’équipe UX de Windows Phone 7 et le fruit de ces design days est maintenant sur Channel 9, sous forme de webcasts! Une série à ne louper sous aucun prétexte avant de publier son application:

  • Pierre's Embedded and Mobile Blog

    Une belle série de webcasts (en anglais) sur le développement Windows Phone 7

    • 0 Comments

    Rob Miles et Andy Wigley, tous deux MVP et auteurs d’ouvrages sur le développement mobile et XNA, viennent d’animer une série de 12 webcasts que vous pouvez retrouver sur Channel 9, ainsi que sur iTunes ou avec un Zune Pass.

    Cette série de webcasts couvre les différents aspects du développement avec Windows Phone 7, que ce soit pour une application en Silverlight ou un jeu avec XNA, et vont vous enseigner comment tirer parti des fonctionnalités du SDK et de la plateforme, de manière progressive. Une manne pour ceux qui veulent s’initier à Windows Phone 7 en profitant d’un peu d’humour anglais !

    Windows Phone 7 Jump Start (Session 1 of 12): Introduction

    Un tour de la plateforme de développement et des outils

    Windows Phone 7 Jump Start (Session 2 of 12): Building a Silverlight Application, Part 1

    Le développement d’une application Silverlight simple de A à Z, avec la notion de DataBinding et la façon de structurer son application proprement.

    Windows Phone 7 Jump Start (Session 3 of 12): Building a Silverlight Application, Part 2

    Comment faire une application plus complexe. En utilisant ses propres contrôles, et comment ajuster les entrées utilisateurs pour vos besoins. Les concepts de navigation entre les pages de l’application sont aussi abordés et comment en faire le meilleur usage

    Windows Phone 7 Jump Start (Session 4 of 12): Building Games for the Windows Phone 7 Platform

    Comment utiliser Silverlight pour faire un jeu pour Windows Phone 7 ? Il est possible d’utiliser une mécanique Update/Draw avec l’exemple d’un jeu complet. C’est aussi l’occasion d’illustrer comment Silverlight peut utiliser les librairies XNA pour ajouter du son à un jeu.

    Windows Phone 7 Jump Start (Session 5 of 12): Building XNA Games for the Windows Phone 7 Platform, Part 1

    Les bases de XNA sur Windows Phone 7: comment créer des jeux, gérer l’orientation, et quelques trucs et astuces pour de bonnes performances. Enfin, comment utiliser l’accéléromètre pour contrôler un jeu!

    Windows Phone 7 Jump Start (Session 6 of 12): Building XNA Games for the Windows Phone 7 Platform, Part 2

    Comment utiliser les fonctionnalités du téléphone et de la plateforme dans un jeu? L’écran tactile, les sons, et comment accéder au contenu Zune (musique par exemple) sur le terminal. Dernier petit truc, comment permettre à l’utilisateur d’entrer du texte facilement dans un jeu en XNA !

    Windows Phone 7 Jump Start (Session 7 of 12): Advanced Application Development, Part 1

    Comprendre le cycle de vie d’une application : le modèle d’exécution, ainsi que la sauvegarde et la restauration de contexte, et la persistance des données

    Windows Phone 7 Jump Start (Session 8 of 12): Advanced Application Development, Part 2

    Les “Lanceurs” et les “Sélecteurs” qui vous permettent d’interagir avec des fonctions et des applications natives du téléphone : comment passer des appels, prendre des photos, sélectionner des contacts, etc., et l’utilisation de l’Isolated Storage, le moyen de stocker des informations sur le téléphone pour votre application.

    Windows Phone 7 Jump Start (Session 9 of 12): Advanced Application Development, Part 3

    Stocker des données et accéder au réseau depuis Windows Phone 7, ainsi que le système de notifications en push qui permet à un service web de « rappeler » votre application quand elle ne tourne pas !

    Windows Phone 7 Jump Start (Session 10 of 12): Marketing Your Windows Phone 7 Application

    L’utilisation de la Marketplace Windows Phone. Comment s’inscrire sur Marketplace, et comment publier des applications : comment packager et déployer votre implication et aussi comment enregistrer un Windows Phone 7 comme « terminal de développement » afin de pouvoir l’utiliser avec Visual Studio 2010 pour tester votre application.

    Windows Phone 7 Jump Start (Session 11 of 12): Working with Media

    Comment utiliser la 3D dans XNA, et comment profiter des media stockés sur le téléphone, que ce soit les photos ou bien les données synchronisées avec le client Zune.

    Windows Phone 7 Jump Start (Session 12 of 12): Final Silverlight Topics and Wrap-Up

    L’utilisation de l’application bar, un composant clef de toute appliction Windows Phone 7, et comment se servir d’Expression Blend pour créer une expérience utilisateur de haut niveau. Enfin, comment utiliser les services de cartographie, ainsi que quelques outils de navigation qui ne sont pas encore sortis !

  • Pierre's Embedded and Mobile Blog

    Charles Petzold remet ça… Programming Windows Phone 7 : Special Excerpt 2

    • 0 Comments

    Master Charles Petzold himself écrit un livre sur Windows Phone 7, et avait publié au moment du MIX un premier extrait gratuit… voila le deuxième :)

    La première version faisait 6 chapitres, la deuxième, 11, soit 265 pages, et le meilleur pour la fin: le livre sera fini pour le Octobre, pour la PDC (le 28 précisément), et sera gratuit :)

    Source: le blog de Microsoft Press

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Vous, votre application, une page facebook et un jury… présidé par Steve Ballmer :)

    • 0 Comments

    Pas de lancement de plateforme mobile sans un concours – c’est quasiment devenue une institution pour encourager les développeurs à créer des applications… Windows Phone 7 n’échappe pas à la règle. Sur ce concours, nous voulons donner un maximum de visibilité aux applications qui seront créées d’ici le lancement et particulièrement de la visibilité face aux investisseurs… et pas des petits noms: Steve Ballmer, Antoine Granjon (Vente-privée.com), Ouriel Ohayon (AppsFire et le fond Isai), Marc Simoncini (Meetic et le fond Jaina), Bruno Vanryb (Avanquest) et Pierre-Olivier Carles (Kipost et Labotec)….

    Mais avant de vous offrir 2 minutes pour les convaincre, et vous payer une visibilité de malade, il faudra se faire sélectionner parmi tous les concurrents à travers le nombre de “like” sur la page Facebook developpeurs de la vidéo de votre application.

    Donc au boulot, tout est expliqué sur cette page!

    Et pour ceux qui veulent tester leur application sur des terminaux, contactez-moi :)

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Adopter ou ne pas adopter “Metro”?

    • 0 Comments

    Indubitablement Windows Phone 7 arrive sur le marché avec une approche particulière de l’ergonomie du téléphone, avec la mission avouée de “placer l’utilisateur au centre du téléphone”. Loin de la liste d’icône qu’on peut retrouver chez certains concurrents (bien qu’il y en ait une quand même), l’écran d’accueil (start screen) et les hubs (ou panoramas) souhaitent glorifier le contenu, se débarrassant de tout élément “inutile” d’interface graphique. Quand on est développeur, on entend les designers parler de choses bizarres et leur donner une utilité ou une mission incompréhensible: qu’est-ce que “l’espace négatif”? comment “célébrer la typographie”? comment fait-on pour “délecter l’utilisateur par l’usage du mouvement”?!

    Qu’on aime ou qu’on déteste les idées qui construisent l’interface de Windows Phone 7, il faut se familiariser avec son “langage de design”, nom de code Metro. Même si l’on peut choisir de l’adopter complètement, d’en récupérer une partie des idées ou d’ignorer ses préceptes (Silverlight permet de faire exactement ce qu’on veut avec les éléments graphiques et ergonomiques) l’utilisateur va s’habituer à l’ergonomie de son Windows Phone 7 : ne pas porter attention, ou mal comprendre “Metro”, c’est risquer de créer des glitchs, des incohérences, des ruptures dans le processus de compréhension ou de navigation dans l’interface: dans le pire des cas, l’utilisateur est dérouté par votre application et ne l’utilise pas, voire l’évalue avec une mauvaise note dans le Marketplace.

    Pour autant nous n’avons pas tous la chance de travailler avec des designers, et en tant que développeurs nous avons rarement le bagage culturel et technique, l’état d’esprit, le background pour comprendre et concevoir une “interface naturelle”, qui est le propre de Windows Phone 7. C’est pour ça que l’équipe des designers Windows Phone 7 publie de nombreux documents et webcasts à propos des principes de “Metro”. Il faut s’astreindre à les regarder, les étudier, y réfléchir et les revoir encore, car c’est dans ces ressources qu’on trouve les petites phrases, les éléments clefs qui nous aident à comprendre ce qu’on peut faire bien ou mal. Voici quelques-unes de ces ressources indispensables:

    Voici quelques exemples de “prises de conscience” que j’ai eu en regardant ces webcasts et en repassant sur les documents:

    On ne doit concevoir le “panorama” de son application qu’en dernière étape! Le panorama est un moyen d’encourager l’utilisateur à plonger dans l’application, et ne doit présenter que des bribes d’informations qui résonnent naturellement auprès de l’utilisateur – les derniers usages qu’il a fait de l’application, le contenu récemment publié, les images les plus consultées… A concevoir le panorama en premier, on le surcharge et on rend l’application incohérente: c’est comme si on voulait créer un journal et qu’on commençait par concevoir la couverture! D’abord on fait les articles, ensuite on choisit ce qu’on met en couv’!

    Le contrôle pivot vous permet de présenter de l’information sous forme “classée”: que ce soit la même information ou une information différente: par exemple des points d’intérêts sous forme de liste dans une page du pivot, et sur une carte dans une autre page. N’hésitez pas à proposer plusieurs vues de la même information: votre application n’en sera que plus riche et vous laisserez à l’utilisateur le choix de l’usage.

    Tout élément de mon interface est “touchable”: car l’écran entier est tactile: chaque interaction de l’utilisateur avec son écran doit lui renvoyer un feedback: que ce soit pour se déplacer dans une page, pour agrandir une photo ou pour mettre à jour un statut, il faut pour chaque élément se poser la question “pourquoi l’utilisateur voudrait-il toucher cet élément? quel doit être le feedback?”

    Ce qui est évident à l’usage (le téléphone en main) n’est pas forcément visuellement évident à première vue: par exemple, le vide est une information en lui-même… Entendu à maintes reprises à propos de l’écran d’accueil: “pourquoi laisser une bande noire sur le coté droit de l’écran d’accueil? c’est de l’espace perdu!!”. Et après avoir laissé l’utilisateur toucher le téléphone “ha mais.. il y a quelque chose à droite de cette zone!” si cette zone non utilisée n’était pas là, comment naviguerait-on vers la liste d’icône? Il faut comprendre que Metro, c’est une interface “en mouvement” et qu’une vue statique de celle-ci (comme de votre application) ne reflète pas forcément l’usage.

    Les transitions visuelles doivent être pensées “dans le sens du mouvement” : si par exemple l’utilisateur change de page en faisant un geste de la droite vers la gauche, alors l’animation doit suivre, immédiatement et sans délai, le geste de l’utilisateur, de la droite vers la gauche. Et le retour à la page précédente doit se faire avec une animation de la gauche vers la droite. Le dire parait une évidence mais à l’implémentation on retrouve de nombreux développeurs faire la même animation de changement de page que ce soit pour aller chercher une nouvelle information ou pour revenir en arrière. Dommage! Qu’une transition soit jolie, c’est bien, qu’elle soit en plus utile et qu’elle permette de se repérer dans l’interface, c’est mieux!!

    Et des exemples comme ça, il y en a à foison: bien espacer les éléments pour qu’ils soient facilement manipulable au doigt, utiliser le “hors champ” pour suggérer qu’il y a du contenu en dehors du formulaire (comme dans les panoramas) etc.

    Dernier point à propos de Metro – je faisais la démonstration de l’interface à une designer, comme d’habitude en expliquant chaque étape et le rôle des différents éléments graphiques, transitions, etc… jusqu’au moment ou elle m’a gentiment fait remarquer que je n’avais pas besoin de l’expliquer parce que c’était “naturel”. Je vous laisserai donc avec ça, et en paraphrasant Bill Buxton: quoi que vous fassiez pour votre interface, faites en sorte qu’elle soit “naturelle”!

  • Pierre's Embedded and Mobile Blog

    Windows Embedded Developer Update : recevez automatiquement les mises à jour des outils de développement Embedded

    • 1 Comments

    Avec Windows Update, il est depuis des années extrêmement simple de garder son système d’exploitation à jour. Mais pour les systèmes d’exploitation des systèmes embarqués, c’est un autre problème:

    • L’image étant conçue avec des composants spécifiques, il n’y a pas 2 systèmes qui ont besoin du même ensemble de mises à jour
    • L’équipement fonctionnant en environnement industriel, il n’est pas recommandé (même si c’est possible) de laisser Windows Update agir à sa guise: chaque image d’OS doit être validée pour s’assurer qu’il n’y aura pas de régression sur le terrain!

    D’où l’importance de système de management d’updates spécifiques pour les systèmes embarqués. Et ce système de management doit agir à deux endroits: il faut pouvoir déployer des mises à jour sur un parc, et ça c’est possible depuis longtemps, avec le DUA, ou WSUS, ou Dism, etc: tous ces outils que les pros du déploiement Windows connaissent bien. Mais pour le déployer des images customisées “entières” (des masters) à jour, il faut pouvoir les générer avec ces dernières mises à jour, et donc mettre à jour les packages que l’outil de développement utilise. C’est possible depuis longtemps pour les fabricants d’équipements, car ils ont accès à des repositories spécifiques (ECE) mis à jour par Microsoft en temps réel, mais cela demandait au développeur de suivre “manuellement” et proactivement ces repositories.

    Windows Embedded Developer Update est une nouvelle brique des outils Windows Embedded qui permet par l’intermédiaire d’un petit client à installer sur le poste du développeur d’être notifié des dernières mises à jour que pousse Microsoft et bien entendu de les télécharger en fonction de leur criticité afin de pouvoir regénérer une image qu’on pourra tester et déployer. La boucle est bouclée.

    Le meilleur dans tout ça c’est que c’est outil est gratuit :) Il fonctionne pour l’instant avec Windows Embedded Standard 7 et le sera très bientôt pour Windows Embedded Compact 7.

  • Pierre's Embedded and Mobile Blog

    Développez.com lance le challenge Windows Phone 7

    • 0 Comments

    Avec l’été arrive la plage et les sessions de code obligatoire sur la terasse avec un mojito. Pour bien s’occuper on avait déjà J’en ai rien à coder, cette année, developpez.com lance avec Microsoft et en complément à cette opération devenue mythique un challenge autour de Windows Phone 7: le principe: pour chaque étape réussie, un lot :)

    L’inscription c’est par ici

    La première étape est super simple… et rapporte un t-shirt :)

Page 4 of 10 (240 items) «23456»