Trucs et astuces pour rendre votre application Windows Phone 8 plus visible

943 views

Published on

Félicitations, vous avez publié votre application sur le Windows Phone Store ! Voyez maintenant comment améliorer la visibilité et la perception de votre application grâce aux nombreuses possibilités d'intégration offertes par Windows Phone 8. Vignette dynamique, filtres (lens), portefeuille (wallet), hub Music + Video, contacts, seront autant de possibilité de mieux exposer votre application.

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
943
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Une des nouveautés de Windows Phone 8 mais aussi du tout récent Windows Phone 7,8 est l’arrivé de 3 types de tuiles.La première « Flip » ressemble énormément aux tuiles que l’on connaissait avant, sauf que l’on peut l’utiliser aussi en wide et l’animation de la tuile est légèrement différentesEnfin la dernière s’appelle Iconic, contrairement aux autres, elle ne peut avoir d’images de fond, mais elle possède un compteur assez sympathique. On retrouve ici l’expérience que l’on connaissait avec les applications Mail ou Calendrier. Le compteur est comme pour les autres, bloqué à 99. A noter, il est possible de lui définir une couleur de fondLa seconde s’appelle « cyclic », elle est semblable à la tuile « Photo » que l’on connaissait déjà. Elle peut contenir jusqu’à 8 images locale ! Je met le focus sur ce point car contrairement aux tuiles Flip ou Standard, il n’est pas possible de lui fournir une URI distante, votre image doit être soit en content de votre application, soit dans l’isolatedstorage. Elle est idéal lorsque votre application met en avant des photos comme Facebook par exemple, Flickr, etc… Elle peut aussi être détourné pour avoir une expérience semblable aux tuiles Windows 8, pour cela il suffit de générer dans chaque image du texte.
  • Un poil compliqué
  • Une librairie qui va vous permettre d’utiliser exactement le même code entre WP8 et WP7,8 pour générer vos tuiles
  • Mettre le focus sur les limitations du background agent : 25 secondes6Mo maxiEt sur la problématique : génération locale ou distance+ pour la cyclique : expliquer que l’on peut la générer à distance mais qu’il faudra faire attention à télécharger l’image manuellement
  • Mettre le focus sur les limitations du background agent : 25 secondes6Mo maxiEt sur la problématique : génération locale ou distance+ pour la cyclique : expliquer que l’on peut la générer à distance mais qu’il faudra faire attention à télécharger l’image manuellement
  • Préciser oralement que c’est l’utilisateur qui choisi quelles applications affichent les notifications, pas de possibilité de s’imposer
  • Pour l’image de fond :Pensez à respecter les définitions de l’écran. Inutile de générer un fond trop grand par exemple. Inversement, essayez de vous rapprocher le maximum à la résolution native afin de fournir une expérience utilisateur maximaleUn autre point important et indispensable à savoir est que votre image doit être une image locale contrairement aux tuiles par exemple. Après, elle peut être en tant que content ou dans l’isolatedstorage, peut importe.Enfin dernier point, attention à l’occupation de l’espace. Dans certaines cultures, les heures et les dates peuvent prendre plus de place. Un petit conseil pour la mise à jour de votre lockscreen, attention à changer le nom de votre fichier image, le système pourra ignorer vos changements sans cela http://msdn.microsoft.com/fr-fr/library/windowsphone/design/jj662927(v=vs.105).aspx
  • 23 aout
  • Pas de grosse nouveauté apporté par Windows Phone 8 concernant le hub musique et vidéo, toutefois rappelons qd même comment nous pouvons mettre en avant nos applications
  • Premièrement, il est possible d’indiquer au système que notre application peut fournir du contenu audio ou vidéo.Pour cela, c’est très simple : il suffit d’ajouter l’attribut « HubType=‘’1’’ » au nœud App du fichier WMAppManifest.xml
  • Il est aussi possible de mettre en avant un contenu qui est en train d’être joué. Cela se fait au niveau du code de la façon suivante
  • Pareillement, il est possible d’ajouter du contenu à l’historique et dans la partie « nouveauté »
  • Tout comme avec la musique, il est possible de mettre en avant notre application en tant qu’application photo. Cette fois ci, pas d’attributs mais un élément d’extension à ajouter à WMAppManifest.xml
  • Contrairement au SDK 7,1, il est important de bien gérer les capabilitiesAttention !!!! Le menu applications… n’est accessible qu’aux applications Windows Phone 7 !!!Alors pourquoi cela ? Pourquoi l’avoir restreint ainsi ?
  • Tout simplement car Windows Phone 8 a apporté une nouveauté, que l’on nomme Rich Media.Enfin…. Presque une nouveauté, vous allez comprendre très rapidement.
  • Le principe est assez simple;
  • Encore une fois, cela passe par une extension dans le fichier WMAppManifest.xml
  • Mais avant d’aller plus loin, voyons a quoi ça ressemble
  • Un nouveau service pour l’utilisateurMais aucune nouvelle APIOn est donc vraiment dans la thématique de cette session : mettre en avant votre application dans Windows Phone
  • Un nouveau service pour l’utilisateurMais aucune nouvelle APIOn est donc vraiment dans la thématique de cette session : mettre en avant votre application dans Windows Phone
  • Dans les settings de votre téléphone, si vous allez dans la partie photos+caméra, vous verrez que Windows Phone 8 a apporté une nouveauté permettant de sélectionner des applications qui vont uploader automatiquement vos images vers des services d’hébergements.Premier point : on parle en fait de téléversement et non de téléchargement, c’est le téléphone qui envoie ses images, et non l’inverse.Si on clique sur le « applications », on tombe alors sur l’écran suivant
  • On peut voir les applications que l’on a déjà sur notre téléphone mais encore plus intéressant, on peut cliquer sur le bouton « chercher des applications » qui va alors afficher l’ensemble des applications du Store permettant l’auto-upload
  • Pour mettre son application en valeur, il suffit par exemple d’indiquer dans les notes que le contact a été généré depuis votre application ou encore faire un lien qui va lancer votre application
  • Trucs et astuces pour rendre votre application Windows Phone 8 plus visible

    1. 1. WINDOWS PHONE 8 rendre votre application plus visible Alex Danvy Rudy Huyn
    2. 2. Alex DANVYÉvangéliste Windows PhoneMicrosoft Francealex.danvy@microsoft.com@danvy
    3. 3. Rudy HUYNResponsable technique pour Orange Business ServicesMVP Windows Phone Developmentrudyhuyn@gmail.com@rudyhuynhttp://www.rudyhuyn.com
    4. 4. Faciliter le téléchargementEncourager l’utilisation
    5. 5. Tuiles dynamiques
    6. 6. LES TYPES DE TUILESFlipIconicCycle
    7. 7. Permet une mise en avant :SUR LE TELEPHONE DEL’UTILISATEURSUR LE WINDOWS PHONESTORE
    8. 8. WINDOWS PHONE 7.8 ? OUI !
    9. 9. *Ce slide est sponsorisé par les médicaments
    10. 10. ALTERNATIVE ?
    11. 11. METTRE A JOUR SA TUILE ? Solution : background agent Attention !
    12. 12. ALTERNATIVEMise à jour programméevar scheduler = new ShellTileSchedule(maintile){ Recurrence = UpdateRecurrence.Onetime, StartTime = date, MaxUpdateCount = 1, RemoteImageUri = new Uri("http://www.monsite.com/generateTile.php"};
    13. 13. Ecran de verrouillage
    14. 14. Différentes mises en avant :IMAGE DE FONDZONE TEXTUELLEICONE DE NOTIFICATIONS
    15. 15. Icône de notification :JUSQU’À 5 APPLICATIONSAJOUT EXPLICITECOMPTEUR LIÉ A LA TUILEPRINCIPALE
    16. 16. Zone textuelleUNE SEULE APPLICATIONCHOIX EXPLICITELIÉE A LA TUILE PRINCIPALE PAS TUILE CYCLIQUE
    17. 17. INCIDENCE SUR LA TUILE Contraintes fortes sur le design Alternative : Proposer une tuile secondaire
    18. 18. Image de fondRESPECTER LESDEFINITIONSOBLIGATOIREMENT UNEIMAGE LOCALEATTENTION A L’OCCUPATIONDE L’ESPACE
    19. 19. DEMO Locke Screen
    20. 20. if(!Windows.Phone.System.UserProfile.LockScreenManager.IsProvidedByCurrentApplication){ Windows.Phone.System.UserProfile.LockScreenManager.RequestAccessAsync();}
    21. 21. LockScreen.SetImageUri(new System.Uri("ms-appdata:///local/" + filename, UriKind.Absolute));
    22. 22. Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings-lock:"));
    23. 23. Hub musique + vidéo
    24. 24. Mise en avant de l’application<App xmlns="" ProductID="" Title="WindowsPhoneApplication"Genre="NormalApp" HubType="1">
    25. 25. Lecture en coursvar media = new MediaHistoryItem(){ ImageStream = stream; Source = ""; Title = "Techdays Radio";};MediaHistory.Instance.NowPlaying = media;
    26. 26. Historique + nouveautésMediaHistory.Instance.WriteRecentPlay(media);MediaHistory.Instance.WriteAcquiredItem(media);
    27. 27. Photo !
    28. 28. Intégration au hub<Extension ExtensionName="Photos_Extra_Hub"ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5632}"TaskID="_default" />
    29. 29. Intégration aux menus<Capability Name="ID_CAP_MEDIALIB_PHOTO"/><Extension ExtensionName="Photos_Extra_Share" ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5632}" TaskID="_default" /><Extension ExtensionName="Photos_Extra_Image_Editor" ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5632}" TaskID="_default" /><Extension ExtensionName="Photos_Extra_Viewer" ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5632}" TaskID="_default" />
    30. 30. RICH MEDIA(UNE PRESQUE) NOUVEAUTÉ WINDOWS PHONE 8 €
    31. 31. PrincipeAjoute un indicateur : « capturé par XYZ»Ajoute un menu « ouvrir dans XYZ »
    32. 32. <ExtensionExtensionName="Photos_Rich_Media_Edit"ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5632}"TaskID="_default" />
    33. 33. DEMO Super Courgette* * Il va faire noir
    34. 34. POURQUOI PRESQUE ?Un nouveau service pour l’utilisateurMais aucune nouvelle API
    35. 35. SAUVEGARDER  Vous générez une image  Vous la sauvegardez dans le hub photo  Vous récupérez le chemin de l’image  Vous stockez dans votre isolated storage l’ensemble des informations qui ont permis la génération de l’image + le chemin
    36. 36. MODIFIER  Récupérez l’image à partir du token  Retrouvez le chemin : GetPath()  Récupérez les données correspondant au chemin  Affichez l’image
    37. 37. Duplication et non édition
    38. 38. AUTO UPLOADIL N’Y A PAS QUE SKYDRIVE DANS LA VIE
    39. 39. PRINCIPE ?
    40. 40. Mise en avant
    41. 41. <Extension ExtensionName="Photos_Auto_Upload"ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5632}" TaskID="_default" />
    42. 42. • Créer un agent• Lancer l’agent en tant que ressource intensive• Explorer les albums du téléphone• Identifier les nouvelles photos• Uploader les photos vers un serveur
    43. 43. DEMO AUTO UPLOADR.
    44. 44. foreach (PictureAlbum album in newMediaLibrary().RootPictureAlbum.Albums){ if (album.Name == "Screenshots") return album;}return null;
    45. 45. var pictures=album.Pictures.Where(p => p.Date >lastuploadedPicture).OrderBy(p=>p.Date).ToList(); foreach(var picture in pictures) { var res= await UploadPicture(picture); if(res==SUCCESS) { SaveLastUploadedPictureDate(picture.Date); } }
    46. 46. LES LENTILLES LENSES
    47. 47. DEMO LES LENSES
    48. 48. SEARCH EXTENSIBILITY
    49. 49. Principe
    50. 50. Principe
    51. 51. <Extensions> <Extension ExtensionName="Bing_Products_Computing" ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5661}" TaskID="_default" ExtraFile="ExtensionsExtras.xml" /> <Extension ExtensionName="Bing_Products_Electronics" ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5661}" TaskID="_default" ExtraFile="ExtensionsExtras.xml" /> <Extension ExtensionName="Bing_Products_Software" ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5661}" TaskID="_default" ExtraFile="ExtensionsExtras.xml" /></Extensions>
    52. 52. <?xml version="1.0" encoding="utf-8" ?> <ExtrasInfo> <AppTitle><Extensions><default></default> <Extension ExtensionName="Bing_Products_Computing" <fr-FR>LoPrestiAimeur</fr-FR> </AppTitle> ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5661}" TaskID="_default" /> <Consumer ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5661}"> /> ExtraFile="ExtensionsExtras.xml" <ExtensionInfo> <Extension ExtensionName="Bing_Products_Electronics" <Extensions> ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5661}" <ExtensionName>Bing_Products_Computing</ExtensionName> <ExtensionName>Bing_Products_Electronics</ExtensionName> TaskID="_default" /> </Extensions> ExtraFile="ExtensionsExtras.xml" /> <CaptionString> <Extension ExtensionName="Bing_Products_Software" <default>Research computer product details</default> ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5661}" <fr-FR>Recherche retraits d’ordinateurs</fr-FR> </CaptionString> TaskID="_default" /> </ExtensionInfo> ExtraFile="ExtensionsExtras.xml" /></Extensions> </Consumer> </ExtrasInfo>
    53. 53. /SearchExtras?MovieName=The+Trey+Research+Company&ReleaseDate=129836124000000000&Category=Bing_Movies
    54. 54. COMMANDES VOCALES
    55. 55. PrincipePermet de lancer uneapplication grâce à lareconnaissance vocale
    56. 56. Mise en avant
    57. 57. Mise en avant
    58. 58. VOICE COMMAND vs SPEECH-TO-TEXT• Uniquement pour lancer une application• Reconnaissance déterministe
    59. 59. DEMO SUDOKAL
    60. 60. ID_CAP_SPEECH_RECOGNITIONID_CAP_MICROPHONEID_CAP_NETWORKING
    61. 61. Créer fichier VCD<VoiceCommandsxmlns="http://schemas.microsoft.com/voicecommands/1.0"> <CommandSet xml:lang="fr-FR" Name="French"> <CommandPrefix>TVShow</CommandPrefix> <Example> Calendrier, Ouvre Lost </Example> <Command Name="OpenTVShow"> <Example> ouvre Lost, Desperate Housewives, etc... </Example> <ListenFor> [ouvre] {TVShows} </ListenFor> <ListenFor> ouvrir {TVShows} </ListenFor> <ListenFor> lance {TVShows} </ListenFor> <Feedback> Ouverture de la série... </Feedback> <Navigate Target="/Pages/TVShowPage.xaml"/> </Command>
    62. 62. VoiceCommandService.InstallCommandSetsFromFileAsync( new Uri("ms-appx:///command.xml"));
    63. 63. NavigationContext.QueryString["voiceCommandName"]; NavigationContext.QueryString["number"]
    64. 64. WALLET
    65. 65. CONTACT STORE
    66. 66. <Capability Name="ID_CAP_CONTACTS" />
    67. 67. Créer storestore = awaitContactStore.CreateOrOpenAsync(ContactStoreSystemAccessMode.ReadOnly, ContactStoreApplicationAccessMode.ReadOnly);
    68. 68. var contact = new StoredContact(store);var props=await contact.GetPropertiesAsync();props[KnownContactProperties.Email] ="longcat@miaou.net";props[KnownContactProperties.Telephone] = "09 99 99 9999";props[KnownContactProperties.Birthdate] = newDateTimeOffset(new DateTime(2012, 12, 25));
    69. 69. Ajouter imageawaitcontact.SetDisplayPictureAsync(stream.AsInputStream());
    70. 70. await contact.SaveAsync();
    71. 71. Extra propertiesvar extprops = await contact.GetExtendedPropertiesAsync();extprops["PictureETAG"] = "AB654654E545D5F";
    72. 72. DEMO LONG CONTACT
    73. 73. Comment mettre en avant monapplication ?
    74. 74. var props = await contact.GetPropertiesAsync();props[KnownContactProperties.Notes] = "contact créé parlapplication LongContact";props[KnownContactProperties.Url] ="miaou://www.longcontact.com/foot";
    75. 75. EXTENSION DE PROTOCOLE
    76. 76. <Extensions> <Protocol Name="miaou" TaskID="_default"NavUriFragment="uri=%s" /> </Extensions>/Protocol?uri=%s
    77. 77. public class MyUriMapper : UriMapperBase { public override Uri MapUri(Uri uri) { if (uri.OriginalString.StartsWith("/Protocol?uri=")) { var exturi = HttpUtility.UrlDecode(uri.OriginalString.Substring(14)); if (exturi == "miaou://www.longcontact.com/foot") return new Uri("/FootPage.xaml", UriKind.Relative); } return uri; } }
    78. 78. QUESTIONS ?
    79. 79. http://www.facebook.com/groups/devwp7/

    ×