<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Julie Knibbe</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/juliekn/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/juliekn/feed.xml</link>
    <description>Tech Evangelist - Windows &amp;amp; Windows Phone</description>
    <lastBuildDate>Wed, 17 Apr 2019 04:09:30 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Les étapes pour soumettre une application Windows Phone 8 sur le Windows Phone Store</title>
      <link>https://docs.microsoft.com/archive/blogs/juliekn/les-tapes-pour-soumettre-une-application-windows-phone-8-sur-le-windows-phone-store</link>
      <pubDate>Fri, 11 Jan 2013 05:56:00 GMT</pubDate>
      <dc:creator><![CDATA[Julie Knibbe]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/juliekn/2013/01/11/les-tapes-pour-soumettre-une-application-windows-phone-8-sur-le-windows-phone-store/</guid>
      <description><![CDATA[Dans cet article, je vais supposer que vous avez r&eacute;ussi &agrave; cr&eacute;er un compte...]]></description>
      <content:encoded><![CDATA[<p>Dans cet article, je vais supposer que vous avez r&eacute;ussi &agrave; cr&eacute;er un compte d&eacute;veloppeur sur le <a href="https://dev.windowsphone.com/" target="_blank">Windows Phone Dev Center</a>. Cela dit, avant de publier votre application, il faut v&eacute;rifier que votre compte est &agrave; jour, notamment que votre &laquo; Tax Profile &raquo; est bien rempli (voir &agrave; la fin de cet article si vous avez besoin d&rsquo;aide).</p>
<p>Pour revoir la liste des crit&egrave;res selon lesquels votre application va &ecirc;tre &eacute;valu&eacute;e : <a href="https://msdn.microsoft.com/en-us/library/windowsphone/develop/hh184843(v=vs.105).aspx" target="_blank">Windows Phone Certification Requirements</a>.</p>
<p>&nbsp;</p>
<h2>Edition du Manifest de l&rsquo;application</h2>
<p>Avant de soumettre, v&eacute;rifiez bien ces 2 points :</p>
<ul>
<li>Tous vos assets sont bien remplis dans le Manifest de votre application, la base !</li>
<li>Les &laquo; Capabilities &raquo; mentionn&eacute;es dans le Manifest correspondent bien aux besoins de votre application. Par exemple, une application de radio n&rsquo;a pas besoin de la capability &laquo; ID_CAP_MEDIALIB_AUDIO &raquo; si elle utilise des flux streaming en ligne, &agrave; moins qu&rsquo;elle n&rsquo;ait besoin d&rsquo;acc&eacute;der &agrave; la biblioth&egrave;que media de l&rsquo;utilisateur.</li>
</ul>
<p>&nbsp;</p>
<p><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Windows Phone Manifest" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/2022.clip_image013_710C0AD3.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/2022.clip_5F00_image013_5F00_710C0AD3.jpg" alt="Windows Phone Manifest" width="756" height="604" border="0" /></p>
<h4>&nbsp;</h4>
<h2>Soumettre votre application pour Windows Phone 8</h2>
<p>Ca y est, vous &ecirc;tes pr&ecirc;ts !</p>
<p><strong>Important pour les jeux</strong> : il faut imp&eacute;rativement avoir un certificat pour <a href="https://msdn.microsoft.com/en-us/library/windowsphone/help/jj206734(v=vs.105).aspx" target="_blank">soumettre vos jeux</a> sur le Windows Store, donc voici quelques sites qui vont vous permettre de g&eacute;n&eacute;rer ces certificats en ligne :</p>
<ul>
<li>Pour soumettre en Europe, les certificats PEGI : <a href="https://wp-rating.pegi.eu/Games/Submit">https://wp-rating.pegi.eu/Games/Submit</a></li>
<li>Pour soumettre aux Etats-Unis / Canda, les certificats ESRB : <a title="https://www.mobileratings.org/CTIA_Microsoft/Home.aspx" href="https://www.mobileratings.org/CTIA_Microsoft/Home.aspx">https://www.mobileratings.org/CTIA_Microsoft/Home.aspx</a></li>
</ul>
<p>Vous trouverez sur <a href="https://msdn.microsoft.com/en-us/library/windowsphone/help/jj206734(v=vs.105).aspx" target="_blank">MSDN</a> la liste de tous les organismes de certification pour les jeux en fonction des pays pour lesquels vous souhaitez soumettre.</p>
<p>&nbsp;</p>
<ul>
<li>
<h3>App Info :</h3>
</li>
</ul>
<p>Dans cette section, choisissez le nom de votre application, sa cat&eacute;gorie, son prix, etc.</p>
<p>Petit conseil, dans le choix des pays, optez pour l&rsquo;option &ldquo;Distribute to all markets except those with stricter content rules&rdquo;. Cela vous &eacute;vitera des refus <img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/2664.wlEmoticon-smile_34624966.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/2664.wlEmoticon_2D00_smile_5F00_34624966.png" alt="Sourire" /></p>
<p>Pour <strong>soumettre une version Beta,</strong> il faut aller dans &ldquo;More Options&rdquo;, idem pour d&eacute;sactiver la publication automatique de votre application suite &agrave; sa certification.</p>
<p>&nbsp;</p>
<ul>
<li>
<h3>Upload and describe your XAP :</h3>
</li>
</ul>
<p><strong>Point tr&egrave;s important : Une soumission doit contenir tous les .xap de votre application. Je m&rsquo;explique : m&ecirc;me si vous ne voulez soumettre qu&rsquo;une mise &agrave; jour pour Windows Phone 8, il faut continuer d&rsquo;inclure les .xap des versions pr&eacute;c&eacute;dentes dans la soumission si vous souhaitez que les utilisateurs qui n&rsquo;ont pas encore Windows Phone 8 puissent continuer &agrave; utiliser votre application. Des d&eacute;veloppeurs se sont fait avoir en ne soumettant que le xap de la version 8, et ont fait disparaitre leur application 7.5 du Store.</strong></p>
<p>&nbsp;</p>
<p>Dans la liste d&eacute;roulante, vous voyez la liste de vos XAP existants. Pour ajouter un XAP pour Windows Phone 8, il faut utiliser le bouton &ldquo;Add New&rdquo;.</p>
<p>&nbsp;</p>
<p><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Windows Phone Upload XAP" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/4188.image_044CC173.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/4188.image_5F00_044CC173.png" alt="Windows Phone Upload XAP" width="704" height="457" border="0" /></p>
<p>&nbsp;</p>
<p>Pensez bien apr&egrave;s le t&eacute;l&eacute;chargement &agrave; d&eacute;crire votre application dans tous les langages pour lesquels elle est disponible.</p>
<p>&nbsp;</p>
<p><strong>Petite astuce pour l&rsquo;upload des images, cliquez sur le bouton &ldquo;Upload All&rdquo; qui vous permet de choisir toutes les images &agrave; t&eacute;l&eacute;charger en une seule fois. </strong>Automatiquement, vos assets vous &ecirc;tre r&eacute;partis dans les bonnes cat&eacute;gories.</p>
<p><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Windows Phone Upload Images" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/2110.image6_4DFB9963.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/2110.image6_5F00_4DFB9963.png" alt="Windows Phone Upload Images" width="584" height="100" border="0" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Cliquez sur &ldquo;Save&rdquo;, puis &ldquo;Submit&rdquo; si vous n&rsquo;avez pas d&rsquo;autres changements &agrave; apporter.</p>
<p>Et Voil&agrave; ! Contemplez le r&eacute;sultat, et attendez patiemment les retours, qui se font sous environ une semaine.</p>
<p>&nbsp;</p>
<p><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Windows Phone Current Submission" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/4263.image11_6DAA732B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/4263.image11_5F00_6DAA732B.png" alt="Windows Phone Current Submission" width="691" height="341" border="0" /></p>
<p>&nbsp;</p>
<h2>Soumission des produits pour l&rsquo; In-App Purchase</h2>
<p>La liste des produits disponibles &agrave; l&rsquo;achat depuis votre application se trouve dans l&rsquo;onglet &laquo; <strong>Products</strong> &raquo;. Sachez que vous pouvez soumettre des produits pour votre application m&ecirc;me si celle-ci n&rsquo;est pas encore valid&eacute;e. La certification d&rsquo;un produit par le Store n&rsquo;est pas tr&egrave;s longue (dans mon cas, une journ&eacute;e) donc ne tardez pas, m&ecirc;me si votre application n&rsquo;est pas encore tout &agrave; fait termin&eacute;e.</p>
<p>&nbsp;</p>
<p><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Windows Phone In App Purchase" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/3583.clip_image0141_01575CC0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/3583.clip_5F00_image0141_5F00_01575CC0.png" alt="Windows Phone In App Purchase" width="756" height="627" border="0" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>Tax Profile</h2>
<p>Voici les diff&eacute;rentes &eacute;tapes &agrave; remplir pour le Tax Profile. Un peu d&rsquo;aide ne fait jamais de mal avec les formulaires am&eacute;ricains <img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/2664.wlEmoticon-smile_34624966.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/2664.wlEmoticon_2D00_smile_5F00_34624966.png" alt="Sourire" /></p>
<p>1/ Choisir le pays :</p>
<p><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Windows Phone Tax Profile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/1440.clip_image002_0012C3E1.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/1440.clip_5F00_image002_5F00_0012C3E1.jpg" alt="Windows Phone Tax Profile" width="756" height="593" border="0" /></p>
<p>2/ Remplir les informations de base : nom, pr&eacute;nom, adresse, etc. Suite &agrave; cette &eacute;tape, un code PIN vous est envoy&eacute; sur votre email (&agrave; bien garder sous la main).</p>
<p>3/ S&eacute;lectionner le type de b&eacute;n&eacute;ficiaire des revenus</p>
<p><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Windows Phone Tax Profile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/8306.clip_image004_77AEEE89.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/8306.clip_5F00_image004_5F00_77AEEE89.jpg" alt="Windows Phone Tax Profile" width="756" height="313" border="0" /></p>
<p>4/ Choisir le type de formulaire, W8-BEN &eacute;tant celui qui s&rsquo;applique dans la plupart des cas.</p>
<p><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Windows Phone Tax Profile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/6242.clip_image006_2142B9BD.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/6242.clip_5F00_image006_5F00_2142B9BD.jpg" alt="Windows Phone Tax Profile" width="755" height="322" border="0" /></p>
<p>5/ Remplir ce fameux formulaire et le &laquo; signer &raquo; avec votre nom complet et le code PIN re&ccedil;u de l&rsquo;adresse &ldquo;<a href="mailto:&ldquo;admin@cticompliance.com">admin@cticompliance.com</a>&rdquo; :</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/1184.clip_image008_31C8F1DB.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/1184.clip_5F00_image008_5F00_31C8F1DB.jpg"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image008" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/8424.clip_image008_thumb_0871A9DD.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/8424.clip_5F00_image008_5F00_thumb_5F00_0871A9DD.jpg" alt="clip_image008" width="756" height="706" border="0" /></a></p>
<p>Exemple d&rsquo;email :</p>
<p><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Windows Phone Tax Profile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/3108.clip_image009_46CC371E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/3108.clip_5F00_image009_5F00_46CC371E.png" alt="Windows Phone Tax Profile" width="605" height="321" border="0" /></p>
<p>6/ et voil&agrave;, c&rsquo;est fini :</p>
<p><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Windows Phone Tax Profile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/7318.clip_image011_055184C5.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/7318.clip_5F00_image011_5F00_055184C5.jpg" alt="Windows Phone Tax Profile" width="756" height="323" border="0" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Merci &agrave; la <a href="https://www.facebook.com/groups/devwp7/" target="_blank">communaut&eacute; Windows Phone</a> pour ses petits conseils !</p>]]></content:encoded>
    </item>
    <item>
      <title>NFC : Comment faire communiquer vos applications Windows Phone 8 et Windows 8</title>
      <link>https://docs.microsoft.com/archive/blogs/juliekn/nfc-comment-faire-communiquer-vos-applications-windows-phone-8-et-windows-8</link>
      <pubDate>Fri, 09 Nov 2012 10:05:21 GMT</pubDate>
      <dc:creator><![CDATA[Julie Knibbe]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/juliekn/2012/11/09/nfc-comment-faire-communiquer-vos-applications-windows-phone-8-et-windows-8/</guid>
      <description><![CDATA[&#160;     Les API Proximity et NFC permettent à deux Windows ou Windows Phone d’échanger des...]]></description>
      <content:encoded><![CDATA[<blockquote>   <p>&#160; </p>    <p><img title="clip_image002" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/6131.clip_image002_0E2DC933.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/6131.clip_5F00_image002_5F00_0E2DC933.png" width="307" height="259" />Les API Proximity et NFC permettent à deux Windows ou Windows Phone d’échanger des données lorsqu’ils sont à proximité. </p>    <p>Comment ça marche ? <b>Un message NFC est utilisé pour configurer une connexion qui va ensuite permettre aux 2 périphériques de communiquer via un socket en Bluetooth ou TCP/IP (Wifi).</b> </p>    <p>Pourquoi c’est bien ? Cela vous évite de perdre du temps sur la configuration de la connexion (et c’est quoi ton mot de passe, etc.). Un seul « tap » vers l’autre téléphone ou PC, et hop la connexion est configurée. En effet, comme on considère que le tap a été volontaire, on se passe des protocoles usuels d’authentification. </p>    <p>Si vous voulez tester, c’est ce que fait votre Windows Phone 8 lorsque vous voulez partager une photo avec un autre téléphone en utilisant la fonction « <b>Tap + Share</b> » (ou « <b>Toucher + Envoyer</b> » en français). </p>    <p>Quand vous souhaitez utiliser ce scénario, le mieux est donc d’avoir le Bluetooth activé :) Si vous préférez passer par le Wifi en TCP/IP, il faudra que les téléphones soient sur le même réseau ou routeur (pas de conflits d’IP, etc.). </p>    <p><b>Remarque importante : Wi-Fi Direct est supporté sur Windows 8, mais pas sur Windows Phone 8. </b></p>    <p>N’oubliez pas que vous pouvez appeler le Launcher <b>connectionSettingsTask</b><b> </b>pour que votre utilisateur puisse aller activer le Bluetooth depuis votre application Windows Phone.</p>    <pre class="csharpcode">ConnectionSettingsTask connectionSettingsTask = <span class="kwrd">new</span> ConnectionSettingsTask();
connectionSettingsTask.ConnectionSettingsType = ConnectionSettingsType.Bluetooth;
connectionSettingsTask.Show();</pre>
  

  <p>&#160; </p>

  <p>Voyons comment créer une petite application qui communique avec d’autres instances, au travers de 3 étapes : </p>

  <ul>
    <li>Rechercher les autres instances de l’application et établir la communication </li>

    <li>Envoyer un message </li>

    <li>Recevoir un message</li>
  </ul>

  <p>Le sample est téléchargeable ici : <a title="3146.PeerCommunications.zip" href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/3146.PeerCommunications.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61/3146.PeerCommunications.zip">PeerCommunications.zip</a>&#160; </p>

  <p>&#160; </p>

  <p><b></b></p>

  <h2>Etape 1 – Rechercher des Peers</h2>

  <p>Comme dans l’article précédent, vous initialisez le ProximityDevice au lancement de l’application (ou au moment opportun), et en plus, vous allez rechercher d’autres instances de votre application avec le <b>PeerFinder </b>: </p>

  <p>&#160;</p>

  <pre class="csharpcode">        <span class="kwrd">private</span> <span class="kwrd">void</span> InitializeProximityDevice()
        {
            <span class="kwrd">if</span> (<span class="kwrd">this</span>.device == <span class="kwrd">null</span>)
            {
                <span class="kwrd">this</span>.device = ProximityDevice.GetDefault();
            }

            <span class="kwrd">if</span> (<span class="kwrd">this</span>.device != <span class="kwrd">null</span>)
            {
                <span class="kwrd">this</span>.device.DeviceArrived += ProximityDeviceArrived;
                <span class="kwrd">this</span>.device.DeviceDeparted += ProximityDeviceDeparted;
                lblStatus.Text = MSG_NFC_ACTIVE;

                PeerFinder.TriggeredConnectionStateChanged += OnTriggeredConnectionStateChanged;

                <span class="rem">// Start finding peer apps, while making this app discoverable by peers</span>
                PeerFinder.Start();
            }
            <span class="kwrd">else</span>
            {
                lblStatus.Text = MSG_NFC_NOT_FOUND;
            }
        }</pre>

  <pre class="csharpcode">&#160;</pre>
  

  <p>Le PeerFinder va rechercher pour vous les autres instances de votre application, et rendre la vôtre trouvable par les autres. Automatiquement quand un autre Windows Phone va s’approcher de votre téléphone, ce dernier va lui proposer de lancer une instance de l’application : </p>

  <p>&#160; </p>

  <p><img title="clip_image004" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/4064.clip_image004_2C980A1C.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/4064.clip_5F00_image004_5F00_2C980A1C.jpg" width="243" height="405" /> </p>

  <p>&#160; </p>

  <p>Cela fonctionne aussi de Windows Phone vers Windows 8 et inversement. Pour vous connecter à Windows 8 depuis Windows Phone par exemple, vous allez juste spécifier l’identité de l’application à rechercher avec AlternateIdentities :</p>

  <pre class="csharpcode"><span class="kwrd">if</span> (device != <span class="kwrd">null</span>)
{
PeerFinder.AlternateIdentities.Add(<span class="str">&quot;Windows&quot;</span>, <span class="str">&quot;my Win8 appID&quot;</span>);
PeerFinder.TriggeredConnectionStateChanged += OnTriggeredConnectionStateChanged;
PeerFinder.Start();
}</pre>
  

  <p>Ensuite, vous allez pouvoir récupérer les infos concernant la connexion ad-hoc créée par le PeerFinder en vous abonnant à l’événement TriggeredConnectionStateChanged :</p>

  <pre class="csharpcode">
        <span class="kwrd">private</span> <span class="kwrd">void</span> OnTriggeredConnectionStateChanged(<span class="kwrd">object</span> sender, TriggeredConnectionStateChangedEventArgs args)
        {
            <span class="kwrd">switch</span> (args.State)
            {
                <span class="kwrd">case</span> TriggeredConnectState.Listening:
                    lblStatus.Text = <span class="str">&quot;Listening&quot;</span>;
                    <span class="kwrd">break</span>;
                <span class="rem">// Connecting as hostbreak;</span>
                <span class="kwrd">case</span> TriggeredConnectState.PeerFound:
                    lblStatus.Text = <span class="str">&quot;Peer Found&quot;</span>;
                    <span class="kwrd">break</span>;
                <span class="rem">// Proximity gesture is complete and user can pull their devices away. Remaining work is to // establish the connection using a different transport, like TCP/IP or Bluetoothbreak;</span>
                <span class="kwrd">case</span> TriggeredConnectState.Connecting:
                    lblStatus.Text = <span class="str">&quot;Connecting&quot;</span>;
                    <span class="kwrd">break</span>;
                <span class="rem">// Connecting as a clientbreak;</span>
                <span class="kwrd">case</span> TriggeredConnectState.Completed:
                    <span class="rem">// Connection completed, retrieve the socket over which to communicate</span>
                    streamSocket = args.Socket;
                    lblStatus.Text = <span class="str">&quot;Connection completed&quot;</span>;
                    <span class="kwrd">break</span>;
                <span class="kwrd">case</span> TriggeredConnectState.Canceled:
                    lblStatus.Text = <span class="str">&quot;Connection canceled&quot;</span>;
                    <span class="kwrd">break</span>;
                <span class="kwrd">case</span> TriggeredConnectState.Failed:
                    lblStatus.Text = <span class="str">&quot;Connection canceled&quot;</span>;
                    <span class="kwrd">break</span>;
            }
        }</pre>
  

  <p>&#160; </p>

  <p>Cette fonction vous renvoie notamment dans ses arguments le <b>socket</b> initialisé pour la connexion entre les deux périphériques. C’est ensuite ce socket que vous allez utiliser pour échanger les données. </p>

  <p>Vous êtes complètement libres d’utiliser le protocole de votre choix pour la communication une fois le socket initialisé. Dans la suite de l’article, je vais juste échanger une chaine de caractères entre les deux pour vous donner un exemple. </p>

  <p>&#160; </p>

  <h2>Etape 2 : Envoyer un message</h2>

  <p>J’ajoute un bouton à mon interface pour déclencher l’envoi du message :</p>

  <pre class="csharpcode">        <span class="kwrd">private</span> <span class="kwrd">void</span> SendMessageButton_Click(<span class="kwrd">object</span> sender, RoutedEventArgs e)
        {
            SendMessage(<span class="str">&quot;YATTTA!&quot;</span>);
        }</pre>
  

  <p>&#160; </p>

  <p>Pour envoyer un message, il suffit de créer un DataWriter à partir du socket que vous avez récupéré et d’y ajouter les données à transmettre :</p>

  <pre class="csharpcode">        <span class="kwrd">private</span> async <span class="kwrd">void</span> SendMessage(<span class="kwrd">string</span> message)
        {
            <span class="kwrd">if</span> (streamSocket != <span class="kwrd">null</span>)
            {
                <span class="kwrd">if</span> (dataWriter == <span class="kwrd">null</span>)
                    dataWriter = <span class="kwrd">new</span> DataWriter(streamSocket.OutputStream);

                dataWriter.WriteInt32(message.Length);
                await dataWriter.StoreAsync();

                dataWriter.WriteString(message);
                await dataWriter.StoreAsync();
            }
        }</pre>
  

  <p>&#160; </p>

  <p>&#160; </p>

  <h2>Etape 3 : Recevoir un message</h2>

  <p>De la même façon, j’attends la réception d’un message avec ma fonction asynchrone GetMessage. Celle-ci sera complétée quand elle aura un message à lire.</p>

  <pre class="csharpcode">    <span class="kwrd">private</span> async <span class="kwrd">void</span> GetMessageButton_Click(<span class="kwrd">object</span> sender, RoutedEventArgs e)
    {
            <span class="kwrd">string</span> s = await GetMessage();
            lblMsg.Text = s;
    }</pre>

  <p></p>

  <p>&#160;</p>

  <p>Pour recevoir un message, il suffit de créer un DataReader à partir du socket que vous avez récupéré:</p>

  <pre class="csharpcode">        <span class="kwrd">private</span> async Task&lt;<span class="kwrd">string</span>&gt; GetMessage()
        {
            <span class="kwrd">if</span> (streamSocket != <span class="kwrd">null</span>)
            {
                <span class="kwrd">if</span> (dataReader == <span class="kwrd">null</span>) dataReader = <span class="kwrd">new</span> DataReader(streamSocket.InputStream);
                await dataReader.LoadAsync(4);
                <span class="kwrd">uint</span> messageLen = (<span class="kwrd">uint</span>)dataReader.ReadInt32();
                await dataReader.LoadAsync(messageLen);
                <span class="kwrd">return</span> dataReader.ReadString(messageLen);
            }
            <span class="kwrd">else</span> <span class="kwrd">return</span> <span class="kwrd">null</span>;
        }</pre>
  

  <p>&#160; </p>

  <p>N’oubliez pas de faire le ménage derrière vous en partant : </p>

  <p>&#160;</p>

  <pre class="csharpcode">        <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> OnNavigatingFrom(NavigatingCancelEventArgs e)
        {
            PeerFinder.Stop();
            CloseSocket();
        }

        <span class="kwrd">private</span> <span class="kwrd">void</span> CloseSocket()
        {
            <span class="kwrd">if</span> (streamSocket != <span class="kwrd">null</span>)
            {
                streamSocket.Dispose();
            }

            <span class="kwrd">if</span> (dataWriter != <span class="kwrd">null</span>)
            {
                dataWriter.Dispose();
            }

            <span class="kwrd">if</span> (dataReader != <span class="kwrd">null</span>)
            {
                dataReader.Dispose();
            }
        }</pre>
  

  <p>&#160; </p>

  <p>Vous pouvez télécharger le <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/3146.PeerCommunications.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61/3146.PeerCommunications.zip">code source</a> correspondant à cet exemple ici : <a title="3146.PeerCommunications.zip" href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/3146.PeerCommunications.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61/3146.PeerCommunications.zip">PeerCommunications.zip</a> </p>

  <p>Je vous conseille aussi de jeter un coup d’œil aux <a href="https://code.msdn.microsoft.com/windowsapps/Proximity-Sample-88129731">samples Windows 8</a> sur ce sujet, notamment pour ceux qui voudraient voir comment cela fonctionne en JavaScript. Petit indice, ce sont les mêmes API, juste pas le même langage, donc pas de surprises <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Sourire" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/7455.wlEmoticon-smile_010175E0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/7455.wlEmoticon_2D00_smile_5F00_010175E0.png" /> </p>

  <p><b>Quid de l’interop avec un device Android ou autre ? </b>Pour l’instant, il n’y a pas de standard pour la communication NFC en Peer-to-Peer. Du coup, Android, Windows/Windows Phone et Meego ont tous leurs propres implémentations, et ne peuvent communiquer entre eux.</p></blockquote>]]></content:encoded>
    </item>
    <item>
      <title>Lire/Ecrire des tags NFC depuis Windows 8 ou Windows Phone 8</title>
      <link>https://docs.microsoft.com/archive/blogs/juliekn/lireecrire-des-tags-nfc-depuis-windows-8-ou-windows-phone-8</link>
      <pubDate>Fri, 09 Nov 2012 09:35:50 GMT</pubDate>
      <dc:creator><![CDATA[Julie Knibbe]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/juliekn/2012/11/09/lireecrire-des-tags-nfc-depuis-windows-8-ou-windows-phone-8/</guid>
      <description><![CDATA[Pour vérifier si vos tags fonctionnent bien (ou pour les fainéants ), avant même de lancer Visual...]]></description>
      <content:encoded><![CDATA[<p>Pour vérifier si vos tags fonctionnent bien (ou pour les fainéants <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Sourire" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/7824.wlEmoticon-smile_5BB375F7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/7824.wlEmoticon_2D00_smile_5F00_5BB375F7.png" />), avant même de lancer Visual Studio, vous pouvez utiliser une application qui lit/écrit des tags appelée <a href="https://www.windowsphone.com/fr-fr/store/app/nfc-interactor/4e1598fe-4885-4e2b-9c69-8d3f882c545b">NFC Interactor</a>. La version d’essai est gratuite et limitée à 10 écritures de tags. </p>  <p>Comme ce serait bien trop facile, nous allons en écrire une nous-même. Pour cela, il faut utiliser l’API <a href="https://msdn.microsoft.com/en-US/library/windows/apps/xaml/windows.networking.proximity">Windows Proximity</a>. Vous avez de la chance, grâce au noyau partagé entre Windows et Windows Phone, cette <b>Proximity</b> <b>API fonctionne exactement de la même façon depuis les deux OS</b>. J’ai écrit l’exemple qui suit pour Windows Phone 8, mais sachez que le même code fonctionnerait pour Windows 8.</p>  <p>Dans cet article, je vais supposer que vous connaissez bien les bases du développement pour Windows Phone. Si ce n’est pas le cas, vous trouverez une série de tutoriels pour vous former sur <a href="https://msdn.microsoft.com/fr-fr/windowsphone/">MSDN</a> et vous pouvez suivre l’actu sur le <a href="https://blogs.msdn.com/b/pierreca/">blog de Pierre Cauchois</a>.</p>  <p>&#160;</p>  <p>Pour démarrer, créez un nouveau projet Windows Phone 8 (ou Windows 8) dans Visual Studio. Parmi les modèles, prenez le plus simple « Windows Phone App », et choisissez bien sûr Windows Phone 8.0 pour la version de l’OS. Vous pouvez télécharger l’exemple de code ici : <a title="5353.ReadWriteNFCTags.zip" href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/5353.ReadWriteNFCTags.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61/5353.ReadWriteNFCTags.zip">ReadWriteNFCTags.zip</a></p>  <p>&#160;</p>  <p>Avant de commencer le développement, 2 choses :</p>  <p>- précisez dans le <b>manifeste de l’application</b> – fichier WMAppManifest.xml - que vous allez utiliser du NFC en ajoutant la capability « <b>ID_CAP_PROXIMITY</b> ». Sans cette précision, votre application ne pourra pas être déployée.</p>  <p>- Vous pouvez aussi ajouter dans l’onglet « Requirements » du manifeste que vous ne souhaitez installer l’application que sur des téléphones équipés de NFC avec « <b>ID_REQ_NFC </b>».</p>  <p>&#160;</p>  <p><img title="clip_image002" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/3348.clip_image002_6E8F2580.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/3348.clip_5F00_image002_5F00_6E8F2580.jpg" width="584" height="492" /></p>  <p>&#160;</p>  <h2>Etape 1 : Initialiser la connexion au NFC</h2>  <p>Pour que votre application soit « NFC » aware, c’est-à-dire qu’elle entende si on lui envoie des infos via NFC et qu’elle puisse en émettre, il va falloir initialiser un <b>ProximityDevice</b> au chargement de votre page principale. Pour écrire du code bien propre, je vous conseille de mettre toutes les fonctions spécifiques NFC dans un helper dédié. Ici, je vais au plus simple :</p>  <pre class="csharpcode">        ProximityDevice device { get; set; }
        <span class="kwrd">long</span> PublishedMessageID = -1;
        <span class="kwrd">long</span> SubscribedMessageID = -1;

        <span class="rem">// Constructor</span>
        <span class="kwrd">public</span> MainPage()
        {
            InitializeComponent();
            
            <span class="kwrd">this</span>.Loaded += MainPage_Loaded;

        }

        <span class="kwrd">void</span> MainPage_Loaded(<span class="kwrd">object</span> sender, RoutedEventArgs e)
        {
            <span class="kwrd">this</span>.InitializeProximityDevice();
        }</pre>


<p>&#160;</p>

<p>Pour initialiser votre ProximityDevice, une fonction toute simple : <a href="https://msdn.microsoft.com/fr-FR/library/windows/apps/windows.networking.proximity.proximitydevice.getdefault">GetDefault</a>, qui vous retourne l’instance du ProximityDevice utilisé par défaut. Dans mon application, je vais juste afficher dans un TextBlock baptisé « lblTagStatus » l’état de mon device.</p>

<pre class="csharpcode">        <span class="kwrd">private</span> <span class="kwrd">void</span> InitializeProximityDevice() 
        {
                <span class="kwrd">if</span> (<span class="kwrd">this</span>.device == <span class="kwrd">null</span>) {
                    <span class="kwrd">this</span>.device = ProximityDevice.GetDefault();
                }

                <span class="kwrd">if</span> (<span class="kwrd">this</span>.device != <span class="kwrd">null</span>)
                {
                    <span class="kwrd">this</span>.device.DeviceArrived += ProximityDeviceArrived;
                    <span class="kwrd">this</span>.device.DeviceDeparted += ProximityDeviceDeparted;
                    lblTagStatus.Text = MSG_NFC_ACTIVE;
                } 
                <span class="kwrd">else</span> 
                { 
                    lblTagStatus.Text = MSG_NFC_NOT_FOUND; 
                }
        }</pre>


<p>&#160;</p>

<h2>Etape 2 : Ecrire un message sur un tag NFC</h2>

<p>Chose à savoir, il existe un format standard pour les messages échangés en NFC appelé <b>NDEF</b>, pour <b>NFC Data Exchange Format</b>. Vous n’êtes pas obligés de l’utiliser, mais c’est toujours mieux si vous envisagez des développements multiplateformes. </p>

<p>Bonne nouvelle, il existe une <a href="https://ndef.codeplex.com/"><b>librairie NDEF pour Windows 8</b></a><b> </b>sur CodePlex que vous pouvez récupérer, et qui fonctionne très bien aussi sur Windows Phone (c’est ça, la magie des API en commun). Pour l’ajouter à votre application, un clic-droit sur le projet dans Visual Studio, lancer NuGet, rechercher NDEF, installer et hop c’est terminé.</p>

<p>&#160;</p>

<p><img title="clip_image004" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/3884.clip_image004_2744F586.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/3884.clip_5F00_image004_5F00_2744F586.jpg" width="653" height="435" /></p>

<p>&#160;</p>

<p>Pour plus de détails sur cette librairie, <a href="https://ndef.codeplex.com/">https://ndef.codeplex.com/</a></p>

<p>Voici la structure d’un message NDEF. Comme vous le voyez, il peut contenir plusieurs enregistrements.</p>

<p>&#160;</p>

<p><img title="clip_image006" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="clip_image006" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/1780.clip_image006_71746466.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/1780.clip_5F00_image006_5F00_71746466.jpg" width="550" height="347" /></p>

<p>&#160;</p>

<p>Pour construire un message NDEF avec cette librairie, je vais avoir besoin des using suivants dans ma classe :</p>

<pre class="csharpcode"><span class="kwrd">using</span> NdefLibrary.Ndef;
<span class="kwrd">using</span> System.Runtime.InteropServices.WindowsRuntime;</pre>


<p>&#160;</p>

<p>Et voici la fonction que j’appelle pour écrire sur un tag (que vous pouvez appeler au clic sur un bouton) :</p>

<p>&#160;</p>

<pre class="csharpcode">  <span class="kwrd">private</span> <span class="kwrd">void</span> WriteNDEFToNfc() 
        {
            <span class="rem">// Initialize Smart Poster record with URI, Action + 1 Title</span>
            var spRecord = <span class="kwrd">new</span> NdefSpRecord
            {
                Uri = <span class="str">&quot;https://msdn.microsoft.com/windows&quot;</span>,
                NfcAction = NdefSpActRecord.NfcActionType.DoAction
            };

            spRecord.AddTitle(<span class="kwrd">new</span> NdefTextRecord
            {
                Text = <span class="str">&quot;Windows Dev Center&quot;</span>,
                LanguageCode = <span class="str">&quot;en&quot;</span>
            });

            <span class="rem">// Add record to NDEF message</span>
            var msg = <span class="kwrd">new</span> NdefMessage { spRecord };

            <span class="rem">// Publish NDEF message to a tag</span>
            <span class="kwrd">if</span> (device != <span class="kwrd">null</span>)
            {
                PublishedMessageID = device.PublishBinaryMessage(<span class="str">&quot;NDEF:WriteTag&quot;</span>, msg.ToByteArray().AsBuffer());
                Debug.WriteLine(<span class="str">&quot;Published Message. ID is {0}&quot;</span>, PublishedMessageID);

                lblSender.Text = <span class="str">&quot;Published Message. ID is: &quot;</span> + PublishedMessageID.ToString();
                lblMessageContent.Text = <span class="str">&quot;Content: &quot;</span> + spRecord.Uri.ToString();
                lblMessageType.Text = <span class="str">&quot;Type: &quot;</span> + spRecord.Type.ToString();
            }

            <span class="rem">// Alternative: send NDEF message to another NFC device</span>
            <span class="rem">//device.PublishBinaryMessage(&quot;NDEF&quot;, msg.ToByteArray().AsBuffer());</span>
        }</pre>


<p>&#160;</p>

<p>J’ai créé un enregistrement (NdefTextRecord), que j’ai ajouté au message (NdefMessage). Ensuite, si mon device NFC est bien initialisé, j’envoie ce message et je récupère son ID (PublishedMessageID). Cette fonction marche très bien, à condition que vos tags soient bien formatés avant.</p>

<p>Une fois que mon tag contient le message, je n’ai plus qu’à le passer près du téléphone pour qu’il soit reconnu. Aucune application à lancer, NFC le reconnait directement.</p>

<p>Petite remarque, Windows Phone étant un OS à la sécurité bien pensée, il y aura toujours un prompt demandant l’approbation de l’utilisateur à la lecture d’un tag. Voilà à quoi ce prompt ressemble :</p>

<p>&#160;</p>

<p><img title="clip_image008" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="clip_image008" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/2275.clip_image008_743A1959.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/2275.clip_5F00_image008_5F00_743A1959.jpg" width="214" height="357" /></p>

<p>&#160;</p>

<h2>Etape 3 : Lire un message depuis un tag NFC</h2>

<p>Pour lire un message depuis un tag, il va falloir dire au ProximityDevice de votre application qu’il faut qu’il s’intéresse à un certain type de messages, ici NDEF, en appelant la fonction SubscribeForMessage, et lui préciser quoi faire en cas de réception, ici appeler la fonction messageReceived.</p>

<p>Dans mon exemple, j’ai ajouté un bouton Read dans ma page principale qui m’abonne à un type de message (et me désabonne des anciens si besoin) :</p>

<p>&#160;</p>

<pre class="csharpcode">        <span class="kwrd">private</span> <span class="kwrd">void</span> btnReadNFC_Click(<span class="kwrd">object</span> sender, RoutedEventArgs e)
        {
            InitLabels();

            <span class="rem">// Make sure NFC is supported</span>
            <span class="kwrd">if</span> (device != <span class="kwrd">null</span>)
            {
                <span class="kwrd">if</span> (SubscribedMessageID != -1)
                {
                    device.StopSubscribingForMessage(SubscribedMessageID);
                }
                <span class="rem">//Suscribe to NDEF new message</span>
                SubscribedMessageID = device.SubscribeForMessage(<span class="str">&quot;NDEF&quot;</span>, messageReceived);
                Debug.WriteLine(<span class="str">&quot;Subscribed Message. ID is {0}&quot;</span>, SubscribedMessageID);
            }
        }</pre>

<p></p>

<p>&#160;</p>

<p>Si je passe mon tag avec un message NDEF près de mon téléphone, la fonction suivante messageReceived sera appelée. Celle-ci va récupérer le message et l’analyser en fonction de son type : SpRecord, UriRecord, ou TextRecord.</p>

<p>&#160;</p>

<pre class="csharpcode"> <span class="kwrd">private</span> <span class="kwrd">void</span> messageReceived(ProximityDevice sender, ProximityMessage message)
        {
            var rawMsg = message.Data.ToArray();
            var ndefMessage = NdefMessage.FromByteArray(rawMsg);
            SubscribedMessageID = -1;

            <span class="rem">// Loop over all records contained in the NDEF message</span>
            <span class="kwrd">foreach</span> (NdefRecord record <span class="kwrd">in</span> ndefMessage)
            {
                <span class="rem">// Check the type of each record - handling a Smart Poster, URI and Text record in this example</span>
                var specializedType = record.CheckSpecializedType(<span class="kwrd">false</span>);
                <span class="kwrd">if</span> (specializedType == <span class="kwrd">typeof</span>(NdefSpRecord))
                {
                    <span class="rem">// Convert and extract Smart Poster info</span>
                    var spRecord = <span class="kwrd">new</span> NdefSpRecord(record);

                    Dispatcher.BeginInvoke(() =&gt; {
                        lblSender.Text = <span class="str">&quot;Message received from: &quot;</span> + sender.DeviceId;
                        lblMessageContent.Text = <span class="str">&quot;Content: &quot;</span> + spRecord.Uri;
                        lblMessageType.Text = <span class="str">&quot;Type: &quot;</span> + spRecord.Type.ToString();
                    });
                }
                <span class="kwrd">else</span> <span class="kwrd">if</span> (specializedType == <span class="kwrd">typeof</span>(NdefUriRecord))
                {
                    <span class="rem">// Convert and extract Smart Poster info</span>
                    var uriRecord = <span class="kwrd">new</span> NdefUriRecord(record);
                    Dispatcher.BeginInvoke(() =&gt;
                    {
                        lblSender.Text = <span class="str">&quot;Message received from: &quot;</span> + sender.DeviceId;
                        lblMessageContent.Text = <span class="str">&quot;Content: &quot;</span> + uriRecord.Uri;
                        lblMessageType.Text = <span class="str">&quot;Type: &quot;</span> + uriRecord.Type.ToString();
                    });
                }
                <span class="kwrd">else</span> <span class="kwrd">if</span> (specializedType == <span class="kwrd">typeof</span>(NdefTextRecord))
                {
                    <span class="rem">// Convert and extract Smart Poster info</span>
                    var textRecord = <span class="kwrd">new</span> NdefTextRecord(record);
                    Dispatcher.BeginInvoke(() =&gt;
                    {
                        lblSender.Text = <span class="str">&quot;Message received from: &quot;</span> + sender.DeviceId;
                        lblMessageContent.Text = <span class="str">&quot;Content: &quot;</span> + textRecord.Text;
                        lblMessageType.Text = <span class="str">&quot;Type: &quot;</span> + textRecord.Type.ToString();
                    });
                }
            }
        }</pre>

<p></p>

<p>&#160;</p>

<p>Tada ! Maintenant, vous savez lire des tags, et même modifier leurs contenus.</p>

<p>Vous pouvez télécharger le code source correspondant à cet exemple ici : <a title="5353.ReadWriteNFCTags.zip" href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/5353.ReadWriteNFCTags.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61/5353.ReadWriteNFCTags.zip">ReadWriteNFCTags.zip</a></p>

<p>Dans le prochain article, nous verrons comment <b><a href="https://blogs.msdn.com/b/juliekn/archive/2012/11/09/nfc-comment-faire-communiquer-vos-applications-windows-phone-8-et-windows-8.aspx">communiquer avec une autre instance de votre application</a></b>, pratique pour des jeux par exemple.</p>

<p>&#160;</p>

<h4>Liens utiles</h4>

<ul>
  <li>Application NFC Interactor pour Windows Phone 8: <a href="https://www.nfcinteractor.com/download-nfc-interactor-for-windows-phone-8/">https://www.nfcinteractor.com/download-nfc-interactor-for-windows-phone-8/</a> </li>

  <li>Proximity API for Windows Phone : <a href="https://msdn.microsoft.com/en-US/library/windowsphone/develop/jj207060(v=vs.105).aspx">https://msdn.microsoft.com/en-US/library/windowsphone/develop/jj207060(v=vs.105).aspx</a> </li>

  <li>Understanding NFC Data Exchange Format (NDEF) messages : <a href="https://www.developer.nokia.com/Community/Wiki/Understanding_NFC_Data_Exchange_Format_(NDEF)_messages">https://www.developer.nokia.com/Community/Wiki/Understanding_NFC_Data_Exchange_Format_(NDEF)_messages</a> </li>

  <li>Blog de Pierre Cauchois sur Windows Phone 8 : <a href="https://blogs.msdn.com/b/pierreca/">https://blogs.msdn.com/b/pierreca/</a> </li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>NFC et la Proximité sur Windows 8 et Windows Phone 8</title>
      <link>https://docs.microsoft.com/archive/blogs/juliekn/nfc-et-la-proximit-sur-windows-8-et-windows-phone-8</link>
      <pubDate>Fri, 09 Nov 2012 09:25:00 GMT</pubDate>
      <dc:creator><![CDATA[Julie Knibbe]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/juliekn/2012/11/09/nfc-et-la-proximit-sur-windows-8-et-windows-phone-8/</guid>
      <description><![CDATA[A travers l&rsquo;initiative Cityzi, op&eacute;rateurs et industriels investissent dans le...]]></description>
      <content:encoded><![CDATA[<p>A travers l&rsquo;initiative <a href="https://www.cityzi.fr/">Cityzi</a>, op&eacute;rateurs et industriels investissent dans le d&eacute;ploiement de NFC en France, en collaboration avec les &eacute;diteurs d&rsquo;applications. L&rsquo;objectif, proposer des services mobiles innovants aux utilisateurs et acc&eacute;l&eacute;rer le d&eacute;veloppement du m-commerce.</p>
<p><em>&laquo; Apr&egrave;s l'av&egrave;nement des smartphones et de l'internet mobile, qui ont d&eacute;j&agrave; transform&eacute; le t&eacute;l&eacute;phone portable en outil du quotidien, la technologie sans contact ou NFC ajoute une nouvelle dimension &agrave; la mobilit&eacute; gr&acirc;ce &agrave; cette technologie, les fran&ccedil;ais pourront bient&ocirc;t utiliser leur mobile Cityzi pour payer chez les commer&ccedil;ants, prendre les transports en commun, cumuler des points de fid&eacute;lit&eacute; ou lire des informations contextuelles gr&acirc;ce &agrave; des &eacute;tiquettes intelligentes Les applications permises par cette technologie sont extr&ecirc;mement vari&eacute;es, et <strong>la plupart restent &agrave; inventer</strong>. &raquo; </em>Laurent Jullien, Pr&eacute;sident de l&rsquo;Association Fran&ccedil;aise du Sans Contact Mobile (AFSCM)</p>
<p>&nbsp;</p>
<p><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="clip_image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/7608.clip_image002_3C3123C6.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/7608.clip_5F00_image002_5F00_3C3123C6.jpg" alt="clip_image002" width="566" height="310" border="0" /></p>
<p>&nbsp;</p>
<p>En effet, NFC (Near Field Communications) est une technologie qui, comme son nom l&rsquo;indique, permet l'&eacute;change d'informations sans contact entre des p&eacute;riph&eacute;riques &agrave; faible distance, de l&rsquo;ordre de 3 ou 4 cm.</p>
<p>Microsoft, en &eacute;quipant <a href="https://www.nxp.com/news/press-releases/2012/10/nxp-delivers-nfc-to-microsofts-windows-phone-8-devices.html">Windows Phone 8</a> et <a href="https://msdn.microsoft.com/en-us/library/windows/hardware/hh770524.aspx">Windows 8</a> de contr&ocirc;leurs NFC, ouvre la porte de ces nouveaux <strong>sc&eacute;narios</strong> aux d&eacute;veloppeurs :</p>
<p>- <strong>Partager du contenu</strong> <strong>entre 2 p&eacute;riph&eacute;riques</strong> comme des contacts, urls, informations de connexion, etc. Si vous voulez tester, c&rsquo;est ce que fait votre Windows Phone 8 lorsque vous voulez partager une photo &agrave; un autre t&eacute;l&eacute;phone en utilisant la fonction &laquo; <strong>Tap + Share</strong> &raquo; ou &laquo; <strong>Toucher + Envoyer</strong> &raquo; en fran&ccedil;ais.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="clip_image004" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/4137.clip_image004_48529DED.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/4137.clip_5F00_image004_5F00_48529DED.jpg" alt="clip_image004" width="506" height="248" border="0" /></p>
<p>&nbsp;</p>
<p>- <strong>Acqu&eacute;rir du contenu</strong> : lire des donn&eacute;es depuis un tag NFC. Par exemple, partager votre localisation sur un r&eacute;seau social gr&acirc;ce au tag situ&eacute; dans votre restaurant, r&eacute;cup&eacute;rer une url, conna&icirc;tre l&rsquo;&eacute;tat du stock disponible d&rsquo;un article, etc. Vous pouvez avoir de l&rsquo;imagination ! NFC poss&egrave;de aussi un mode <strong>write</strong>. Ainsi, vous allez pouvoir &eacute;crire vous-m&ecirc;me des infos dans vos tags.</p>
<p>&nbsp;</p>
<p><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="clip_image006" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/1423.clip_image006_54E04B09.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/1423.clip_5F00_image006_5F00_54E04B09.jpg" alt="clip_image006" width="216" height="291" border="0" /></p>
<p>&nbsp;</p>
<p>- <strong>Emettre du contenu</strong> : votre puce NFC vous permet aussi l&rsquo;<strong>&eacute;mulation de cartes</strong>, et l&agrave; on arrive &agrave; un sc&eacute;nario possible bien connu, celui du portefeuille &eacute;lectronique. L&rsquo;application Windows Phone 8 Wallet, ou Portefeuille en fran&ccedil;ais, stocke vos moyens de paiement, cartes de membres, cartes de fid&eacute;lit&eacute; et bons de r&eacute;ductions et surtout, vous permet de les utiliser par simple contact gr&acirc;ce au NFC. Je vous entends d&eacute;j&agrave; poser la question de la s&eacute;curit&eacute;, oui, il y a bien un code PIN sp&eacute;cifique pour le Wallet. Personne ne pourra utiliser vos moyens de paiement par simple contact sans votre consentement. Imaginez sinon le nombre de transactions possibles dans le m&eacute;tro !</p>
<p>&nbsp;</p>
<p><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="clip_image008" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/56/61/metablogapi/1423.clip_image008_57A5FFFC.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-61-metablogapi/1423.clip_5F00_image008_5F00_57A5FFFC.jpg" alt="clip_image008" width="529" height="226" border="0" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Quand on sait que <strong>RFID</strong> permet aussi d&rsquo;&eacute;changer des donn&eacute;es ou de lire des tags, on est en droit se demander<strong> quelles sont les diff&eacute;rences avec NFC ?</strong> En r&eacute;sum&eacute; :</p>
<ul>
<li>RFID et NFC utilisent tous 2 les radiofr&eacute;quences pour communiquer, et en cela, on peut voir NFC comme une extension des technologies RFID.</li>
<li>RFID peut &ecirc;tre utilis&eacute; avec n&rsquo;importe quelle fr&eacute;quence ou standard, alors que NFC requiert du 13.56 MHz.</li>
<li>RFID fonctionne &agrave; longue distance (par longue, j&rsquo;entends jusqu&rsquo;&agrave; une centaine de m&egrave;tres, pas 3km) et c&rsquo;est l&agrave; la <span style="text-decoration: underline;">principale</span> diff&eacute;rence. Le fait que NFC fonctionne &agrave; tr&egrave;s courte distance permet de supposer que l&rsquo;action a &eacute;t&eacute; voulue (e.g. scanner un tag, &laquo; tap &raquo; pour communiquer avec un autre t&eacute;l&eacute;phone, effectuer un paiement). Je sch&eacute;matise mais vous voyez le principe. A l&rsquo;inverse, RFID ne conviendrait pas des sc&eacute;narios type m-commerce, pour des raisons &eacute;videntes de s&eacute;curit&eacute; (eavesdropping, man-in-the-middle attacks), alors que c&rsquo;est une techno tr&egrave;s pratique pour le tracking.</li>
</ul>
<p>&nbsp;</p>
<p>Et si maintenant on commen&ccedil;ait &agrave; jouer un peu avec ? Avant toute chose, &eacute;quipez-vous du mat&eacute;riel n&eacute;cessaire :</p>
<ul>
<li>Un bon PC &eacute;quip&eacute; de Windows 8 et Visual Studio 2012. Il existe des versions gratuites, appel&eacute;es &laquo; express &raquo;, de nos outils pour le d&eacute;veloppement d&rsquo;applications Windows 8 et Windows Phone 8.</li>
<li>Un Windows Phone 8 ou Windows 8 &eacute;quip&eacute; d&rsquo;un contr&ocirc;leur NFC &ndash; de tr&egrave;s beaux mod&egrave;les sont sortis !</li>
<li>En option : des SmartTags NFC, si vous voulez tester. Vous en trouverez facilement sur Amazon, mais pensez &agrave; les prendre d&eacute;j&agrave; format&eacute;s, &ccedil;a vous fera gagner du temps (conseil d&rsquo;amie).</li>
</ul>
<p>&nbsp;</p>
<p>Je vous ai &eacute;crit quelques articles pour d&eacute;buter avec NFC pour Windows:</p>
<ul>
<li><a href="https://blogs.msdn.com/b/juliekn/archive/2012/11/09/lire-ecrire-des-tags-nfc-depuis-windows-8-ou-windows-phone-8.aspx">Lire/Ecrire des tags NFC depuis Windows 8 ou Windows Phone 8</a></li>
<li><a href="https://blogs.msdn.com/b/juliekn/archive/2012/11/09/nfc-comment-faire-communiquer-vos-applications-windows-phone-8-et-windows-8.aspx">NFC : Comment faire communiquer vos applications Windows Phone 8 et Windows 8</a></li>
</ul>
<h4>&nbsp;</h4>
<h4>En savoir plus :</h4>
<ul>
<li>Association Fran&ccedil;aise du Sans Contact Mobile : <a href="https://www.afscm.org/">https://www.afscm.org/</a></li>
<li>Initiative Cityzi : <a href="https://www.cityzi.fr/">https://www.cityzi.fr/</a></li>
<li>NFC chez Nokia : <a href="https://www.nokia.com/global/products/nfc/">https://www.nokia.com/global/products/nfc/</a></li>
<li>Proximit&eacute; et NFC dans Windows 8 : <a href="https://msdn.microsoft.com/en-us/library/windows/apps/hh465229.aspx">https://msdn.microsoft.com/en-us/library/windows/apps/hh465229.aspx</a></li>
<li>Proximity API pour Windows Phone : <a href="https://msdn.microsoft.com/en-US/library/windowsphone/develop/jj207060(v=vs.105).aspx">https://msdn.microsoft.com/en-US/library/windowsphone/develop/jj207060(v=vs.105).aspx</a></li>
<li>Communiqu&eacute; de presse de NXP : <a href="https://www.nxp.com/news/press-releases/2012/10/nxp-delivers-nfc-to-microsofts-windows-phone-8-devices.html">https://www.nxp.com/news/press-releases/2012/10/nxp-delivers-nfc-to-microsofts-windows-phone-8-devices.html</a></li>
</ul>]]></content:encoded>
    </item>
  </channel>
</rss>