<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Blog do desenvolvedor de aplicativos do Windows 8</title><subtitle type="html">Ideias sobre a criação de aplicativos com o estilo Metro para o Windows 8, da equipe de engenharia do Windows 8</subtitle><id>http://blogs.msdn.com/b/windowsappdev_br/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/windowsappdev_br/" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/b/windowsappdev_br/atom.aspx" /><generator uri="http://telligent.com" version="5.6.50428.7875">Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><updated>2013-03-29T15:51:55Z</updated><entry><title>Junte-se ao Game On Virtual Event</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/windowsappdev_br/archive/2013/06/12/junte-se-ao-game-on-virtual-event.aspx" /><id>http://blogs.msdn.com/b/windowsappdev_br/archive/2013/06/12/junte-se-ao-game-on-virtual-event.aspx</id><published>2013-06-12T18:33:54Z</published><updated>2013-06-12T18:33:54Z</updated><content type="html">&lt;div class="PostContent"&gt; &lt;p&gt;Os jogos são uma classe de aplicativos fundamental na Windows Store. Se você deseja criar um jogo para a Windows Store, gostaríamos de ajudá-lo com evento virtual sobre criação de jogos. O evento é gratuito e estará aberto para os novos desenvolvedores de jogos e também para os profissionais. &lt;/p&gt;  &lt;p&gt;Usaremos o &lt;a href="http://aka.ms/yoyogamesgamemaker" target="_blank"&gt;GameMaker: Studio&lt;/a&gt; da YoYo Games, para mostrar a você como criar e publicar jogos de alta qualidade em menos tempo. O GameMaker: Studio possui muitas opções internas de criação e ferramentas de arrastar e soltar que ajudam você a começar, mesmo que não tenha uma ideia para um jogo ou experiência em criação. No entanto, se você for um desenvolvedor mais experiente, as ferramentas avançadas o ajudarão a criar uma experiência de jogo única. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://aka.ms/gameonevent"&gt;&lt;img title="clip_image002" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="clip_image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/8666.clip_5F00_image002_5F00_0385EAB3.jpg" width="500" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Os eventos online começarão no sábado, 15 de junho, às 10 da manhã (Horário de Verão do Pacífico), com uma sessão de lançamento e um chat ao vivo. Você aprenderá sobre tipos diferentes de jogos e como adicionar elementos gráficos, fases e sons durante a criação de um jogo, além de explorar maneiras de deixar o jogo do seu jeito. O suporte continuará durante a semana com assistência individual por meio dos fóruns do GameMaker.&lt;/p&gt;  &lt;p&gt;Para você que é um estudante, um desenvolvedor de primeira viagem ou um profissional experiente, este evento será o seu ponto de partida para criar, carregar e publicar jogos na Windows Store. Descubra mais, inscreva-se e confira as ferramentas e os recursos gratuitos em &lt;a href="http://msdnevents.com/gameon/" target="_blank"&gt;http://msdnevents.com/gameon/&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;--Robert Rodriguez-Lawson, gerente de publicação de conteúdo sênior, conteúdo para desenvolvedores do Windows&lt;/p&gt; &lt;!-- Title: “Junte-se ao Game On Virtual Event” Tags: “jogos da Windows Store, jogos, Vamos jogar, eventos” --&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10425441" width="1" height="1"&gt;</content><author><name>Windows 8 Team</name><uri>http://blogs.msdn.com/win8apps_4000_live.com/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Cofre de Credenciais: Sua solução para lidar com nomes de usuário e senhas no seu aplicativo da Windows Store</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/windowsappdev_br/archive/2013/06/04/cofre-de-credenciais-sua-solu-231-227-o-para-lidar-com-nomes-de-usu-225-rio-e-senhas-no-seu-aplicativo-da-windows-store.aspx" /><id>http://blogs.msdn.com/b/windowsappdev_br/archive/2013/06/04/cofre-de-credenciais-sua-solu-231-227-o-para-lidar-com-nomes-de-usu-225-rio-e-senhas-no-seu-aplicativo-da-windows-store.aspx</id><published>2013-06-05T02:44:29Z</published><updated>2013-06-05T02:44:29Z</updated><content type="html">&lt;div class="PostContent"&gt; &lt;p&gt;Você ainda não ouviu falar sobre o &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh465069.aspx" target="_blank"&gt;Cofre de Credenciais&lt;/a&gt; que está disponível para os aplicativos da Windows Store? Então, está mais do que na hora. Por quê? Porque ele não apenas simplifica a tarefa de &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh465060.aspx" target="_blank"&gt;armazenar&lt;/a&gt; e &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/jj839731.aspx" target="_blank"&gt;recuperar as credenciais do usuário&lt;/a&gt;, ele as armazena de forma segura, e as credenciais acompanham os usuários "gratuitamente" com a conta da Microsoft.&lt;/p&gt;  &lt;p&gt;Vamos supor que você tenha um aplicativo que se conecte a um serviço para acessar recursos protegidos, como arquivos de mídia, rede social etc. O seu serviço exige informações de logon para cada usuário. Portanto, você incorporou a interface do usuário no seu aplicativo, que obtém o nome de usuário e a senha para o usuário, que são usados para fazer o logon do usuário no serviço. Tudo funciona perfeitamente.&lt;/p&gt;  &lt;p&gt;Agora você deseja facilitar mais as coisas para os usuários e armazenar suas informações de logon de forma segura para que não precisem fazer logon toda vez que usarem o seu aplicativo. Insira o Cofre de Credenciais. Com apenas algumas chamadas simples para a API do Cofre de Credenciais, você pode armazenar o nome de usuário e a senha para o usuário e recuperá-los facilmente para fazer o logon do usuário na próxima vez que ele abrir o seu aplicativo.&lt;/p&gt;  &lt;h2&gt;Armazenamento seguro&lt;/h2&gt;  &lt;p&gt;A excelente vantagem que o Cofre de Credenciais oferece ao seu aplicativo é armazenar as credenciais do usuário em um local seguro, e essas informações são criptografadas quando armazenadas em disco. Você com certeza poderia armazenar as credenciais dos seus usuários em um arquivo no armazenamento local do seu aplicativo, mas armazená-las em texto sem formatação apresenta uma falha de segurança considerável. Se o sistema de um usuário for comprometido de alguma forma, o nome de usuário e senha dele poderão ser facilmente acessados e manipulados. Armazenando o nome de usuário e a senha com o Cofre de Credenciais, o máximo que uma fonte mal-intencionada poderia conseguir capturar seria um arquivo criptografado.&lt;/p&gt;  &lt;p&gt;O Cofre de Credenciais é exclusivo para cada usuário do PC do Windows, e o acesso a uma credencial é limitado ao aplicativo armazenado nela. Isto é, você somente pode recuperar uma credencial que tiver armazenado para o seu aplicativo. Da mesma forma, nenhum outro aplicativo poderá obter as credenciais que o seu aplicativo tiver armazenado no cofre.&lt;/p&gt;  &lt;h2&gt;Credenciais móveis&lt;/h2&gt;  &lt;p&gt;Um benefício adicional para os seus usuários é que, quando você armazena o nome de usuário e a senha dele usando o Cofre de Credenciais, as credenciais armazenadas acompanham a conta da Microsoft dele em qualquer outro computador confiável usado por ele com essa conta da Microsoft. Isso torna o seu aplicativo seguro ainda mais prático para os seus usuários porque o seu aplicativo fará o logon deles automaticamente — sem solicitar as credenciais novamente — de qualquer computador confiável em que eles tiverem instalado o seu aplicativo e associado a sua conta da Microsoft.&lt;/p&gt;  &lt;p&gt;As coisas funcionam um pouco diferente em contas de domínio. Se houver credenciais armazenadas com a sua conta da Microsoft e você associar essa conta a uma conta de domínio (como a conta que você usa no trabalho), as suas credenciais serão transferidas para essa conta de domínio. No entanto, quaisquer novas credenciais adicionadas enquanto o usuário estiver conectado com a conta de domínio não serão transferidas. Isso garante que as credenciais privadas do domínio não sejam expostas fora do domínio.&lt;/p&gt;  &lt;h2&gt;Armazenando as credenciais do usuário&lt;/h2&gt;  &lt;p&gt;Armazenar as credenciais do usuário no Cofre de Credenciais é um processo rápido de duas etapas. Primeiro, você obtém uma referência para o Cofre de Credenciais usando o objeto &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.security.credentials.passwordvault.aspx" target="_blank"&gt;PasswordVault&lt;/a&gt; no namespace &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.security.credentials.aspx" target="_blank"&gt;Windows.Security.Credentials&lt;/a&gt;. Depois, você cria um objeto &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.security.credentials.passwordcredential.aspx" target="_blank"&gt;PasswordCredential&lt;/a&gt; com um identificador do seu aplicativo, o nome de usuário e a senha, e transfere isso para o método &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh701231.aspx" target="_blank"&gt;PasswordVault.Add()&lt;/a&gt; para adicionar a credencial ao cofre.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;div id="codeSnippetWrapper"&gt;     &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;var vault = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Windows.Security.Credentials.PasswordVault();&lt;br /&gt;vault.Add(&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Windows.Security.Credentials.PasswordCredential(&lt;br /&gt;    &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;My App&amp;quot;&lt;/span&gt;, username, password));&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; vault = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Windows.Security.Credentials.PasswordVault();&lt;br /&gt;vault.add(&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Windows.Security.Credentials.PasswordCredential(&lt;br /&gt;    &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;My App&amp;quot;&lt;/span&gt;, username, password));&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;h2&gt;Recuperando as credenciais do usuário&lt;/h2&gt;

&lt;p&gt;Há várias opções para recuperar as credenciais do usuário do Cofre de Credenciais depois de obter uma referência ao objeto &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.security.credentials.passwordvault.aspx" target="_blank"&gt;PasswordVault&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Você pode recuperar todas as credenciais fornecidas pelo usuário para o seu aplicativo no cofre com o método &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.security.credentials.passwordvault.retrieveall.aspx" target="_blank"&gt;PasswordVault.RetrieveAll()&lt;/a&gt;.&lt;/li&gt;

  &lt;li&gt;Se souber o nome de usuário das credenciais armazenadas, você poderá recuperar todas as credenciais desse nome de usuário com o método &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.security.credentials.passwordvault.findallbyusername.aspx" target="_blank"&gt;PasswordVault.FindAllByUserName()&lt;/a&gt;.&lt;/li&gt;

  &lt;li&gt;Se souber o nome do recurso das credenciais armazenadas, você poderá recuperar todas as credenciais do nome desse recurso com o método &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.security.credentials.passwordvault.findallbyresource.aspx" target="_blank"&gt;PasswordVault.FindAllByResource()&lt;/a&gt;.&lt;/li&gt;

  &lt;li&gt;Se souber o nome de usuário e o nome do recurso de uma credencial, você poderá recuperar apenas essa credencial com o método &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.security.credentials.passwordvault.retrieve.aspx" target="_blank"&gt;PasswordVault.Retrieve()&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vejamos um exemplo em que armazenamos o nome do recurso globalmente em um aplicativo e fazemos o logon do usuário automaticamente se localizarmos uma credencial para ele. No caso de localizarmos várias credenciais do usuário, solicitamos que o usuário selecione uma credencial padrão para usar ao fazer logon.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; resourceName = &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;My App&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; defaultUserName;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; Login()&lt;br /&gt;{&lt;br /&gt;    var loginCredential = GetCredentialFromLocker();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (loginCredential != &lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// There is a credential stored in the locker.&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// Populate the Password property of the credential&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// for automatic login.&lt;/span&gt;&lt;br /&gt;        loginCredential.RetrievePassword();&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// There is no credential stored in the locker.&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// Display UI to get user credentials.&lt;/span&gt;&lt;br /&gt;        loginCredential = GetLoginCredentialUI();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;// Log the user in.&lt;/span&gt;&lt;br /&gt;    ServerLogin(loginCredential.UserName, loginCredential.Password);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; Windows.Security.Credentials.PasswordCredential GetCredentialFromLocker()&lt;br /&gt;{&lt;br /&gt;    Windows.Security.Credentials.PasswordCredential credential = &lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;    var vault = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Windows.Security.Credentials.PasswordVault();&lt;br /&gt;    var credentialList = vault.FindAllByResource(resourceName);&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (credentialList.Count &amp;gt; 0)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (credentialList.Count == 1)&lt;br /&gt;        {&lt;br /&gt;            credential = credentialList[0];&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0, 128, 0);"&gt;// When there are multiple usernames,&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: rgb(0, 128, 0);"&gt;// retrieve the default username. If one doesn’t&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: rgb(0, 128, 0);"&gt;// exist, then display UI to have the user select&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: rgb(0, 128, 0);"&gt;// a default username.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            defaultUserName = GetDefaultUserNameUI();&lt;br /&gt;&lt;br /&gt;            credential = vault.Retrieve(resourceName, defaultUserName);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; credential;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;div&gt;
  &lt;br /&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;&lt;/div&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; resourceName = &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;My App&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; defaultUserName;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; login() {&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; loginCredential = getCredentialFromLocker();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (loginCredential != &lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;) {&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// There is a credential stored in the locker.&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// Populate the Password property of the credential&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// for automatic login.&lt;/span&gt;&lt;br /&gt;        loginCredential.retrievePassword();&lt;br /&gt;    } &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; {&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// There is no credential stored in the locker.&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// Display UI to get user credentials.&lt;/span&gt;&lt;br /&gt;        loginCredential = getLoginCredentialUI();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;// Log the user in.&lt;/span&gt;&lt;br /&gt;    serverLogin(loginCredential.userName, loginCredential.password);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; GetCredentialFromLocker() {&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; credential = &lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; vault = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Windows.Security.Credentials.PasswordVault();&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; credentialList = vault.findAllByResource(resourceName);&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (credentialList.length &amp;gt; 0) {&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (credentialList.length == 1) {&lt;br /&gt;            credential = credentialList[0];&lt;br /&gt;        } &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; {&lt;br /&gt;            &lt;span style="color: rgb(0, 128, 0);"&gt;// When there are multiple usernames,&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: rgb(0, 128, 0);"&gt;// retrieve the default username. If one doesn’t&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: rgb(0, 128, 0);"&gt;// exist, display UI to have the user select&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: rgb(0, 128, 0);"&gt;// a default username.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            defaultUserName = getDefaultUserNameUI();&lt;br /&gt;            credential = vault.retrieve(resourceName, defaultUserName);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; credential;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;h2&gt;Excluindo credenciais do usuário&lt;/h2&gt;

&lt;p&gt;Excluir as credenciais do usuário no Cofre de Credenciais também é um processo rápido de duas etapas. Novamente, você obtém uma referência para o Cofre de Credenciais usando o objeto &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.security.credentials.passwordvault.aspx" target="_blank"&gt;PasswordVault&lt;/a&gt; no namespace &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.security.credentials.aspx" target="_blank"&gt;Windows.Security.Credentials&lt;/a&gt;. Depois, você passa a credencial que deseja excluir para o método &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh701242.aspx" target="_blank"&gt;PasswordVault.Remove()&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;var vault = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Windows.Security.Credentials.PasswordVault();&lt;br /&gt;vault.Remove(&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Windows.Security.Credentials.PasswordCredential(&lt;br /&gt;    &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;My App&amp;quot;&lt;/span&gt;, username, password));&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; vault = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Windows.Security.Credentials.PasswordVault();&lt;br /&gt;vault.remove(&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Windows.Security.Credentials.PasswordCredential(&lt;br /&gt;    &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;My App&amp;quot;&lt;/span&gt;, username, password));&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;h2&gt;Fácil e seguro&lt;/h2&gt;

&lt;p&gt;Como você pode ver, o Cofre de Credenciais é um recurso fácil de usar que simplifica a sua tarefa de autenticar usuários e armazenar as credenciais deles para uso futuro, tudo de uma forma altamente segura.&lt;/p&gt;

&lt;p&gt;Outros tópicos de autenticação de aplicativos do Windows 8 incluem o &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh465281.aspx" target="_blank"&gt;agente de autenticação da Web&lt;/a&gt;, que você pode usar para recuperar um token de autenticação de um site (por exemplo, OAuth) e &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh770853.aspx" target="_blank"&gt;a personalização do seu aplicativo com base na conta da Microsoft de um usuário&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Para obter mais informações, consulte&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br211367.aspx" target="_blank"&gt;Gerenciando informações de usuários (JavaScript)&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/xaml/BR229572(v=win.10).aspx" target="_blank"&gt;Managing user info (Windows Store apps using C#/VB/C++ and XAML) (Gerenciando as informações do usuário (aplicativos da Windows Store usando C#/VB/C++ e XAML))&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/PasswordVault-f01be74a" target="_blank"&gt;Exemplo de Cofre de Credenciais&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.security.credentials.aspx" target="_blank"&gt;Windows.Security.Credentials&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;--Doug Rothaus, desenvolvedor de conteúdo sênior, Conteúdo para desenvolvedores do Windows&lt;/p&gt;

&lt;p&gt;Agradecimentos especiais para Yashar Bahman por sua ajuda e contribuições para esta postagem.&lt;/p&gt;
&lt;!-- Title: “Cofre de Credenciais: Sua solução para lidar com nomes de usuário e senhas no seu aplicativo da Windows Store” Tags: “recuperando credenciais, armazenando credenciais, armazenamento seguro, Cofre de Credenciais” --&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10423717" width="1" height="1"&gt;</content><author><name>Windows 8 Team</name><uri>http://blogs.msdn.com/win8apps_4000_live.com/ProfileUrlRedirect.ashx</uri></author><category term="Cofre de Credenciais" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/Cofre+de+Credenciais/" /><category term="armazenando credenciais" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/armazenando+credenciais/" /><category term="recuperando credenciais" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/recuperando+credenciais/" /><category term="armazenamento seguro" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/armazenamento+seguro/" /></entry><entry><title>Criar aplicativos com reconhecimento de local usando geolocalização e Mapas Bing</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/windowsappdev_br/archive/2013/05/28/criar-aplicativos-com-reconhecimento-de-local-usando-geolocaliza-231-227-o-e-mapas-bing.aspx" /><id>http://blogs.msdn.com/b/windowsappdev_br/archive/2013/05/28/criar-aplicativos-com-reconhecimento-de-local-usando-geolocaliza-231-227-o-e-mapas-bing.aspx</id><published>2013-05-28T18:06:07Z</published><updated>2013-05-28T18:06:07Z</updated><content type="html">&lt;div class="PostContent"&gt; &lt;p&gt;Ao experimentar em conjunto a localização de um usuário com a lógica de negócios do seu aplicativo, você pode fornecer facilmente aos usuários do aplicativo detalhes sobre a previsão do tempo, cupons, eventos esportivos ou concertos para sua localização atual. Você pode usar as funcionalidades de &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br229921.aspx" target="_blank"&gt;geolocalização&lt;/a&gt; do Windows 8, juntamente com o SDK do Mapas Bing, para criar ótimos &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh465148.aspx" target="_blank"&gt;aplicativos da Windows Store com reconhecimento de local&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Vejamos como seu aplicativo pode usar o &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br225603.aspx" target="_blank"&gt;serviço de localização&lt;/a&gt; para fornecer aos usuários informações específicas do local com um endereço IP, uma rede WiFi ou dados de GPS. Após saber a localização, você poderá usar o SDK do Mapas Bing para mostrar ao usuário onde ele está. &lt;/p&gt;  &lt;h2&gt;Recuperando sua localização&lt;/h2&gt;  &lt;p&gt;O namespace &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.devices.geolocation.aspx"&gt;Windows.Devices.Geolocation&lt;/a&gt; é usado para recuperar sua localização. Se você usará o GPS, uma rede WiFi ou um endereço IP para recuperar a localização de um usuário dependerá de dois fatores básicos:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;O nível de precisão solicitado. Este é o nível de precisão ideal para atender as necessidades do seu aplicativo. &lt;/li&gt;    &lt;li&gt;A disponibilidade dos dados de localização. Nem todos os dispositivos têm GPS interno. Ou talvez não haja uma rede ou conexão Wi-Fi disponível quando a localização for solicitada.&lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;&lt;a&gt;Precisão desejada&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;Ao solicitar uma localização, seu aplicativo deve especificar a &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.devices.geolocation.geolocator.desiredaccuracy.aspx" target="_blank"&gt;precisão desejada&lt;/a&gt; para que os dados de localização possam ser retornados o mais rápido possível no intervalo determinado. Cada um dos tipos de local tem um grau de precisão:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://pt.wikipedia.org/wiki/Gps" target="_blank"&gt;GPS&lt;/a&gt; – o GPS fornece a maior precisão, até aproximadamente 10 metros. No entanto, se o sensor do GPS precisar ser ativado e adquirir dados de satélite para em seguida fazer a triangulação dos dados, ele poderá levar um ou dois minutos para retornar os detalhes da localização. Mas após o GPS adquirir as conexões de satélite, será possível obter o próximo ponto de localização com mais rapidez. Obviamente que quanto mais o GPS for usado, mais energia consumirá. A propriedade &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.devices.geolocation.geolocator.desiredaccuracy.aspx" target="_blank"&gt;Geolocator.DesiredAccuracy&lt;/a&gt; deve ser definida como High (Alta) para permitir que o GPS adquira os dados.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://pt.wikipedia.org/wiki/Wi-Fi" target="_blank"&gt;Wi-Fi&lt;/a&gt; – uma conexão Wi-Fi pode fornecer uma precisão entre 300-500 metros. Se houver uma conexão, os dados de localização serão retornados mais rapidamente do que um GPS poderá obter dados de satélite. Defina a propriedade DesiredAccuracy como Default (Padrão) para obter a localização com Wi-Fi.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://pt.wikipedia.org/wiki/IP_address" target="_blank"&gt;IP&lt;/a&gt; – a resolução no nível do IP pode fornecer uma precisão dentro de 1 quilômetro, aproximadamente. Se houver uma conexão de rede, os dados de localização serão retornados mais rapidamente do que um GPS poderá obter uma conexão de satélite. Você também define a propriedade DesiredAccuracy como Default (Padrão) para obter a localização com IP. O serviço de localização retorna a maior precisão possível e permite que você saiba o grau de precisão na propriedade &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.devices.geolocation.geocoordinate.accuracy.aspx" target="_blank"&gt;Geocoordinate.Accuracy&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Preste atenção ao valor de precisão desejado. Ele pode afetar o desempenho e o consumo de energia do seu aplicativo. Por exemplo, se o seu aplicativo fornecer previsões de tempo, você raramente precisará da alta precisão do GPS. Além disso, não deixe de indicar a precisão dos seus dados exibindo o radius de erro baseado na precisão dos dados retornados. Aqui está o código C# para definir a precisão desejada:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;div id="codeSnippetWrapper"&gt;     &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;Geolocator geolocator = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Geolocator();&lt;br /&gt;geolocator.DesiredAccuracy = Windows.Devices.Geolocation.PositionAccuracy.High;&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;br /&gt;Independente da precisão que você desejar, a chamada para obter sua localização é: 

&lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;Geoposition pos = await geolocator.GetGeopositionAsync().AsTask(token);&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;Aqui está o código JavaScript que cria uma instância da classe Geolocator, define a precisão desejada e obtém a localização atual. Observe que a variável "promise" abaixo é um objeto &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br211867.aspx" target="_blank"&gt;WinJS.Promise&lt;/a&gt; – você precisará usar o método &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh701079.aspx" target="_blank"&gt;done&lt;/a&gt; para acessar os dados da chamada para &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br225537.aspx" target="_blank"&gt;getGeopositionAsync&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; geolocator = Windows.Devices.Geolocation.Geolocator();&lt;br /&gt;geolocator.desiredAccuracy =&lt;br /&gt;Windows.Devices.Geolocation.PositionAccuracy.high;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;// Get the geoposition, capturing the request in a 'promise' object.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; promise = geolocator.getGeopositionAsync();&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;br /&gt;Lembre-se de que se você definir a precisão desejada como High (Alta), não terá certeza de que o dispositivo do usuário retornará a maior precisão. O PC do usuário talvez não tenha um GPS ou este poderá estar desligado ou não conectado ao Wi-Fi, etc. Esteja sempre preparado para processar normalmente essas instâncias de dados de precisão menor. Como você fará isso dependerá da funcionalidade do seu aplicativo. É possível continuar com a menor precisão? É possível solicitar precisão no nível do GPS? Consulte as &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh465148.aspx" target="_blank"&gt;Diretrizes para aplicativos com reconhecimento de local&lt;/a&gt; para obter mais informações. 

&lt;h3&gt;Mapas Bing&lt;/h3&gt;

&lt;p&gt;O &lt;a href="http://apps.microsoft.com/webpdp/app/97a2179c-38be-45a3-933e-0d2dbf14a142" target="_blank"&gt;aplicativo Mapas Bing&lt;/a&gt; é um bom exemplo de um aplicativo que se adapta à precisão dos dados de localização disponíveis. Em um PC desktop, que em geral não tem um GPS ou Wi-Fi, ele acha a localização com base no endereço IP e a &lt;a&gt;amplia para um nível de região ao mapear &lt;/a&gt;o local atual. Em um laptop, que normalmente tem uma placa sem fio, o aplicativo usa a conexão Wi-Fi para obter uma localização mais precisa e a amplia ainda mais ao mostrar a localização atual. Se o usuário ampliar mais ainda, o ícone da localização atual mostrará um radius de erro. Em um dispositivo com GPS, o Mapas Bing obtém os dados de localização de maior precisão do GPS e exibe uma localização mais precisa.&lt;/p&gt;

&lt;h3&gt;Bing Meteorologia&lt;/h3&gt;

&lt;p&gt;Como mencionado acima, um aplicativo como o &lt;a href="http://apps.microsoft.com/webpdp/app/421ba874-f903-4965-9b82-d60f3ba3cae0" target="_blank"&gt;Bing Meteorologia&lt;/a&gt; precisa somente das informações de região. Por isso, ele pode especificar a necessidade apenas da menor precisão, permitindo a obtenção rápida de um valor de localização. Isso aumenta a capacidade de resposta do aplicativo para o usuário. Outros exemplos de aplicativos que podem precisar somente das informações de nível regional incluem guias de estações de rádio, ofertas de compras ou feeds de notícias locais.&lt;/p&gt;

&lt;h2&gt;Exibindo dados de localização com o SDK do Mapas Bing&lt;/h2&gt;

&lt;p&gt;Após obter as informações de localização de sua chamada para &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.devices.geolocation.geolocator.getgeopositionasync.aspx" target="_blank"&gt;GetGeopositionAsync&lt;/a&gt;, você desejará exibi-las em um mapa.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Primeiro, converta a &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.devices.geolocation.geoposition.aspx" target="_blank"&gt;Geoposição&lt;/a&gt; em uma &lt;a href="http://msdn.microsoft.com/pt-br/library/hh846500.aspx" target="_blank"&gt;Localização&lt;/a&gt; que possa ser usada com o Mapas Bing, use o código a seguir:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;Location location = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Location(pos.Coordinate.Latitude, pos.Coordinate.Longitude);&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;JavaScript:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;promise.done(&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; (pos) {&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;// Get the coordinates of the current location.&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; coord = pos.coordinate,&lt;br /&gt;    location = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Microsoft.Maps.Location(coord.latitude, coord.longitude);&lt;br /&gt; &lt;br /&gt;  },&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; (err) {&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;// Handle the error.&lt;/span&gt;&lt;br /&gt;  });&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt; &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Em seguida, exiba sua localização usando o Mapas Bing. Você pode obter o SDK do Mapas Bing &lt;a href="http://visualstudiogallery.msdn.microsoft.com/bb764f67-6b2c-4e14-b2d3-17477ae1eaca"&gt;aqui&lt;/a&gt;. Você também precisará obter uma chave do Mapas Bing fazendo o registro no Portal do Mapas Bing e seguindo as instruções para &lt;a href="http://msdn.microsoft.com/pt-br/library/ff428642.aspx"&gt;Obter uma Chave do Mapas Bing&lt;/a&gt;. Ao se registrar, não deixe de ver as restrições de uso para cada tipo de chave e escolha uma que seja apropriada para seu aplicativo. 

    &lt;br /&gt;Adicione um controle do Mapas Bing ao seu designer e insira sua chave nas credenciais.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Page&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(255, 0, 0);"&gt;xmlns&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(255, 0, 0);"&gt;xmlns:x&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(255, 0, 0);"&gt;xmlns:local&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;using:SimpleMapping&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(255, 0, 0);"&gt;xmlns:d&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;http://schemas.microsoft.com/expression/blend/2008&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(255, 0, 0);"&gt;xmlns:mc&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;http://schemas.openxmlformats.org/markup-compatibility/2006&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(255, 0, 0);"&gt;xmlns:Maps&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;using:Bing.Maps&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(255, 0, 0);"&gt;x:Class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;SimpleMapping.MainPage&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(255, 0, 0);"&gt;mc:Ignorable&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;d&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Background&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;{StaticResource ApplicationPageBackgroundThemeBrush}&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Maps:Map&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;x:Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;Map&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Margin&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;0,120,0,0&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Credentials&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;Insert Your Bing Maps Key Here&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Page&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;Agora você já pode usar o código a seguir na página do aplicativo em que o mapa é exibido. Isso define o nível de zoom do mapa e mostra a localização. Saiba mais sobre o nível de zoom em &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj850315.aspx" target="_blank"&gt;Como exibir sua localização em um Mapa Bing&lt;/a&gt;:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;double&lt;/span&gt; zoomLevel = 13.0f;&lt;br /&gt;&lt;br /&gt;Map.SetView(location, zoomLevel);&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;br /&gt;Adicionar um controle do Mapas Bing ao seu aplicativo em JavaScript e HTML exige um pouco mais de trabalho. Adicione a seguinte marca &amp;lt;script&amp;gt; ao HTML do seu aplicativo: 

&lt;div&gt; &lt;/div&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;script&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;type&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;br /&gt;   &lt;span style="color: rgb(255, 0, 0);"&gt;src&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&amp;quot;ms-appx:///Bing.Maps.JavaScript//js/veapicore.js&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;/script&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;Em seguida, você precisará criar uma marca &amp;lt;div&amp;gt;para conter o mapa, configurando o atributo de id para que possa acessá-lo.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;div&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;id&lt;/span&gt;=’&lt;span style="color: rgb(255, 0, 0);"&gt;map-div&lt;/span&gt;’&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;div&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;Por fim, será necessário inicializar o controle do mapa na página em HTML. Veja aqui alguns códigos JavaScript que fazem isso:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;// Load the Microsoft.Maps.Map module and then call getMap when the &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;// module has loaded.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; initMap() {&lt;br /&gt;  Microsoft.Maps.loadModule(&lt;span style="color: rgb(0, 96, 128);"&gt;'Microsoft.Maps.Map'&lt;/span&gt;, &lt;br /&gt;    { &lt;br /&gt;      callback: getMap, &lt;br /&gt;      culture: &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;en&amp;quot;&lt;/span&gt;, &lt;br /&gt;      homeRegion: &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;US&amp;quot;&lt;/span&gt; &lt;br /&gt;  });&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;// Get the div to contain the map from the interface of the app.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; getMap() {&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0);"&gt;// Create a new instance of the Map class, passing in the app ID.&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; map = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Microsoft.Maps.Map(&lt;br /&gt;    document.getElementById(mapDivId), &lt;br /&gt;    { credentials: “Insert your credentials here” });&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 128, 0);"&gt;// Set the initial zoom level and type of map.&lt;/span&gt;&lt;br /&gt;  map.setView({&lt;br /&gt;    mapTypeId: Microsoft.Maps.MapTypeId.road,&lt;br /&gt;    zoom: 3&lt;br /&gt;  });&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;Qualquer aplicativo que usa localização deve respeitar as configurações das permissões do usuário, que podem ser alteradas a qualquer momento. O aplicativo Meteorologia usa a localização para obter a previsão do tempo para o local atual. Mas a qualquer momento, o usuário poderá acessar as Configurações e desativas as permissões de Localizações. Seu aplicativo deve sempre lidar com a possibilidade de que a permissão de Localização esteja desabilitada. Nesse caso, o aplicativo Meteorologia exibe uma mensagem "Não é possível encontrar sua localização. Altere suas permissões para que o Meteorologia possa usar sua localização". Consulte as diretrizes de experiência do usuário em &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/Hh465148(v=win.10).aspx" target="_blank"&gt;Diretrizes para aplicativos com reconhecimento de local&lt;/a&gt; para obter exemplos de como lidar com permissões de localização. 

    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/0882.bing_2D00_weather_5F00_2FEEBCEF.jpg"&gt;&lt;img title="Aplicativo Bing Meteorologia" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="Aplicativo Bing Meteorologia usando a localização para obter a previsão do tempo para o local atual" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/7356.bing_2D00_weather_5F00_thumb_5F00_084840C5.jpg" width="600" height="450" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Para obter todos os detalhes de como usar a geolocalização e o SDK do Mapas Bing, &lt;a&gt;&lt;/a&gt;&lt;a&gt;temos um novo &lt;/a&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj850315.aspx" target="_blank"&gt;vídeo, tópico de como fazer&lt;/a&gt; e &lt;a href="http://code.msdn.microsoft.com/windowsapps/Simple-geolocation-with-7b385c3c" target="_blank"&gt;exemplo de código&lt;/a&gt; que explica as etapas de como adquirir de forma assíncrona sua localização e usar o SDK do Mapas Bing para mostrar onde você está visualmente. O vídeo, o tópico de como fazer e o exemplo guiam você sobre como habilitar a funcionalidade de localização, como obter a localização assincronamente, como configurar o mapa para um determinado local e como configurar o ícone de localização baseado na precisão dos dados de localização. Você também pode encontrar mais informações em &lt;a href="http://msdn.microsoft.com/pt-br/library/hh846481.aspx" target="_blank"&gt;Mapas Bing para aplicativos da Windows Store&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Resumindo&lt;/h2&gt;

&lt;p&gt;A localização pode ser um recurso poderoso e ágil para adicionar ao seu aplicativo. Você pode fornecer ao usuário mais informações pertinentes baseado em onde ele está. Seja uma lista de estações de rádio locais, ofertas de compras, informações de trânsito ou do tempo, o controle para ajustar essas informações de acordo com a localização pode tornar seu aplicativo mais útil. A capacidade de fazer isso acontecer automaticamente, sem a interação do usuário, economiza tempo e aumenta a probabilidade de uso do seu aplicativo.&lt;/p&gt;

&lt;p&gt;--Ross Heise, desenvolvedor de conteúdo sênior, Conteúdo para desenvolvedores do Windows&lt;/p&gt;
&lt;p&gt;   Agradecimentos especiais a Jon Kay e Eric Schmidt pela ajuda e contribuições para esta postagem.&lt;/p&gt;
&lt;!-- Title: “Criar aplicativos com reconhecimento de local usando geolocalização e Mapas Bing” Tags: “Mapas Bing, geolocalização, Windows. Dispositivos. Geolocalização, serviços de localização” --&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10421842" width="1" height="1"&gt;</content><author><name>Windows 8 Team</name><uri>http://blogs.msdn.com/win8apps_4000_live.com/ProfileUrlRedirect.ashx</uri></author><category term="serviços de localização" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/servi_E700_os+de+localiza_E700E300_o/" /><category term="Windows. Dispositivos. Geolocalização" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/Windows-+Dispositivos-+Geolocaliza_E700E300_o/" /><category term="Mapas Bing" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/Mapas+Bing/" /><category term="geolocalização" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/geolocaliza_E700E300_o/" /></entry><entry><title>Apresentando uma nova experiência do Centro de Desenvolvimento do Windows</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/windowsappdev_br/archive/2013/05/16/apresentando-uma-nova-experi-234-ncia-do-centro-de-desenvolvimento-do-windows.aspx" /><id>http://blogs.msdn.com/b/windowsappdev_br/archive/2013/05/16/apresentando-uma-nova-experi-234-ncia-do-centro-de-desenvolvimento-do-windows.aspx</id><published>2013-05-16T20:01:07Z</published><updated>2013-05-16T20:01:07Z</updated><content type="html">&lt;div class="PostContent"&gt; &lt;p&gt;Desde o lançamento do &lt;a href="http://msdn.microsoft.com/pt-br/windows/default.aspx" target="_blank"&gt;Centro de Desenvolvimento do Windows&lt;/a&gt; em outubro de 2011, temos trabalhado de perto com desenvolvedores e designers do mundo todo para saber como podemos oferecer a melhor orientação, inspiração e amostras para criadores de aplicativos. Com milhares de visitantes e os seus comentários, temos avaliado o que tem funcionado bem e quais experiências podem ser aprimoradas.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/0172.windows_5F00_dev_5F00_center_5F00_1EC86298.png"&gt;&lt;img title="Centro de Desenvolvimento do Windows" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="Centro de Desenvolvimento do Windows" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/0184.windows_5F00_dev_5F00_center_5F00_thumb_5F00_1DEFFCAE.png" width="600" height="338" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Novidades&lt;/h2&gt;  &lt;p&gt;A equipe do Windows está focada em cultivar um ecossistema de aplicativos vibrante e crescente. Isso se manifesta de três formas: ótimos aplicativos, ótima economia e ótima oportunidade de alcance. O novo Centro de Desenvolvimento conecta criadores de aplicativos, designers e empresas aos recursos necessários para obterem sucesso no desenvolvimento de ótimos aplicativos e na criação de um negócio com o Windows.&lt;/p&gt;  &lt;p&gt;Para dar suporte a essas metas, estas áreas do Centro de Desenvolvimento foram desenvolvidas:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;O modelo de navegação foi alterado para que você possa localizar o conteúdo relevante à etapa do ciclo de vida do desenvolvimento de aplicativos&lt;/li&gt;    &lt;li&gt;O site cria tarefas de destaque, cenários e novo conteúdo &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Além do conteúdo, amostras e downloads que os desenvolvedores desejam; facilitamos o acesso a recursos para designers e empresas. &lt;/p&gt;  &lt;p&gt;Dependendo do que estiver criando, você pode acessar uma destas quatro áreas: &lt;a href="http://msdn.microsoft.com/pt-BR/windows/apps/br229512" target="_blank"&gt;Aplicativos da Windows Store&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/pt-BR/ie/" target="_blank"&gt;Internet Explorer&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/pt-BR/windows/desktop" target="_blank"&gt;Windows desktop&lt;/a&gt; e &lt;a href="http://msdn.microsoft.com/pt-BR/windows/hardware" target="_blank"&gt;Hardware&lt;/a&gt;. Cada uma delas apresenta uma nova experiência que aborda os pontos mencionados acima. Nesta postagem, veremos detalhadamente as alterações específicas feitas para os aplicativos da Windows Store.&lt;/p&gt;  &lt;h2&gt;O conteúdo certo para a sua função&lt;/h2&gt;  &lt;p&gt;O site mais informativo deixa de ser útil se a pessoa não conseguir encontrar o que procura. Com centenas de milhares de tópicos no Centro de Desenvolvimento, a organização e a capacidade de descobrir conteúdo é crítica. Para o desenvolvimento de aplicativos da Windows Store, isso significa um foco mais estrito, com base na função e no cenário, desde colocar tudo o que você precisa para começar em um lugar até dar um melhor suporte a designers e empresas. Aqui estão alguns dos destaques.&lt;/p&gt;  &lt;h3&gt;Desenvolvedores&lt;/h3&gt;  &lt;p&gt;Simplificamos o conteúdo de que você precisa para criar ótimos aplicativos da Windows Store. Ao acessar a &lt;a href="http://msdn.microsoft.com/pt-br/windows/apps/" target="_blank"&gt;home page dos aplicativos da Windows Store&lt;/a&gt;, você verá: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;“Principais tarefas e conteúdo” em destaque para ajudá-lo a acessar rapidamente o conteúdo de que você precisa. Os eventos locais na sua região são destacados, bem como novos recursos que acabamos de incluir no site. &lt;/li&gt;    &lt;li&gt;Downloads para ajudá-lo a acessar diretamente a codificação, todos os recursos necessários para você começar e orientação detalhada sobre como colocar o seu aplicativo na Windows Store. &lt;/li&gt;    &lt;li&gt;Exemplos de código importantes são realçados, e orientações passo a passo têm uma navegação mais fácil tendo em foco o ciclo de vida do desenvolvimento. &lt;/li&gt;    &lt;li&gt;“&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br211360.aspx" target="_blank"&gt;Os vídeos rápidos para o desenvolvedor&lt;/a&gt;” encontrados em todo o site oferecem uma visão geral de como adicionar recursos ao seu aplicativo. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Designers&lt;/h3&gt;  &lt;p&gt;Fizemos algumas modificações na &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh779072.aspx" target="_blank"&gt;seção de design&lt;/a&gt; do site para facilitar seu uso e torná-la mais abrangente. Você pode localizar downloads úteis e ativos de design reutilizáveis mais facilmente, e, com os estudos de caso e ideias de design, você tem as ferramentas necessárias para criar uma experiência exclusiva no Windows. Tudo o que você precisa para criar um lindo aplicativo que se destaque dos outros está ao alcance das suas mãos, com um design de página voltado para o toque e fácil de usar.&lt;/p&gt;  &lt;h3&gt;Empresas&lt;/h3&gt;  &lt;p&gt;A oportunidade da Windows Store para as empresas é significativa, com um modelo econômico melhor do que o das plataformas competitivas e flexibilidade que permite criar o negócio que desejar. A nova &lt;a href="http://go.microsoft.com/fwlink/?LinkID=285998" target="_blank"&gt;seção sobre mercado&lt;/a&gt; do site oferece ótimas dicas para comercializar os seus aplicativos, avaliar dados telemétricos e obter a certificação de aplicativos. Aprendemos muito sobre como facilitar a certificação e melhoramos o conteúdo para ajudá-lo a passar pelo processo mais rapidamente.&lt;/p&gt;  &lt;p&gt;Muitos de vocês, obviamente desempenham várias funções. Acreditamos que a nova organização do site dê suporte a isso também. De entusiastas e agências publicitárias às grandes empresas desenvolvedoras de software, a nova organização do site ajudará todos a realizarem seus projetos e a alcançarem suas metas de negócios com o Windows.&lt;/p&gt;  &lt;h2&gt;Há muito mais por vir. O seu feedback é importante.&lt;/h2&gt;  &lt;p&gt;Com o &lt;a href="http://www.buildwindows.com"&gt;BUILD 2013&lt;/a&gt; daqui a pouco mais de um mês, teremos muito o que falar. Estamos trabalhando muito para criar novo conteúdo para ser compartilhado no evento deste ano. Além de acompanhar este blog, estas são outras maneiras de você ficar conectado: seguir &lt;a href="https://twitter.com/#!/windevs" target="_blank"&gt;@windevs&lt;/a&gt; no Twitter e assinar o &lt;a href="http://www.windowsstore.com/newsletter-signup" target="_blank"&gt;Boletim informativo da Windows Store&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Conforme apresentamos mais conteúdo para ajudá-lo a criar, desenvolver e comercializar os seus aplicativos da Windows Store, desejamos continuar aperfeiçoando a sua experiência no Centro de Desenvolvimento! Para facilitar o seu feedback, agora oferecemos duas novas opções de comentários na parte inferior de cada página. Faça comentários. Eles são lidos e estamos sempre trabalhando para atender às suas necessidades.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Keith Boyd, gerente de publicação de conteúdo, Conteúdo do desenvolvedor do Windows&lt;/p&gt; &lt;!-- Title: “Apresentando uma nova experiência do Centro de Desenvolvimento do Windows” Tags: “centro de desenvolvimento, informações para o desenvolvedor, criação de aplicativos, aplicativos da Windows Store, Centro de Desenvolvimento do Windows” --&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10419443" width="1" height="1"&gt;</content><author><name>Windows 8 Team</name><uri>http://blogs.msdn.com/win8apps_4000_live.com/ProfileUrlRedirect.ashx</uri></author><category term="centro de desenvolvimento" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/centro+de+desenvolvimento/" /><category term="criação de aplicativos" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/cria_E700E300_o+de+aplicativos/" /><category term="aplicativos da Windows Store" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/aplicativos+da+Windows+Store/" /><category term="informações para o desenvolvedor" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/informa_E700F500_es+para+o+desenvolvedor/" /><category term="Centro de Desenvolvimento do Windows" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/Centro+de+Desenvolvimento+do+Windows/" /></entry><entry><title>Compartilhando com o seu aplicativo de destino</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/windowsappdev_br/archive/2013/05/15/compartilhando-com-o-seu-aplicativo-de-destino.aspx" /><id>http://blogs.msdn.com/b/windowsappdev_br/archive/2013/05/15/compartilhando-com-o-seu-aplicativo-de-destino.aspx</id><published>2013-05-15T16:14:51Z</published><updated>2013-05-15T16:14:51Z</updated><content type="html">&lt;div class="PostContent"&gt; &lt;p&gt;Na postagem &lt;a href="http://blogs.msdn.com/b/windowsappdev_br/archive/2012/12/21/compartilhando-de-seu-aplicativo.aspx" target="_blank"&gt;Compartilhando de seu aplicativo&lt;/a&gt;, apresentamos a ideia de compartilhar conteúdo do aplicativo de exemplo &lt;a href="http://blogs.msdn.com/b/windowsappdev_br/archive/2012/07/18/cr-233-ation-d-applications-de-style-metro-qui-sortent-du-lot.aspx" target="_blank"&gt;Food with Friends&lt;/a&gt; com vários aplicativos de destino que permitem ao usuário executar cenários completos e sofisticados. Os aplicativos no Windows 8 oferecem um conteúdo interessante que os seus clientes desejarão &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh465251.aspx" target="_blank"&gt;compartilhar&lt;/a&gt; com os amigos e outros aplicativos. Com um compartilhamento de destino atraente e bem projetado, o seu aplicativo pode ser o centro de uma experiência conectada e social.&lt;/p&gt;  &lt;p&gt;Nesta postagem, veremos como você pode usar o contrato de Compartilhamento de Destino nos seus aplicativos, especialmente aqueles como o Food with Friends. Usando esse contrato, o seu aplicativo pode &lt;i&gt;receber conteúdo&lt;/i&gt; de outros aplicativos e usar esse conteúdo para melhorar sua qualidade. Desejamos ajudá-lo a tornar o seu aplicativo o melhor de sua categoria!&lt;/p&gt;  &lt;p&gt;O aplicativo de destino é criado usando o &lt;a href="http://blogs.msdn.com/b/windowsappdev_br/archive/2012/03/30/ativando-contratos-do-windows-8-no-seu-aplicativo.aspx" target="_blank"&gt;contrato&lt;/a&gt;&lt;u&gt;&lt;/u&gt; de Compartilhamento de Destino e é desenvolvido para proporcionar uma experiência rápida e fácil. Nem todo aplicativo no Windows será um compartilhamento de destino, mas se o seu aplicativo puder publicar, transformar, armazenar ou agregar valor, de alguma forma, ao conteúdo que receber de outro aplicativo, haverá benefícios na criação de um compartilhamento de destino. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;O seu aplicativo sempre aparecerá na lista de aplicativos de destino. Ele é conectado instantaneamente e relevante a outros aplicativos que podem compartilhar dados desejados por você. &lt;/li&gt;    &lt;li&gt;O contrato de compartilhamento cria uma ponte entre o seu aplicativo e qualquer aplicativo de origem sem que seja necessário que nenhum dos dois tenha uma integração um-para-um. &lt;/li&gt;    &lt;li&gt;Como o botão Compartilhar está sempre presente e disponível no sistema operacional, isso proporciona ao aplicativo de destino uma presença no sistema operacional que vai além das fronteiras do seu aplicativo. Isso poderá direcionar mais clientes para o seu aplicativo!&lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Recebendo conteúdo compartilhado&lt;/h2&gt;  &lt;p&gt;Vejamos alguns exemplos que mostrarão como você pode oferecer experiências atraentes por meio de um aplicativo de compartilhamento de destino.&lt;/p&gt;  &lt;p&gt;Talvez você já esteja familiarizado com os aplicativos Email e Pessoas do Windows 8. O Email cria uma experiência de compartilhamento de destino fácil e pessoal para receber e compartilhar conteúdo com um ou mais amigos. O aplicativo Pessoas permite compartilhar conteúdo com uma audiência maior nas suas redes sociais. Além do compartilhamento em redes sociais, você pode ir além com o compartilhamento entre aplicativos. Aplicativos de produtividade, como o SkyDrive, podem receber arquivos de qualquer lugar do Windows e armazená-los na nuvem; os aplicativos de anotação podem receber texto, links e, possivelmente, dados em uma grande variedade de formatos diferentes e arquivá-los para futura referência. Também há bastante espaço para a criatividade. &lt;/p&gt;  &lt;p&gt;Veja como as duas imagens abaixo mostram o fluxo de compartilhamento ao compartilhar uma foto do aplicativo Fotos com o PuzzleTouch, um aplicativo de jogo que transforma uma imagem em um quebra-cabeça visual. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/8637.puzzletouch1_5F00_6E4332DA.png"&gt;&lt;img title="Aplicativo de origem à esquerda, lista de aplicativos de destino filtrados que podem receber fotos no painel Compartilhar à direita. " style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="Aplicativo de origem à esquerda, lista de aplicativos de destino filtrados que podem receber fotos no painel Compartilhar à direita. " src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/1307.puzzletouch1_5F00_thumb_5F00_2681A9F3.png" width="700" height="394" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;i&gt;Figura 1: Aplicativo de origem à esquerda, lista de aplicativos de destino que podem receber fotos no painel Compartilhar à direita.      &lt;br /&gt;O PuzzleTouch é um dos compartilhamentos de destino que podem receber uma imagem do aplicativo Fotos. &lt;/i&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/6661.puzzletouch2_5F00_463083BB.png"&gt;&lt;img title="À direita, a visualização do aplicativo de destino permite ao usuário selecionar o tipo de quebra-cabeça que deseja criar" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="À direita, a visualização do aplicativo de destino permite ao usuário selecionar o tipo de quebra-cabeça que deseja criar" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/2474.puzzletouch2_5F00_thumb_5F00_65DF5D83.png" width="700" height="394" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;i&gt;Figura 2: À direita, a visualização do aplicativo de destino permite ao usuário selecionar o tipo de quebra-cabeça que      &lt;br /&gt;deseja criar. O quebra-cabeça fica pronto quando o usuário volta ao aplicativo. &lt;/i&gt;&lt;/p&gt;  &lt;h2&gt;O que é um aplicativo de compartilhamento de destino?&lt;/h2&gt;  &lt;p&gt;Uma experiência de compartilhamento completa no Windows tem dois componentes. Temos um aplicativo de origem que torna o conteúdo disponível em diferentes formatos para o Windows. Temos também um aplicativo de compartilhamento de destino que se registra para reconhecer determinados formatos e atua como o destino para o conteúdo compartilhado. Usando o contrato de Compartilhamento, o aplicativo de origem e o aplicativo de compartilhamento de destino se comunicam entre si.&lt;/p&gt;  &lt;p&gt;Ao pensar sobre a experiência de compartilhamento para o seu aplicativo, considere que o aplicativo de compartilhamento de destino é renderizado na janela Compartilhar hospedada. Projete a experiência para que o seu usuário possa visualizar seu conteúdo rapidamente e confirmar o compartilhamento nessa exibição. Este exemplo mostra a exibição do aplicativo de compartilhamento de destino Email que permite a um usuário compartilhar rapidamente um link do navegador com um de seus contatos do Email. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/8561.Share_2D00_Target_2D00_Image_5F00_3ED44139.png"&gt;&lt;img title="Imagem do Compartilhamento de Destino" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="Imagem do Compartilhamento de Destino" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/6011.Share_2D00_Target_2D00_Image_5F00_thumb_5F00_4FD86F1C.png" width="700" height="435" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;i&gt;Figura 3: Compartilhando um link do aplicativo Fotos usando o aplicativo de destino Email&lt;/i&gt;&lt;/p&gt;  &lt;h2&gt;Cenários do Food with Friends&lt;/h2&gt;  &lt;p&gt;Agora, vamos considerar como o &lt;a href="http://blogs.msdn.com/b/windowsappdev_br/archive/2012/07/18/cr-233-ation-d-applications-de-style-metro-qui-sortent-du-lot.aspx" target="_blank"&gt;Food with Friends&lt;/a&gt; cria uma experiência atraente de aplicativo de compartilhamento de destino. Se você estiver familiarizado com o aplicativo, você verá duas ações principais que um usuário pode realizar no Food with Friends – &lt;i&gt;criando um plano&lt;/i&gt; e &lt;i&gt;adicionando um restaurante à sua lista de desejos&lt;/i&gt;. É claro que há outras ações, como escrever uma opinião, postar um comentário, exibir listas de desejos dos seus amigos etc., mas essas experiências somente fazem sentido dentro do contexto do aplicativo principal. Nos dois cenários básicos que se destacam, vamos fazer uma verificação de integridade rápida para ver se podem ser realizados efetivamente pelo aplicativo de destino Food with Friends.&lt;/p&gt;  &lt;h3&gt;Criar o plano desta noite&lt;/h3&gt;  &lt;p&gt;Embora seja o cenário básico do aplicativo principal, ele não é o melhor cenário para uma experiência de compartilhamento de destino. Veja o motivo: A experiência de compartilhamento de destino tem o objetivo de ser rápida e fácil. A criação de um plano é uma tarefa muito mais complexa: o usuário poderia desejar saber quais outros restaurantes seus amigos desejam experimentar, comparar alguns restaurantes da lista de desejos, examinar classificações etc. Como o planejamento envolve o aproveitamento de detalhes cuja apresentação é melhor na exibição do aplicativo principal, condensar essa funcionalidade em um aplicativo de compartilhamento de destino não é atraente. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h3&gt;Adicionar à lista de desejos&lt;/h3&gt;  &lt;p&gt;Esse cenário funciona realmente bem como uma tarefa curta e direcionada no compartilhamento de destino. Alguns destaques nessa experiência do aplicativo:&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;As pessoas veem restaurantes em outros aplicativos, sejam aplicativos de planejamento de viagens, aplicativos da cidade local com recomendações, blogs sobre comida etc. O Food with Friends é um ótimo destino para agregar restaurantes na seção "My Wishlist" (Minha lista de desejos). &lt;/li&gt;    &lt;li&gt;A exibição do aplicativo de destino de um aplicativo é criada para que um usuário aja rapidamente no contexto de um aplicativo diferente. Portanto, a adição de um restaurante na lista de desejos é uma excelente opção para emergir no compartilhamento de destino. &lt;/li&gt;    &lt;li&gt;Embora certamente seja possível ao usuário fazer a alternância entre aplicativos, repetir a pesquisa para localizar o restaurante e adicionar o restaurante à lista de desejos, tocar rapidamente em Compartilhar é muito mais fácil.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;A lista de desejos do Food with Friends parece ser uma ótima experiência de aplicativo de compartilhamento de destino que desejamos projetar e compilar. Veja o cenário completo que temos em mente:&lt;/p&gt;  &lt;p&gt;Ao navegar em um aplicativo que mostre caminhões de comida local, encontro recomendações desses caminhões que parecem interessantes. Desejo adicionar o caminhão de comida desse aplicativo na minha lista de desejos do Food with Friends para ajudar no planejamento depois.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/7658.contoso_5F00_truck_5F00_6C263411.png"&gt;&lt;img title="Navegando em um aplicativo que mostra caminhões de comida local e recomenda lugares de interesse" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="Navegando em um aplicativo que mostra caminhões de comida local e recomenda lugares de interesse" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/3022.contoso_5F00_truck_5F00_thumb_5F00_4B9EF45F.png" width="700" height="394" /&gt;&lt;/a&gt;&lt;em&gt;Figura 4: Navegando em um aplicativo que mostra caminhões de comida local e recomenda lugares de interesse&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Essa imagem mostra a exibição do aplicativo de compartilhamento de destino que desejamos usar:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/3835.contoso_5F00_truck2_5F00_565C4BB4.png"&gt;&lt;img title="Exibição do aplicativo de compartilhamento de destino" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="Exibição do aplicativo de compartilhamento de destino" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/8637.contoso_5F00_truck2_5F00_thumb_5F00_760B257C.png" width="700" height="394" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;em&gt;Figura 5: Exibição do aplicativo de compartilhamento de destino&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Realizando a ação de compartilhamento na exibição do aplicativo de destino, os usuários podem ver os restaurantes do Food with Friends sem alternar o contexto da experiência de imersão do aplicativo atual. &lt;/p&gt;  &lt;h2&gt;Implementando um compartilhamento de destino&lt;/h2&gt;  &lt;p&gt;Agora que você viu alguns exemplos de quando implementar um compartilhamento de destino, vejamos como implementar um compartilhamento de destino. Primeiro, decida quais formatos de dados o seu aplicativo poderá receber. &lt;/p&gt;  &lt;h3&gt;A quais formatos de dados você deve dar suporte?&lt;/h3&gt;  &lt;p&gt;Com o Compartilhar, você pode dar suporte tanto a formatos de dados padrão, como texto, URI, HTML, bitmaps, arquivos ou formatos de dados personalizados, como os listados em &lt;a href="http://schema.org" target="_blank"&gt;http://schema.org&lt;/a&gt; . O Windows filtra aplicativos de destino por formatos de dados a que dão suporte para exibir a lista de aplicativos de destino filtrada no painel Compartilhar. O seu aplicativo deve dar suporte a formatos de dados que são importantes para a experiência do aplicativo. Por exemplo, se o seu aplicativo for voltado para a exibição de fotos, o suporte a formatos de texto pode não ser útil. Se você declarar suporte a vários formatos de dados, decida qual deles ajudará a representar os dados compartilhados melhor para que você possa separar esse formato no pacote de dados primeiro. &lt;/p&gt;  &lt;p&gt;Como o Food with Friends está implementando uma experiência de compartilhamento de destino que permite aos usuários compartilhar restaurantes com o aplicativo, vamos usar o formato de dados &lt;a href="http://schema.org/Restaurant" target="_blank"&gt;Restaurant&lt;/a&gt;&lt;u&gt;&lt;/u&gt; (Restaurante) que aparece em &lt;a href="http://schema.org" target="_blank"&gt;http://schema.org&lt;/a&gt;. O Food with Friends pode se registrar com o contrato de Compartilhamento de destino para receber esse formato de dados. Em seguida, usado os dados no pacote recebido, ele pode criar uma experiência atraente na exibição de seu aplicativo de destino que permita ao usuário adicionar o restaurante na sua lista de desejos. &lt;/p&gt;  &lt;p&gt;Embora alguns aplicativos de origem possam compartilhar especificamente o formato de dados &lt;a href="http://schema.org/Restaurant" target="_blank"&gt;Restaurant&lt;/a&gt;&lt;u&gt;&lt;/u&gt;, outros aplicativos de origem podem representar informações semelhantes usando outros formatos de dados, como &lt;a href="http://schema.org/Place" target="_blank"&gt;Place&lt;/a&gt;&lt;u&gt;&lt;/u&gt; (Local), &lt;a href="http://schema.org/LocalBusiness" target="_blank"&gt;LocalBusiness&lt;/a&gt;&lt;u&gt;&lt;/u&gt; e &lt;a href="http://schema.org/FoodEstablishment" target="_blank"&gt;FoodEstablishment&lt;/a&gt; relacionados em &lt;a href="http://schema.org/" target="_blank"&gt;schema.org&lt;/a&gt;&lt;u&gt;&lt;/u&gt;. Dessa forma, o Food with Friends pode dar suporte ao recebimento de vários formatos no contrato de compartilhamento para acomodar uma variedade maior de aplicativos de origem.&lt;/p&gt;  &lt;p&gt;O Food with Friends dá suporte aos seguintes formatos nas declarações de compartilhamento de destino do manifesto do aplicativo:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;u&gt;&lt;a href="http://schema.org/Restaurant" target="_blank"&gt;Restaurant&lt;/a&gt;&lt;/u&gt;&lt;/li&gt;    &lt;li&gt;&lt;u&gt;&lt;a href="http://schema.org/Place" target="_blank"&gt;Place&lt;/a&gt;&lt;/u&gt;&lt;/li&gt;    &lt;li&gt;&lt;u&gt;&lt;a href="http://schema.org/LocalBusiness" target="_blank"&gt;LocalBusiness&lt;/a&gt;&lt;/u&gt;&lt;/li&gt;    &lt;li&gt;&lt;u&gt;&lt;a href="http://schema.org/FoodEstablishment" target="_blank"&gt;FoodEstablishment&lt;/a&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Estamos nos concentrando no tipo de dados &lt;a href="http://schema.org/Restaurant" target="_blank"&gt;Restaurant&lt;/a&gt;&lt;u&gt;&lt;/u&gt; para simplificar, mas os conceitos também se aplicam a outros tipos de dados.&lt;/p&gt;  &lt;h3&gt;Quais formatos de dados e cenários você deve examinar? &lt;/h3&gt;  &lt;p&gt;O Food with Friends somente permitirá a adição do restaurante à lista de desejos do usuário se as informações do restaurante recebidas corresponderem às de um restaurante já conhecido pelo aplicativo. Isso é intencional para evitar várias cópias de restaurantes no aplicativo. &lt;/p&gt;  &lt;p&gt;Não damos suporte a tipos de dados padrão porque a maioria dos textos, arquivos, fotos, URI ou HTML compartilhados de aplicativos de origem não são mapeados para um restaurante ou empresa local. Por exemplo, se o Food with Friends desse suporte ao recebimento de texto, ele apareceria na lista de aplicativos de destino de um aplicativo de origem de anotação. Nesse caso, o Food With Friends precisaria fornecer uma mensagem de erro informando ao usuário o motivo desse aplicativo não funcionar com seu aplicativo de origem. Resumindo, os formatos de dados são o que conectam um aplicativo de origem que tem algo a oferecer a um aplicativo de destino. Se os formatos de dados não forem os mesmos, não há nada que valha a pena compartilhar.&lt;/p&gt;  &lt;p&gt;Considere todos os formatos de dados que ajudam a identificar o que é importante, examine os formatos de dados que diluem a sua experiência de compartilhamento.&lt;/p&gt;  &lt;h3&gt;Dando suporte ao contrato de Compartilhamento de Destino&lt;/h3&gt;  &lt;p&gt;Para dar suporte a formatos de dados, declare-os no designer de manifesto do Visual Studio do seu aplicativo. Isto é o que acontece quando um usuário seleciona o seu aplicativo como o destino de uma ação de compartilhamento:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Uma nova instância do aplicativo é iniciada na janela de compartilhamento de destino sobre o aplicativo de origem. &lt;/li&gt;    &lt;li&gt;Um evento de &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.applicationmodel.activation.sharetargetactivatedeventargs.aspx" target="_blank"&gt;ativação de compartilhamento de destino&lt;/a&gt; é iniciado e o seu aplicativo recebe um objeto &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br205977.aspx" target="_blank"&gt;ShareOperation&lt;/a&gt;&lt;b&gt;&lt;/b&gt; como resultado.&lt;/li&gt;    &lt;li&gt;O seu aplicativo pode recuperar os dados que o usuário compartilhou desse objeto. &lt;/li&gt;    &lt;li&gt;Você pode usar esses dados para renderizar a exibição do aplicativo de destino e realizar o compartilhamento do usuário. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Para obter mais informações sobre como criar essa experiência, consulte o guia &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh465255.aspx" target="_blank"&gt;Início rápido:&lt;/a&gt; &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh465255.aspx"&gt;&lt;u&gt;recebendo conteúdo compartilhado&lt;/u&gt;&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Além disso, o Visual Studio dá suporte a um modelo para o compartilhamento de destinos. Clique com o botão direito no seu projeto, selecione &lt;b&gt;Adicionar Item&lt;/b&gt;, &lt;b&gt;Adicionar Novo Item&lt;/b&gt;, clique em &lt;b&gt;contrato de Compartilhamento de Destino&lt;/b&gt; na lista. Você terá o código adicionado para dar suporte ao contrato. O &lt;a href="http://code.msdn.microsoft.com/windowsapps/Sharing-Content-Target-App-e2689782" target="_blank"&gt;Exemplo de código de compartilhamento de destino&lt;/a&gt;&lt;u&gt;&lt;/u&gt; mostra como receber conteúdo compartilhado.&lt;/p&gt;  &lt;h2&gt;Projetando uma exibição de aplicativo de destino personalizada&lt;/h2&gt;  &lt;p&gt;Quando o usuário seleciona um aplicativo de destino na lista de aplicativos do painel Compartilhar, o Windows inicia o aplicativo na exibição de destino de compartilhamento do aplicativo. A exibição do aplicativo de destino é uma exibição especial hospedada no painel Compartilhar e é diferente da exibição principal do aplicativo. &lt;a href="http://blogs.msdn.com/b/windowsappdev_br/archive/2012/03/30/ativando-contratos-do-windows-8-no-seu-aplicativo.aspx" target="_blank"&gt;Ativando contratos do Windows 8 no seu aplicativo&lt;/a&gt;&lt;u&gt;&lt;/u&gt; fornece mais informações sobre exibições hospedadas e o gerenciamento da ativação dessas exibições. A exibição do aplicativo de destino foi projetada para concluir a ação de compartilhamento iniciada pelo usuário. Nessa exibição, os usuários podem visualizar seu conteúdo rapidamente, executar ações simples e confirmar sua intenção de compartilhar. &lt;/p&gt;  &lt;p&gt;Antes de olharmos para o projeto do aplicativo de destino do Food with Friends, vamos considerar um aplicativo de destino que talvez você já conheça. As imagens abaixo mostram a exibição do aplicativo de destino do aplicativo Email ao lado da exibição completa do aplicativo no &lt;a&gt;&lt;/a&gt;Windows 8.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/1307.target_2D00_app_5F00_4AC68E75.png"&gt;&lt;img title="Compartilhando de Fotos para o aplicativo de destino Email à direita" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="Compartilhando de Fotos para o aplicativo de destino Email à direita" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/0724.target_2D00_app_5F00_thumb_5F00_5583E5CA.png" width="700" height="438" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;i&gt;Figura 6: Compartilhando de Fotos para o aplicativo de destino Email à direita&lt;/i&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/1385.mail_5F00_154DCC50.png"&gt;&lt;img title="Redigindo um novo email na exibição do aplicativo principal do Email" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="Redigindo um novo email na exibição do aplicativo principal do Email" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/2055.mail_5F00_thumb_5F00_510D6503.png" width="700" height="438" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;em&gt;Figura 7: Redigindo um novo email na exibição do aplicativo principal do Email&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Observe que a exibição do aplicativo de compartilhamento de destino do Email é mais simples do que a exibição completa do aplicativo. Ela fornece uma visualização limpa e minimalista do conteúdo que o usuário compartilhará em formato de miniatura com HTML e texto associado. Ela oferece uma linha &lt;b&gt;Para&lt;/b&gt; para adicionar destinatários, uma área de entrada para a redação de uma mensagem rápida e uma maneira fácil de confirmar o envio do email com o botão &lt;b&gt;Enviar&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;Apesar dessa exibição mais simples, a exibição do aplicativo de destino do aplicativo pode ser identificada de forma nítida como um avatar do aplicativo Email, o que reforça a confiança do usuário quanto ao destino do conteúdo compartilhado.&lt;/p&gt;  &lt;h2&gt;Food with Friends como um aplicativo de compartilhamento de destino&lt;/h2&gt;  &lt;p&gt;Agora que você tem uma ideia geral sobre o projeto de exibição do aplicativo de destino, vamos ver como o Food with Friends pode criar um aplicativo de destino que ajuda os usuários a adicionar restaurantes à lista de desejos. &lt;/p&gt;  &lt;p&gt;Quando o Food with Friends recebe o pacote de dados contendo um &lt;a href="http://schema.org/Restaurant"&gt;Restaurant&lt;/a&gt; do aplicativo de origem, ele pode usar os detalhes no formato de dados &lt;a href="http://schema.org/Restaurant"&gt;Restaurant&lt;/a&gt; para identificar qual restaurante de seu banco de dados corresponde ao pacote de dados recebido. O aplicativo poderá então mostrar uma visualização desse restaurante na exibição do aplicativo de destino. Isso reforça a confiança na integridade do conteúdo compartilhado. &lt;/p&gt;  &lt;p&gt;Essa imagem mostra a exibição do aplicativo de destino do Food with Friends –&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/3857.contoso_5F00_truck3_5F00_0305058E.png"&gt;&lt;img title="Exibição do aplicativo de destino do Food with Friends" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="Exibição do aplicativo de destino do Food with Friends" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/5584.contoso_5F00_truck3_5F00_thumb_5F00_1B94A2DE.png" width="700" height="394" /&gt;&lt;/a&gt;&lt;em&gt;Figura 8: Exibição do aplicativo de destino do Food with Friends&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Como você pode ver, essa exibição do Food with Friends é simples e personalizada para um aplicativo de compartilhamento de destino. Ela mostra uma visualização do restaurante que o usuário está prestes a compartilhar e um botão simples que pode ser acionado, &lt;b&gt;Adicionar à Lista de Desejos&lt;/b&gt;, que esclarece o destino do conteúdo compartilhado no aplicativo principal. Quando o usuário toca ou clica nesse botão, ele confirma a operação de compartilhamento. Exigindo um toque ou clique aqui, ajudamos a impedir um compartilhamento acidental e a construir confiança na experiência geral de Compartilhamento. &lt;/p&gt;  &lt;p&gt;Se o aplicativo localizar vários restaurantes que correspondam às informações do conteúdo do pacote de dados, o Food with Friends usará a exibição do compartilhamento de destino para mostrar as opções e permitir que o usuário separe aqueles a serem compartilhados. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/5582.contoso_5F00_truck4_5F00_70500BD6.png"&gt;&lt;img title="Exibição do aplicativo de destino mostra as opções para que os usuários possam escolher os itens a compartilhar" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="Exibição do aplicativo de destino mostra as opções para que os usuários possam escolher os itens a compartilhar" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/6175.contoso_5F00_truck4_5F00_thumb_5F00_6FE3D8E1.png" width="700" height="394" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;em&gt;Figura 9: Exibição do aplicativo de destino mostra as opções para que os usuários possam escolher os itens a compartilhar&lt;/em&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Caso o aplicativo não possa identificar um restaurante de forma precisa ou um conjunto válido de opções com base no pacote de dados recebido, use a exibição do aplicativo de destino para comunicar essa mensagem. &lt;/p&gt;  &lt;h2&gt;Criando um QuickLink&lt;/h2&gt;  &lt;p&gt;O &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.applicationmodel.datatransfer.sharetarget.quicklink.aspx" target="_blank"&gt;QuickLink&lt;/a&gt; é uma provisão da API de compartilhamento que permite aos usuários compartilhar conteúdo para destinos familiares dentro do seu aplicativo de destino rapidamente. Um QuickLink funciona como um link personalizado para a sua exibição de destino, fornecendo ações específicas. Quando o Windows filtra a lista de aplicativos de destino disponíveis para o usuário, a lista do QuickLinks é apresentada na parte superior do painel Compartilhar como a lista de destinos disponíveis. Essas ações do usuário e destinos familiares podem incluir locais ou pessoas com os quais são feitos compartilhamentos com frequência por meio do aplicativo de destino. Por exemplo, o aplicativo Email retorna QuickLinks para contatos a que foram enviados emails anteriormente. Da mesma forma, você pode adicionar QuickLinks a pastas, grupos, blocos de anotações e listas de reprodução que você compartilha com frequência ao seu aplicativo de destino. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/5001.quicklink_5F00_2FADBF67.png"&gt;&lt;img title="Painel Compartilhar mostra um QuickLink fornecido pelo aplicativo de destino Email para contatos que receberam emails anteriormente por meio do aplicativo de destino" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="Painel Compartilhar mostra um QuickLink fornecido pelo aplicativo de destino Email para contatos " src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/1374.quicklink_5F00_thumb_5F00_334BDA44.png" width="700" height="438" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;i&gt;Figura 10: Painel Compartilhar mostra um QuickLink fornecido pelo aplicativo de destino Email para contatos      &lt;br /&gt;que receberam emails anteriormente por meio do aplicativo de destino&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;O aplicativo de destino pode oferecer um &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.applicationmodel.datatransfer.sharetarget.quicklink.aspx" target="_blank"&gt;QuickLink&lt;/a&gt;&lt;u&gt;&lt;/u&gt; com o método de objetos &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br205977.aspx" target="_blank"&gt;ShareOperation&lt;/a&gt;&lt;u&gt;&lt;/u&gt;&lt;b&gt;&lt;u&gt; &lt;/u&gt;&lt;/b&gt;&lt;b&gt;&lt;u&gt; &lt;/u&gt;&lt;/b&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.applicationmodel.datatransfer.sharetarget.shareoperation.reportcompleted.aspx" target="_blank"&gt;reportCompleted&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;u&gt; &lt;/u&gt;&lt;/b&gt;. Um QuickLink deve ter um título, um ícone e uma ID. O título (como "Enviar email para mãe") e o ícone aparecem quando o usuário toca no botão Compartilhar. A ID é o que o seu aplicativo usa para acessar quaisquer informações personalizadas, como um endereço de email, o local de uma pasta etc. Consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh758299.aspx" target="_blank"&gt;Como criar um objeto QuickLink&lt;/a&gt;&lt;u&gt;&lt;/u&gt; para saber mais sobre essa ferramenta.  &lt;/p&gt;  &lt;p&gt;Observação: os QuickLinks são úteis quando o aplicativo dá suporte a várias ações do aplicativo de destino. Como o Food with Friends somente dá suporte a uma única ação no destino de compartilhamento (&lt;b&gt;Adicionar a lista de desejos&lt;/b&gt;), i aplicativo não implementa QuickLinks. &lt;/p&gt;  &lt;h2&gt;Compartilhamento estendido e relatório de erros&lt;/h2&gt;  &lt;p&gt;Às vezes, os aplicativos de origem compartilham grandes partes de dados, como fotos, vídeos ou arquivos, resultando em transferências de dados mais demoradas. Esses tipos de operações de compartilhamento são conhecidos como &lt;i&gt;compartilhamentos estendidos&lt;/i&gt; nos quais o seu aplicativo de destino pode precisar de mais tempo para receber e processar os dados. &lt;/p&gt;  &lt;p&gt;Como o compartilhamento deve ser rápido e fluido, e a exibição do aplicativo de destino é leve, hospedada no aplicativo principal, os usuários podem tocar na exibição do aplicativo de destino para retornar ao aplicativo principal. Portanto, os aplicativos de destino não devem depender de uma interação do usuário (ou esperá-la) com a exibição de aplicativo de destino após o início do compartilhamento. Os aplicativos de destino podem depender do uso do objeto &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br205977.aspx" target="_blank"&gt;ShareOperation&lt;/a&gt;&lt;b&gt;&lt;/b&gt; e seu método para informar ao Windows que o aplicativo está processando dados. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.applicationmodel.datatransfer.sharetarget.shareoperation.reportstarted.aspx" target="_blank"&gt;reportStarted&lt;/a&gt;&lt;/b&gt; – use esse método para informar ao Windows que o seu aplicativo começou a recuperar os dados do objeto DataPackage do aplicativo de origem. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.applicationmodel.datatransfer.sharetarget.shareoperation.reportdataretrieved.aspx" target="_blank"&gt;reportDataRetrieved&lt;/a&gt;&lt;/b&gt;&lt;b&gt;&lt;u&gt; &lt;/u&gt;&lt;/b&gt;– use esse método para informar ao Windows que o seu aplicativo concluiu a recuperação dos dados do pacote.&lt;/li&gt;    &lt;li&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.applicationmodel.datatransfer.sharetarget.shareoperation.reportcompleted.aspx" target="_blank"&gt;reportCompleted&lt;/a&gt;&lt;/b&gt;&lt;b&gt;&lt;u&gt; – &lt;/u&gt;&lt;/b&gt;use esse método para informar ao Windows que o seu aplicativo concluiu a operação de compartilhamento.&lt;b&gt;&lt;u&gt; &lt;/u&gt;&lt;/b&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Quando o seu aplicativo estiver processando os dados para um compartilhamento estendido, forneça ao usuário uma interface do usuário de andamento na exibição do aplicativo de destino. Isso informa o usuário de que a solicitação dele está em andamento e reforça a confiança quando ele retornar ao seu aplicativo e verificar o progresso da operação de compartilhamento. Consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh465487.aspx" target="_blank"&gt;Quickstart: adding progress controls&lt;/a&gt;&lt;u&gt;&lt;/u&gt; (Quickstart: adicionando controles de progresso) para saber mais sobre os controles de progresso no Windows 8. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/0702.progress_2D00_bar_5F00_52FAB40C.png"&gt;&lt;img title="barra de progresso" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="barra de progresso" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/3438.progress_2D00_bar_5F00_thumb_5F00_40B1ED4A.png" width="700" height="438" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;i&gt;Figura 11: A exibição do aplicativo de destino do Email mostra um anel de progresso ao concluir um compartilhamento estendido, como o envio de anexos grandes&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Se algo der errado durante a transferência de dados e o seu aplicativo de destino tiver de concluir a operação de compartilhamento, você pode usar o &lt;b&gt;&lt;u&gt;reportError&lt;/u&gt;&lt;/b&gt; para enviar uma mensagem de erro para o Windows. O usuário verá a mensagem quando conferir o status do compartilhamento no painel Compartilhar. Depois que você reportar o erro, o seu aplicativo será fechado e o compartilhamento, concluído. O usuário precisará iniciar novamente para compartilhar o conteúdo com o seu aplicativo.&lt;/p&gt;  &lt;p&gt;No exemplo do compartilhamento de destino do Food with Friends, se o aplicativo não puder identificar um restaurante em seu banco de dados que corresponda ao restaurante que foi compartilhado a partir do aplicativo de origem pelo formato de dados &lt;a href="http://schema.org/Restaurant" target="_blank"&gt;Restaurant&lt;/a&gt;&lt;u&gt;&lt;/u&gt;, ele deverá reportar um erro. &lt;/p&gt;  &lt;h2&gt;Vamos recapitular!&lt;/h2&gt;  &lt;p&gt;O compartilhamento entre aplicativos fornece uma ótima oportunidade de compartilhar aplicativos de destino. Habilitando o seu aplicativo para receber conteúdo compartilhado, os seus usuários aproveitarão o seu aplicativo mesmo quando estiverem envolvidos em outra atividade. Esperamos que agora você compreenda melhor os princípios de design, os tipos de dados, as classes e propriedades que você pode usar para criar um ótimo destino de compartilhamento. Estamos ansiosos para saber como os seus aplicativos transformarão o conteúdo compartilhado e criarão experiências mais amplas e sofisticadas para o usuário final.&lt;/p&gt;  &lt;p&gt;Se desejar saber mais sobre o compartilhamento, leia &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh464923.aspx" target="_blank"&gt;Copiando e trocando dados&lt;/a&gt;&lt;u&gt;&lt;/u&gt; e &lt;a href="http://code.msdn.microsoft.com/windowsapps/Sharing-Content-Target-App-e2689782" target="_blank"&gt;Share content target app sample&lt;/a&gt;&lt;u&gt;&lt;/u&gt; (Exemplo de aplicativo de destino de compartilhamento de conteúdo) para começar!&lt;/p&gt;  &lt;p&gt;Ishita Kapur&lt;/p&gt;  &lt;p&gt;Gerente de programas&lt;/p&gt;  &lt;p&gt;Experiência do usuário do Windows&lt;/p&gt; &lt;!-- Title: “Compartilhando com o seu aplicativo de destino” Tags: “compartilhando aplicativos, aplicativos de destino, conteúdo compartilhado, compartilhar destino, compartilhando aplicativos de destino” --&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10418961" width="1" height="1"&gt;</content><author><name>Windows 8 Team</name><uri>http://blogs.msdn.com/win8apps_4000_live.com/ProfileUrlRedirect.ashx</uri></author><category term="conteúdo compartilhado" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/conte_FA00_do+compartilhado/" /><category term="compartilhar destino" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/compartilhar+destino/" /><category term="compartilhando aplicativos" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/compartilhando+aplicativos/" /><category term="aplicativos de destino" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/aplicativos+de+destino/" /><category term="compartilhando aplicativos de destino" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/compartilhando+aplicativos+de+destino/" /></entry><entry><title>Desenvolva um aplicativo avançado com NFC</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/windowsappdev_br/archive/2013/04/24/desenvolva-um-aplicativo-avan-231-ado-com-nfc.aspx" /><id>http://blogs.msdn.com/b/windowsappdev_br/archive/2013/04/24/desenvolva-um-aplicativo-avan-231-ado-com-nfc.aspx</id><published>2013-04-24T22:40:52Z</published><updated>2013-04-24T22:40:52Z</updated><content type="html">&lt;div class="PostContent"&gt; &lt;p&gt;A comunicação a curta distância (NFC, Near Field Communication) é uma tecnologia sem fio emergente de curto alcance. Com um alcance preciso de 2 cm, os usuários podem enviar/receber conteúdo tocando em dispositivos que estejam próximos um do outro para juntá-los. O toque permite que você selecione algo (ou alguém) rapidamente. Além de ser rápido, também é fácil de aprender. Basta ver para entender. Não é preciso ler um manual.&lt;/p&gt;  &lt;p&gt;Por exemplo, imagine que você está vendo fotos com uma amiga e ela quer que você envie essas fotos para ela. Com a NFC, você só precisa tocar no seu dispositivo para enviá-las. Parece simples demais? Talvez, mas a ideia principal é simplificar o compartilhamento de conteúdo entre dispositivos.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/1732.NFC_2D00_image_5F00_04E645BB.png"&gt;&lt;img title="&amp;#39;Esta imagem mostra o Nokia 360 Speaker compartilhando as informações de emparelhamento Bluetooth com um Windows Phone" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="&amp;#39;Esta imagem mostra o Nokia 360 Speaker compartilhando as informações de emparelhamento Bluetooth com um Windows Phone" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/3566.NFC_2D00_image_5F00_thumb_5F00_38420917.png" width="400" height="348" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;Figura 1: Esta imagem mostra o Nokia 360 Speaker compartilhando as informações    &lt;br /&gt;de emparelhamento Bluetooth com um Windows Phone&lt;/p&gt;  &lt;p&gt;Assim como o Bluetooth e o Wi-Fi, NFC é um protocolo sem fio padrão definido pela &lt;a href="http://www.nfc-forum.org/home/" target="_blank"&gt;NFC Forum&lt;/a&gt;&lt;u&gt;&lt;/u&gt;. &lt;u&gt;&lt;/u&gt;Seu PC precisa de um rádio de NFC. Há muitos PCs com Windows 8 que têm rádios de NFC integrados diretamente a eles. Se a NFC não vier inclusa como parte do seu PC, você pode comprar dongles e conectá-los ao PC.&lt;/p&gt;  &lt;p&gt;A NFC oferece funcionalidades bacanas. Os usuários podem tocar e enviar fotos, tocar em um menu para fazer um pedido em um restaurante, ou até mesmo tocar para emparelhar um dispositivo Bluetooth. Esses cenários são bastante diferentes entre si, mas o que eles têm em comum é o ¨toque¨ para iniciar a experiência. A NFC é usada em vários tipos de dispositivos, como PCs, telefones, alto-falantes, headsets, telas sem fio etc. para transformar a conexão entre dispositivos em uma experiência verdadeiramente intuitiva. Além disso, a NFC usa marcas de RFID; antenas leves, passivas e bastante econômicas que podem conter um volume considerável de dados e aderem a praticamente qualquer objeto, geralmente cartazes. Por exemplo, para comprar o ingresso de um filme bastaria tocar no cartaz do filme! Isso se chama marca de NFC. Apresentaremos um exemplo básico do toque em um marca de NFC para demonstrar os principais conceitos da API de NFC.&lt;/p&gt;  &lt;p&gt;Mas, primeiro, vamos explicar melhor o que significa tocar para juntar dispositivos que estão próximos.&lt;/p&gt;  &lt;h2&gt;Definição de ¨toque¨&lt;/h2&gt;  &lt;p&gt;Assim como você toca para emparelhar um mouse Bluetooth ou para compartilhar fotos, também é importante tocar para juntar dispositivos que estejam próximos. Ainda que o conceito de toque já esteja bastante difundido, o toque para juntar um PC a outro dispositivo é uma novidade para a maioria das pessoas. Apresentamos algumas diretrizes do toque que mostram aos usuários:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div align="center"&gt;&lt;b&gt;Onde é possível tocar para juntar os dispositivos&lt;/b&gt;: com o uso da marca de toque, também conhecida como a marca visual de ¨Tocar e Fazer¨, que indica onde a antena de NFC está localizada. Dependendo do modelo do PC, há diferentes partes que podem ser tocadas. Por exemplo, você pode tocar na parte traseira de um tablet ou na parte frontal de um tudo-em-um. Esta é a aparência da marca em qualquer PC com Windows 8 habilitado para NFC:         &lt;br /&gt;&lt;/div&gt;     &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/0830.NFC_2D00_logo_5F00_66E85720.png"&gt;&lt;img title="Marca visual de Tocar e Fazer" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="Marca visual de Tocar e Fazer" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/5611.NFC_2D00_logo_5F00_thumb_5F00_3FAE0DEB.png" width="200" height="147" /&gt;&lt;/a&gt;      &lt;p align="center"&gt;Figura 2: Marca visual de Tocar e Fazer&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Os dispositivos estão se comunicando entre si&lt;/b&gt;: durante o toque, os usuários devem ter a certeza de que algo está acontecendo, mesmo que não possam ver os dados que estão sendo transferidos. Por isso, o Windows reproduz um som quando os dispositivos estão próximos e se comunicando entre si.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;O Windows executa essas ações automaticamente, para que você não precise se preocupar com isso. Para obter mais informações sobre os elementos da experiência do usuário, consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/hardware/hh770524.aspx" target="_blank"&gt;Especificações de implementação da proximidade de curta distância&lt;/a&gt;&lt;u&gt;&lt;/u&gt;. Tendo isso em mente, vamos explorar alguns cenários bacanas que você pode experimentar com a NFC.&lt;/p&gt;  &lt;h2&gt;Quando usar a NFC &lt;/h2&gt;  &lt;p&gt;Use a NFC quando um usuário precisar selecionar algo ou alguém no seu aplicativo. A NFC oferece uma forma intuitiva de selecionar, e é geralmente mais rápida (e mais bacana!) que a busca manual. O toque é o gatilho que inicia a experiência e, dependendo do seu aplicativo, a experiência pode ir desde o recebimento de uma foto até a criação de uma lista de reprodução. A decisão do que acontece depois do toque só depende do seu aplicativo. Então, para simplificar, classificamos esta gama de ações como experiências de ¨Tocar e Fazer¨.&lt;/p&gt;  &lt;p&gt;Apresentamos, abaixo, alguns exemplos do uso da NFC para selecionar algo em um aplicativo. Você poderia tocar e...&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;u&gt;Obter informações de um cartaz&lt;/u&gt;: &lt;a href="http://www.nfc-forum.org/news/pr/view?item_key=2c0cb92de7d47bbbe7c99f13912b3307fc03c1c6" target="_blank"&gt;As marcas de NFC&lt;/a&gt; são marcas de RFID leves e econômicas que custam entre US$ 0,15 e US$ 1,00 (o preço depende do custo de impressão). Elas podem ser comparadas a códigos de barras 2D, mas são mais fáceis e rápidas de usar. Tocar em uma marca é mais confortável do que tirar uma foto do código de barra (e esperar que a câmera pegue o ângulo certo). Há cada vez mais fabricantes inserindo marcas em cartazes em áreas movimentadas, como aeroportos, estações de metrô e paradas de ônibus. As marcas de NFC podem conter de 48 B a 4 KB de dados. Você pode programar uma marca para iniciar seu aplicativo em uma página específica. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;T&lt;u&gt;rocar informações de contato&lt;/u&gt;: em vez de soletrar seus dados de contato para um amigo e esperar que ele tenha anotado certo, toque nos dispositivos para juntá-los e trocar as informações de contato. Assim como no caso acima, você pode programar suas informações em um cartão de visitas/marca de NFC ou transferir as informações diretamente por meio de um aplicativo.&lt;/li&gt;    &lt;li&gt;&lt;u&gt;Reproduzir sua estação de rádio favorita&lt;/u&gt;: use uma marca de NFC para iniciar uma estação de rádio em casa onde você estiver; no trabalho, na academia ou no carro. Você pode até mesmo ter várias estações de rádio programadas em diferentes marcas, como, por exemplo: uma marca para a academia, outra para o trabalho e outra para a hora de dormir.&lt;/li&gt;    &lt;li&gt;&lt;u&gt;Fazer seu pedido em um restaurante cheio&lt;/u&gt;: ir a um restaurante badalado na hora do jantar significa ter de esperar um bom tempo para simplesmente fazer um pedido. Em vez disso, toque em uma marca na mesa para fazer o seu pedido.&lt;/li&gt;    &lt;li&gt;&lt;u&gt;Jogar um jogo multiplayer com um amigo: &lt;/u&gt;você pode se conectar facilmente a um jogo multiplayer como Battleship, Xadrez ou Scrabble com um amigo, tocando nos dispositivos para juntá-los. Após o toque, a conexão persiste por meio de um transporte fora de banda com alcance e taxa de transferência maiores, como Bluetooth ou Wi-Fi-Direct. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Agora que já temos uma boa noção sobre quando podemos usar a NFC, vamos para a parte divertida: desenvolver um aplicativo com nossas APIs de proximidade do Windows 8.&lt;/p&gt;  &lt;h2&gt;Como implementar a NFC &lt;/h2&gt;  &lt;p&gt;Como você pôde observar, a NFC facilita várias tarefas diárias para os usuários finais. Ajustar um alarme, por exemplo. Tenho certeza de que todo mundo já passou pela experiência de colocar a hora errada no alarme para despertar. Quando já está tarde e você só quer dormir, talvez não seja a melhor hora para fazer isso. A NFC facilita essa tarefa. Basta você tocar em uma marca predefinida, confirmar e ir dormir sem preocupações. Então, para ajudar os usuários nessa tarefa diária, suponha que você criou um aplicativo básico de alarme que permite aos usuários ajustar um alarme com o uso de uma marca de NFC. Essa suposição se divide em dois cenários.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;u&gt;Ajustar um alarme &lt;b&gt;na&lt;/b&gt; marca&lt;/u&gt;: As marcas de NFC podem ser reutilizáveis, por isso o aplicativo deve permitir que os usuários programem um alarme. Por exemplo, um usuário pode querer programar diferentes alarmes: um para os dias úteis e outro para o fim de semana. Isso se chama publicar dados em uma marca.&lt;/li&gt;    &lt;li&gt;&lt;u&gt;Ajustar um alarme &lt;b&gt;a partir&lt;/b&gt; da marca&lt;/u&gt;: Depois que o usuário tocar em uma marca, o aplicativo deve ser iniciado para confirmar o ajuste do alarme. Isso significa que o aplicativo pode ser iniciado com contexto ou argumentos. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;A API de NFC oferece várias maneiras de cumprir o mesmo objetivo, mas abordarei a forma mais simples de implementar esse cenário.&lt;/p&gt;  &lt;p&gt;Vamos ver, passo a passo, como ajustar um alarme em uma marca de NFC:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Mário inicia o aplicativo de alarme e define uma hora, digamos, 7:00. Isso é só o alarme, ainda sem nenhum envolvimento com a NFC.&lt;/li&gt;    &lt;li&gt;Mário seleciona uma opção para ¨Ajustar alarme em marca de NFC¨. Nesse momento, o aplicativo chama as APIs de NFC para publicar informações no rádio NFC, especificamente uma cadeia de caracteres identificadora de aplicativo &amp;amp; 07:00. As marcas de NFC usam um formato de mensagem padronizado: o NDEF (formato de troca definido de NFC). Seu aplicativo &lt;b&gt;não &lt;/b&gt;precisa se preocupar com a formatação de dados em uma mensagem de NDEF. O Windows faz isso para você! Agora, o usuário pode tocar na marca de NFC.&lt;/li&gt;    &lt;li&gt;Mário toca na marca com o uso do PC, e o aplicativo confirma a programação da marca. Depois que a marca é tocada, é importante que os usuários saibam que seu aplicativo programou a marca com êxito. Como discutimos anteriormente, o toque no PC é um conceito novo para a maioria das pessoas, por esse motivo, a confirmação deixa o usuário confiante de que o que ele fez deu certo. O aplicativo sabe que uma mensagem foi transmitida com êxito registrando a informação em um manipulador de mensagens transmitidas.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;As APIs de NFC podem ser encontradas no namespace &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.proximity.aspx" target="_blank"&gt;Windows.Networking.Proximity&lt;/a&gt;. Elas desempenharão uma função na etapa 2, depois que o usuário selecionar a opção ¨Ajustar alarme em marca de NFC¨. Primeiro, o aplicativo inicializa um objeto de proximidade. O objeto de proximidade é usado para informar quando uma marca (ou dispositivo) está dentro/fora do alcance. Depois, adicionaremos um manipulador de eventos DeviceArrival. O manipulador detecta quando a marca é tocada, o que significa que podemos começar a escrever informações na marca. É útil informar aos usuários que eles estão escrevendo em uma marca, para que eles não saiam do alcance. Você pode usar o mesmo evento para detectar quando qualquer dispositivo de proximidade é tocado.&lt;/p&gt;  &lt;p&gt;O trecho de código a seguir mostra como inicializar e adicionar um manipulador de eventos DeviceArrival.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;div&gt;     &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; proximityDevice;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; initializeProximityDevice() {&lt;br /&gt;    proximityDevice = Windows.Networking.Proximity.ProximityDevice.getDefault();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (proximityDevice) {&lt;br /&gt;        proximityDevice.addEventListener(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;devicearrived&amp;quot;&lt;/span&gt;, proximityDeviceArrived);&lt;br /&gt;       &lt;br /&gt;}&lt;br /&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; {&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// No NFC radio on the PC, display an error message&lt;/span&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; proximityDeviceArrived(device) {&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// Let the user know we’re ‘Writing to Tag’&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;div&gt;
  &lt;br /&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/div&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; InitializeProximityDevice()&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;Windows.Networking.Proximity.ProximityDevice proximityDevice;&lt;br /&gt;    proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (proximityDevice != &lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;) {&lt;br /&gt;        proximityDevice.DeviceArrived += ProximityDeviceArrived;&lt;br /&gt;    &lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// No NFC radio on the PC, display an error message&lt;/span&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; ProximityDeviceArrived(Windows.Networking.Proximity.ProximityDevice device)&lt;br /&gt;{&lt;br /&gt;            &lt;span style="color: rgb(0, 128, 0);"&gt;// Let the user know we’re ‘Writing to Tag’&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;
  &lt;br /&gt;Em seguida, publicamos informações na marca. O aplicativo publica duas coisas: uma cadeia de caracteres identificadora de aplicativo, que consiste em uma ID e uma plataforma de aplicativos, e argumentos de inicialização. No Windows 8, a ID de aplicativo é &amp;lt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.applicationmodel.packageid.familyname.aspx" target="_blank"&gt;nome da família do pacote&lt;/a&gt;&amp;gt;!&amp;lt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br211415.aspx" target="_blank"&gt;ID de aplicativo&lt;/a&gt;&amp;gt;, e a plataforma de aplicativos é ¨Windows¨. Você deve copiar o valor da ID de aplicativo do atributo ID do elemento Application no manifesto do pacote do seu aplicativo. O argumento de inicialização é ¨07:00¨; o alarme definido pelo usuário. Chamaremos isso de a &lt;b&gt;mensagem&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Se o aplicativo funcionar em várias plataformas, você poderá publicar IDs e plataformas de aplicativos alternativas, para que você possa tocar na mesma marca em outro dispositivo compatível com NFC, como o Windows Phone 8! Para obter mais informações sobre &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.proximity.peerfinder.alternateidentities.aspx" target="_blank"&gt;IDs alternativas&lt;/a&gt;, visite o MSDN.&lt;/p&gt;

&lt;p&gt;O aplicativo publica os dados na marca usando um método chamado &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh701134.aspx" target="_blank"&gt;publishBinaryMessage&lt;/a&gt;. O método assume três parâmetros: messageType, mensagem e uma função messageTransmittedHandler. Definiremos messageType como ¨LaunchApp:WriteTag¨, que informa ao Windows que seu aplicativo quer escrever informações em uma marca de NFC. A mensagem é apenas a mensagem que definimos anteriormente (argumentos de inicialização e cadeia de caracteres identificadora de aplicativo). Precisaremos armazenar a mensagem como mensagem binária em um buffer. A função messageTransmittedHandler registra retornos de chamadas. Com isso, seu aplicativo sabe que a mensagem foi escrita com êxito na marca. Usaremos essa função para informar duas coisas ao usuário: escrevemos uma mensagem com êxito na marca e a marca não precisa mais estar dentro do alcance.&lt;/p&gt;

&lt;p&gt;As mensagens continuam sendo publicadas até a função StopPublishingMessage ser chamada, ou quando o objeto ProximityDevice for liberado. Neste exemplo, usaremos a função de interrupção. PublishBinaryMessage retorna uma ID de publicação. Usaremos essa mesma ID de publicação para interromper a publicação da mensagem no rádio de NFC.&lt;/p&gt;

&lt;p&gt;O trecho de código a seguir mostra como escrever dados em uma marca de NFC.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; proximityDevice;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; getAlarmTime(){&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;// Grab time set by the user, call this variable ‘Alarm’&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; Alarm;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; publishLaunchApp() {&lt;br /&gt;    proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault();&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (proximityDevice) {&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// The format of the app launch string is: &amp;quot;&amp;lt;args&amp;gt;\tWindows\t&amp;lt;AppName&amp;gt;&amp;quot;.&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// The string is tab or null delimited.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// The &amp;lt;args&amp;gt; string can be an empty string (&amp;quot;&amp;quot;).&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; launchArgs = getAlarmTime();&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// The format of the AppName is: PackageFamilyName!PRAID.&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; praid = &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;AlarmApp&amp;quot;&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 0);"&gt;// The Application Id value from your package.appxmanifest.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; appName = Windows.ApplicationModel.Package.current.id.familyName + &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;!&amp;quot;&lt;/span&gt; + praid;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; launchAppMessage = launchArgs + &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;\tWindows\t&amp;quot;&lt;/span&gt; + appName;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; dataWriter = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Windows.Storage.Streams.DataWriter();&lt;br /&gt;        dataWriter.unicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.utf16LE;&lt;br /&gt;        dataWriter.writeString(launchAppMessage);&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; launchAppPubId =&lt;br /&gt;             proximityDevice.publishBinaryMessage(&lt;br /&gt;                 &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;LaunchApp:WriteTag&amp;quot;&lt;/span&gt;, &lt;br /&gt;                 dataWriter.detachBuffer(), &lt;br /&gt;                 proximityWriteTagLaunchAppMessageTransmitCallback);&lt;br /&gt;        &lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (launchAppPubId != -1) {&lt;br /&gt;            &lt;span style="color: rgb(0, 128, 0);"&gt;// Stop publishing the message on NFC radio&lt;/span&gt;&lt;br /&gt;        proximityDevice.stopPublishingMessage(launchAppPubId);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;     }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; proximityWriteTagLaunchAppMessageTransmitCallback() {&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;// Inform the user that: the message has been successfully written to a tag &amp;amp; the tag no longer needs to be in range&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;div&gt;
  &lt;br /&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/div&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;Windows.Networking.Proximity.ProximityDevice proximityDevice;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; GetAlarmTime(){&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;// Grab time set by the user, call this variable ‘Alarm’&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; Alarm;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; PublishLaunchApp()&lt;br /&gt;{&lt;br /&gt;    proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault();&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (proximityDevice != &lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// The format of the app launch string is: &amp;quot;&amp;lt;args&amp;gt;\tWindows\t&amp;lt;AppName&amp;gt;&amp;quot;.&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// The string is tab or null delimited.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// The &amp;lt;args&amp;gt; string can be an empty string (&amp;quot;&amp;quot;).&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; launchArgs = getAlarmTime();&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// The format of the AppName is: PackageFamilyName!PRAID.&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; praid = &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;MyAppId&amp;quot;&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 0);"&gt;// The Application Id value from your package.appxmanifest.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; appName = Windows.ApplicationModel.Package.Current.Id.FamilyName + &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;!&amp;quot;&lt;/span&gt; + praid;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; launchAppMessage = launchArgs + &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;\tWindows\t&amp;quot;&lt;/span&gt; + appName;&lt;br /&gt;&lt;br /&gt;        var dataWriter = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Windows.Storage.Streams.DataWriter();&lt;br /&gt;        dataWriter.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf16LE;&lt;br /&gt;        dataWriter.WriteString(launchAppMessage);&lt;br /&gt;        var launchAppPubId =&lt;br /&gt;        proximityDevice.PublishBinaryMessage(&lt;br /&gt;            &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;LaunchApp:WriteTag&amp;quot;&lt;/span&gt;, dataWriter.DetachBuffer(), &lt;br /&gt;            proximityWriteTagLaunchAppMessageTransmitCallback);&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (launchAppPubId!= -1)&lt;br /&gt;    {&lt;br /&gt;        proximityDevice.StopPublishingMessage(launchAppPubId);&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;// Stop publishing the message on NFC radio&lt;/span&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; proximityWriteTagLaunchAppMessageTransmitCallback(&lt;br /&gt;    Windows.Networking.Proximity.ProximityDevice sender,&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt; messageId)&lt;br /&gt;{&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// Inform the user that: the message has been successfully written to a tag &amp;amp; the tag no longer needs to be in range&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;br /&gt;E é isso! Agora você já sabe como escrever em uma marca de NFC por meio de um aplicativo da Windows Store. É bem simples, então vamos para o cenário seguinte: ajustar um alarme &lt;b&gt;a partir&lt;/b&gt; da marca. Vamos ver, passo a passo, como ler um alarme de uma marca de NFC: 

&lt;ol&gt;
  &lt;li&gt;Mário está lendo um livro digital/escrevendo um email/jogando/usando o Windows e se lembra que precisa ajustar o alarme para segunda-feira de manhã. Ele pega sua marca de ¨Alarme de fim de semana¨e toca nela pelo PC. Ele recebe uma notificação do sistema convidando-o a iniciar seu aplicativo de alarme. O Windows cuida de tudo até esse ponto. Seu aplicativo não precisa fazer nada.&lt;/li&gt;

  &lt;li&gt;Mário aceita, e seu aplicativo é inicializado, exibindo a tela ¨Confirmar alarme¨ e o horário 7:00. Depois que o Mário aceita a notificação do sistema, o Windows envia os argumentos de inicialização (iguais aos de cima) ao seu aplicativo durante a ativação. Isso se chama inicialização contextual, e é o mesmo que inicializar o aplicativo em uma página específica.&lt;/li&gt;

  &lt;li&gt;Mário define o alarme. Isso é só o alarme, sem a NFC.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;É bem fácil obter os argumentos de inicialização da marca de NFC. O aplicativo precisa manipular inicialização contextual de uma marca de NFC. A inicialização contextual é o mesmo que inicializar seu aplicativo em uma página específica. Nossos argumentos de inicialização especificam um alarme (7:00), que seu aplicativo usa para exibir um alarme proposto. Além disso, se o seu aplicativo não estiver instalado no PC, o Windows convidará o Mário a instalar o aplicativo a partir da Windows Store, automaticamente!&lt;/p&gt;

&lt;p&gt;O trecho de código a seguir mostra como implementar a inicialização contextual.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;app.onactivated = &lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; (args) {&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (args.detail.kind === activation.ActivationKind.launch) {&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (args.detail.arguments == &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Windows.Networking.Proximity.PeerFinder:StreamSocket&amp;quot;&lt;/span&gt;) {&lt;br /&gt;            &lt;span style="color: rgb(0, 128, 0);"&gt;//do nothing here.&lt;/span&gt;&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; {&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;// Use args.detail.arguments to parse out ’07.00’ string, and display to the user&lt;/span&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        args.setPromise(WinJS.UI.processAll());&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;div&gt;
  &lt;br /&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/div&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;async &lt;span style="color: rgb(0, 0, 255);"&gt;protected&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; OnLaunched(LaunchActivatedEventArgs args)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (args.Arguments == &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Windows.Networking.Proximity.PeerFinder:StreamSocket&amp;quot;&lt;/span&gt;)&lt;br /&gt;            {&lt;br /&gt;                _isLaunchedByTap = &lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;// Use args.Arguments to parse out ’07.00’ string, and display to the user&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            }&lt;br /&gt;            Window.Current.Activate();&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;
  &lt;br /&gt;Isso é tudo que seu aplicativo precisa fazer para dar suporte à leitura e gravação em uma marca de NFC. Bem simples para um cenário de tecnologia tão avançada! Antes de terminar, vamos falar sobre uma questão de higiene: o tratamento de erros.&lt;/p&gt;

&lt;h2&gt;Tratamento de erros&lt;/h2&gt;

&lt;p&gt;Há alguns erros comuns que seu aplicativo pode encontrar.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A marca tocada não tem o formato NDEF. O Windows 8 não oferece suporte automático à reformatação de uma marca em NDEF, por isso você precisa baixar e instalar um formatador de NDEF.&lt;/li&gt;

  &lt;li&gt;A marca tocada é somente para leitura. Algumas marcas de NFC podem estar bloqueadas com permissão somente de leitura (como as antigas &lt;a href="http://pt.wikipedia.org/wiki/VHS" target="_blank"&gt;fitas de VHS&lt;/a&gt;).&lt;/li&gt;

  &lt;li&gt;A marca tocada é pequena demais e não comporta todos os dados.&lt;/li&gt;

  &lt;li&gt;O PC de um usuário não tem NFC. Como mencionei desde o início, a NFC é uma tecnologia emergente cuja adoção ainda está sendo difundida. Para verificar se um PC oferece suporte à proximidade, use o método ProximityDevice.getDefault(); o método retornará NULL se não houver rádios NFC instalados.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;É divertida e intuitiva!&lt;/h2&gt;

&lt;p&gt;A NFC finalmente chegou, pronta para os consumidores padrão, e o Windows tem o ecossistema e uma experiência de usuário completa e bem projetada. A tecnologia tem muito potencial para desenvolver aplicativos e experiências em dispositivos altamente intuitivos. É divertida e intuitiva. &lt;/p&gt;

&lt;p&gt;A NFC é um assunto bastante vasto, por isso fique atento nas próximas postagens no blog sobre outras experiências bacanas para desenvolvedores de NFC no Windows 8.&lt;/p&gt;

&lt;p&gt;Para saber mais sobre NFC e proximidade, consulte os recursos abaixo.&lt;/p&gt;

&lt;h2&gt;Recursos&lt;/h2&gt;

&lt;div align="center"&gt;
  &lt;table class="b8table" cellspacing="0" cellpadding="3" width="298" align="center" border="0"&gt;&lt;tbody&gt;
      &lt;tr&gt;
        &lt;td valign="top" width="197"&gt;
          &lt;p&gt;&lt;strong&gt;Link&lt;/strong&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="99"&gt;
          &lt;p&gt;&lt;strong&gt;Types&lt;/strong&gt;&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="197"&gt;
          &lt;p align="left"&gt;&lt;u&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh465215.aspx" target="_blank"&gt;Diretrizes para desenvolver usando a proximidade&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="99"&gt;
          &lt;p&gt;Documento&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="197"&gt;
          &lt;p align="left"&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br241250.aspx" target="_blank"&gt;APIs de proximidade&lt;/a&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="99"&gt;
          &lt;p&gt;Documento&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="197"&gt;
          &lt;p align="left"&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh967765.aspx" target="_blank"&gt;Testando e resolvendo problemas de proximidade em aplicativos&lt;/a&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="99"&gt;
          &lt;p&gt;Documento&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="197"&gt;
          &lt;p align="left"&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh465223.aspx" target="_blank"&gt;Publicação e subscrição (com mais detalhes)&lt;/a&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="99"&gt;
          &lt;p&gt;Documento&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="197"&gt;
          &lt;p align="left"&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Proximity-Sample-88129731" target="_blank"&gt;Amostra de aplicativo com proximidade&lt;/a&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="99"&gt;
          &lt;p&gt;Amostra&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="197"&gt;
          &lt;p align="left"&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/pt-br/category/windowsapps" target="_blank"&gt;Tem alguma pergunta sobre proximidade? Pergunte aqui&lt;/a&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="99"&gt;
          &lt;p&gt;Fórum&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;Obrigada,&lt;/p&gt;

&lt;p&gt;Priya Dandawate 
  &lt;br /&gt;gerente de programas, dispositivos e rede&lt;/p&gt;

&lt;p&gt;Com as contribuições de: Max Morris, Marzena Makuta, Mike Loholt, Jake Sabulsky e Vishal Mhatre&lt;/p&gt;

&lt;!-- Title: “Desenvolva um aplicativo avançado com NFC” Tags: “compartilhamento, NFC, comunicação a curta distância, compartilhar arquivos, emparelhamento Bluetooth, compartilhar dados” --&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10413821" width="1" height="1"&gt;</content><author><name>Windows 8 Team</name><uri>http://blogs.msdn.com/win8apps_4000_live.com/ProfileUrlRedirect.ashx</uri></author><category term="comunicação a curta distância" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/comunica_E700E300_o+a+curta+dist_E200_ncia/" /><category term="compartilhar arquivos" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/compartilhar+arquivos/" /><category term="compartilhar dados" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/compartilhar+dados/" /><category term="NFC" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/NFC/" /><category term="emparelhamento Bluetooth" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/emparelhamento+Bluetooth/" /><category term="compartilhamento" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/compartilhamento/" /></entry><entry><title>Criando aplicativos conectados da Windows Store</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/windowsappdev_br/archive/2013/04/17/criando-aplicativos-conectados-da-windows-store.aspx" /><id>http://blogs.msdn.com/b/windowsappdev_br/archive/2013/04/17/criando-aplicativos-conectados-da-windows-store.aspx</id><published>2013-04-17T20:57:52Z</published><updated>2013-04-17T20:57:52Z</updated><content type="html">&lt;div class="postcontent"&gt;  &lt;p&gt;As pessoas estão sempre cercadas por dispositivos conectados a uma rede. Até mesmo as geladeiras e máquinas de lavar mais modernas podem se conectar à Internet e a redes domésticas. Por isso, é claro que os usuários finais esperam que seus aplicativos também estejam conectados. Esses ¨aplicativos conectados¨ consomem o conteúdo mais recente da Web: mídias sociais, mídias digitais, blogs e outros tipos de conteúdo. O desenvolvimento de aplicativos conectados tornou-se a norma, ainda assim pode ser desafiador lidar com problemas comuns, como a perda da conexão à rede, os custos de redes limitadas ou problemas de desempenho. Mais do que nunca, o Windows 8 facilita a escrita de um aplicativo conectado. &lt;/p&gt;  &lt;p&gt;Nesta postagem, apresentaremos algumas dicas úteis para você proporcionar uma experiência de conexão rápida, fluida e descomplicada aos usuários dos seus aplicativos da Windows Store. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Escolha a API certa para os seus cenários&lt;/li&gt;    &lt;li&gt;Escolha as funcionalidades de rede certas&lt;/li&gt;    &lt;li&gt;Adapte o comportamento do aplicativo para redes limitadas&lt;/li&gt;    &lt;li&gt;Reaja à alteração de status da rede&lt;/li&gt;    &lt;li&gt;Conteúdo de cache para fluidez&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Agora, vamos falar mais sobre os detalhes de cada dica.&lt;/p&gt;  &lt;h2&gt;Escolha a API certa&lt;/h2&gt;  &lt;p&gt;Para construir uma casa, você vai querer usar as ferramentas certas. Um martelo para martelar pregos, uma serra para cortar tábuas e uma chave de fenda para apertar os parafusos. Da mesma forma, você buscará as APIs de rede certas para desenvolver um aplicativo conectado da Windows Store. O Windows 8 oferece uma grande variedade de APIs de rede que seu aplicativo pode usar para se comunicar com outros computadores e dispositivos pela Internet ou em redes privadas. Por isso, o primeiro passo é determinar os recursos de rede de que seu aplicativo precisa. &lt;/p&gt;  &lt;p&gt;O cenário de rede mais comum é o acesso a um site para obter ou armazenar informações. Um exemplo simples seria um jogo que usa um site para armazenar informações e pontuações dos usuários. Um exemplo mais complexo seria um aplicativo que se conecta a um serviço Web baseado em REST e usa uma biblioteca fornecida pelo serviço Web para acessar ou armazenar informações. O Windows 8 conta com várias APIs que se conectam a sites e serviços Web. Com essas APIs, seu aplicativo pode acessar serviços Web que dão suporte a REST ou enviar comandos básicos de protocolo HTTP (como GET e POST) a um servidor Web. Para o acesso à Web, a API certa depende da linguagem que você usa para desenvolver o aplicativo:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh453379.aspx" target="_blank"&gt;XMLHTTPRequest&lt;/a&gt; e &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br229787.aspx" target="_blank"&gt;WinJS.xhr&lt;/a&gt;: aplicativos escritos em JavaScript e HTML.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/system.net.http.httpclient.aspx" target="_blank"&gt;HttpClient&lt;/a&gt;: aplicativos escritos em C# ou Visual Basic .NET e XAML.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh831163.aspx" target="_blank"&gt;XML HTTP Request 2&lt;/a&gt; (IXHR2): aplicativos escritos em C++ e XAML.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;O código a seguir mostra como executar uma solicitação/resposta básica com um serviço Web baseado em REST. Neste caso, o serviço Web poderia executar um script ASP.NET no servidor Web.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;div id="codeSnippetWrapper"&gt;     &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; makeXHRCall() {&lt;br /&gt;    WinJS.xhr({ uri: &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;http://www.microsoft.com/en-us/default.aspx” }).done(&lt;br /&gt;        function onComplete(result) {&lt;br /&gt;            print(result.responseText);&lt;br /&gt;        },&lt;br /&gt;        function onError(err) {&lt;br /&gt;            print(&amp;quot;&lt;/span&gt;Error: &amp;quot; + err.responseText);&lt;br /&gt;        });&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; async &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; MakeHttpCall()&lt;br /&gt;{&lt;br /&gt;    HttpClient httpClient = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; HttpClient();&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;try&lt;/span&gt; {&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; response = await httpClient.GetStringAsync(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;http://www.microsoft.com/en-us/default.aspx&amp;quot;&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;catch&lt;/span&gt; (Exception) {&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// Handle exception.&lt;/span&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;

    &lt;br /&gt;&lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;Para obter mais informações sobre &lt;b&gt;WinJS.xhr&lt;/b&gt;, consulte&lt;u&gt; &lt;/u&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh761502.aspx" target="_blank"&gt;Conectando serviços Web (aplicativos da Windows Store em JavaScript e HTML)&lt;/a&gt;. Para obter mais informações sobre &lt;b&gt;HttpClient&lt;/b&gt;, consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/xaml/hh781239.aspx" target="_blank"&gt;Início rápido: Conectando com o uso de HttpClient (aplicativos da Windows Store em C#/VB/C++ e XAML)&lt;/a&gt; e a &lt;a href="http://code.msdn.microsoft.com/windowsapps/HttpClient-sample-55700664" target="_blank"&gt;amostra de HttpClient&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Outro cenário de rede comum é baixar e carregar arquivos em transferências que podem levar algum tempo. Um exemplo seria um aplicativo de câmera ou galeria de fotos que precisa carregar ou baixar fotos ou álbuns de fotos de um serviço Web. Essas transferências podem levar muito tempo, por isso não faz sentido obrigar o usuário a esperar até que a transferência termine. A API &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.backgroundtransfer.aspx" target="_blank"&gt;Windows.Networking.BackgroundTransfer&lt;/a&gt; oferece a capacidade de baixar ou carregar arquivos mesmo quando seu aplicativo não está mais em execução. O aplicativo começa a transferência quando está em execução em primeiro plano, com foco, e o Windows 8 continua a transferência em segundo plano, mesmo se o aplicativo não estiver mais em execução.&lt;/p&gt;

&lt;p&gt;Outro cenário mais especializado é o acesso a conteúdo sindicalizado. A API &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.web.syndication.aspx" target="_blank"&gt;Windows.Web.Syndication&lt;/a&gt; pode obter feeds nos formatos RSS ou Atom. Além disso, a API &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.web.atompub.aspx" target="_blank"&gt;Windows.Web.AtomPub&lt;/a&gt; permite que um aplicativo publique dados em vários formatos AtomPub.&lt;/p&gt;

&lt;p&gt;Em cenários para os quais não há um protocolo de rede de nível superior específico disponível por meio de uma API, o Tempo de Execução do Windows também oferece suporte para soquetes TCP e UDP (juntamente com multicast). A API &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.sockets.aspx" target="_blank"&gt;Windows.Networking.Sockets&lt;/a&gt; oferece uma &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.sockets.streamsocket.aspx" target="_blank"&gt;StreamSocket&lt;/a&gt; (TCP) e a &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.sockets.datagramsocket.aspx" target="_blank"&gt;DatagramSocket&lt;/a&gt; (UDP) para que você possa implementar outros protocolos de camada superior.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Observação: &lt;/b&gt;O Windows 8 apresenta um novo tipo de soquete chamada &lt;i&gt;WebSocket&lt;/i&gt;. Para obter mais informações sobre WebSockets e quando usá-las, consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh761442.aspx" target="_blank"&gt;Conectando-se com WebSockets&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A tabela a seguir apresenta uma lista mais completa de recursos de rede suportados, com links para informações adicionais.&lt;/p&gt;

&lt;div align="center"&gt;  &lt;table class="b8table" cellspacing="0" cellpadding="3" align="center" border="0"&gt;&lt;tbody&gt;
      &lt;tr&gt;
        &lt;td valign="top" width="217"&gt;
          &lt;p align="center"&gt;&lt;b&gt;APIs&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="221"&gt;
          &lt;p align="center"&gt;&lt;b&gt;Recursos&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="145"&gt;
          &lt;p align="center"&gt;&lt;b&gt;Exemplos&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="217"&gt;
          &lt;ul&gt;
            &lt;li&gt;
              &lt;div align="left"&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.web.syndication.aspx" target="_blank"&gt;Windows.Web.Syndication&lt;/a&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.web.atompub.aspx" target="_blank"&gt;Windows.Web.AtomPub&lt;/a&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;
          &lt;/ul&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="221"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Obtenção de feeds nos formatos RSS ou Atom em várias versões. Essas APIs facilitam a implementação de suporte para novos formatos, como OData. O Tempo de Execução do Windows também oferece suporte para o protocolo de publicação Atom, permitindo a publicação de coleções Atom. 
            &lt;br /&gt;Para obter mais informações, consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh452973.aspx/" target="_blank"&gt;Acessando e gerenciando conteúdo sindicalizado&lt;/a&gt;.&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="145"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;ul&gt;
            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Syndication-sample-07ef6b0d" target="_blank"&gt;Amostra de sindicalização&lt;/a&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/AtomPub-sample-c1fcdc8e" target="_blank"&gt;Amostra de AtomPub&lt;/a&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Leitores de RSS&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;
          &lt;/ul&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="217"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.backgroundtransfer.aspx" target="_blank"&gt;Windows.Networking.BackgroundTransfer&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="221"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Download e carregamento de conteúdo ininterrupto, continuável e com reconhecimento de custos, mesmo quando o aplicativo de chamada não está em primeiro plano. Essa API oferece suporte para transferências de conteúdo com o uso de protocolos HTTP, HTTPS e FTP. 
            &lt;br /&gt;Para obter mais informações, consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh452979.aspx" target="_blank"&gt;Transferindo dados em segundo plano&lt;/a&gt;.&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="145"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;ul&gt;
            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Background-Transfer-Sample-d7833f61" target="_blank"&gt;Amostra de transferência em segundo plano&lt;/a&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;SkyDrive&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Vídeo no Xbox&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;
          &lt;/ul&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="217"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;ul&gt;
            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh453379.aspx" target="_blank"&gt;XMLHTTPRequest&lt;/a&gt;&lt;/b&gt;&lt;b&gt; (JavaScript&lt;/b&gt;&lt;b&gt;) &lt;/b&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br229787.aspx" target="_blank"&gt;WinJS.xhr&lt;/a&gt;&lt;/b&gt;&lt;b&gt; &lt;/b&gt;&lt;b&gt;(JavaScript)&lt;/b&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/system.net.http.httpclient.aspx" target="_blank"&gt;HttpClient&lt;/a&gt;&lt;/b&gt;&lt;b&gt; &lt;/b&gt;&lt;b&gt;(C#)&lt;/b&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh831163.aspx"&gt;XML HTTP Request 2&lt;/a&gt;&lt;/b&gt;&lt;b&gt; (IXHR2)&lt;/b&gt;&lt;b&gt; &lt;/b&gt;&lt;b&gt;(C++)&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;
          &lt;/ul&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="221"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Interação com serviços Web baseados em REST e outros protocolos baseados em HTTP. 
            &lt;br /&gt;Para obter mais informações, consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh761502.aspx" target="_blank"&gt;Conectando serviços Web&lt;/a&gt;.&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="145"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;ul&gt;
            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/XHR-handling-navigation-50d03a7a" target="_blank"&gt;XHR, manipulação de erros de navegação e amostra de esquemas URL&lt;/a&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/HttpClient-sample-55700664" target="_blank"&gt;Amostra de HttpClient&lt;/a&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Mapas do Bing&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;
          &lt;/ul&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="217"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.proximity.aspx" target="_blank"&gt;Windows.Networking.Proximity&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="221"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Detecção da proximidade entre dois dispositivos, para que os aplicativos possam ativar a comunicação em rede entre eles com o uso de APIs de soquete. 
            &lt;br /&gt;Para obter mais informações, consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh465229.aspx" target="_blank"&gt;Suportando proximidade e toque&lt;/a&gt;.&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="145"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;ul&gt;
            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Proximity-Sample-88129731" target="_blank"&gt;Amostra de proximidade&lt;/a&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Jogos&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Aplicativos de colaboração&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;
          &lt;/ul&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="217"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/library/windows/apps/BR207928" target="_blank"&gt;Windows.Storage.Pickers&lt;/a&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="221"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Comunicação com compartilhamentos de arquivos remotos. 
            &lt;br /&gt;Para obter mais informações, consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh464959.aspx" target="_blank"&gt;Acessando dados e arquivos&lt;/a&gt;.&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="145"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;ul&gt;
            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/File-picker-sample-9f294cba" target="_blank"&gt;Amostra de seletor de arquivos&lt;/a&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Música no Xbox&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Fotos&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;
          &lt;/ul&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="217"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.sockets.aspx" target="_blank"&gt;Windows.Networking.Sockets&lt;/a&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="221"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Conexão a um serviço que usa um protocolo não suportado pelas APIs já mencionadas, como SMTP, MAPI ou telnet, ou conexão com outro dispositivo na mesma rede local. Usada também para aplicativos que requerem semântica semelhante a de soquetes (assíncrona, bidirecional) para se conectarem pela Web (incluindo proxies HTTP) a um novo serviço. 
            &lt;br /&gt;Para obter mais informações, consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh452977.aspx" target="_blank"&gt;Conectando-se com soquetes&lt;/a&gt;.&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="145"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;ul&gt;
            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/StreamSocket-Sample-8c573931" target="_blank"&gt;Amostra de StreamSocket&lt;/a&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/DatagramSocket-sample-76a7d82b" target="_blank"&gt;Amostra de DatagramSocket&lt;/a&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Connecting-with-WebSockets-643b10ab" target="_blank"&gt;Amostra de conexão com WebSockets&lt;/a&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/site/search?query=controlchanneltrigger&amp;amp;f%5B0%5D.Value=controlchanneltrigger&amp;amp;f%5B0%5D.Type=SearchText&amp;amp;ac=3" target="_blank"&gt;Amostras de ControlChannelTrigger&lt;/a&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Lync, quadro de comunicações ou seletores de estoque&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;
          &lt;/ul&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="217"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/library/windows/apps/BR241587" target="_blank"&gt;Windows.Storage.ApplicationData&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="221"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;O Windows 8 transfere automaticamente determinados dados de aplicativos entre os dispositivos dos usuários. O roaming de dados de aplicativos beneficia os aplicativos que os usuários utilizam em mais de um dispositivo, como um PC no trabalho e um tablet em casa, e instala o aplicativo em vários dispositivos. 
            &lt;br /&gt;Para obter mais informações, consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh465094.aspx" target="_blank"&gt;Diretrizes de dados de aplicativo de roaming&lt;/a&gt;.&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="145"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;ul&gt;
            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;&lt;a href="http://go.microsoft.com/fwlink/p/?linkid=231478" target="_blank"&gt;Amostra de dados de aplicativo&lt;/a&gt;&lt;/div&gt;
            &lt;/li&gt;
          &lt;/ul&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;

&lt;h2&gt;Escolha as funcionalidades de rede certas&lt;/h2&gt;

&lt;p&gt;O isolamento da rede é parte do modelo de segurança de aplicativos usado pelo Windows 8. O Windows detecta limites de rede ativamente e aplica restrições de acesso à rede para o isolamento da mesma. Quando implantadas adequadamente, essas funcionalidades ajudam a proteger seus usuários e aplicativos de ataques mal-intencionados.&lt;/p&gt;

&lt;p&gt;Os aplicativos devem declarar funcionalidades de isolamento de rede para definir o escopo do acesso à rede. Sem declarar essas funcionalidades, seu aplicativo não terá acesso aos recursos da rede. Consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/Hh770532.aspx" target="_blank"&gt;Como definir as funcionalidades de rede&lt;/a&gt; para saber mais sobre como o Windows aplica o isolamento da rede para aplicativos. &lt;/p&gt;

&lt;p&gt;Você não pode usar a rede como um mecanismo de comunicação interprocessual entre um aplicativo da Windows Store e um aplicativo de desktop no mesmo dispositivo. Por esse motivo, não é possível usar endereços de loopback IP em um aplicativo da Windows Store. Há exceções limitadas para fins de desenvolvimento que permitem o uso de endereços de loopback IP em operações no depurador do Visual Studio. Para obter mais informações, consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/Hh780593.aspx" target="_blank"&gt;Como habilitar loopback e solucionar o isolamento de rede&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As solicitações de acesso à rede se dividem em duas categorias: &lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;b&gt;Solicitações de saída iniciadas pelo cliente&lt;/b&gt;: Seu aplicativo age como o cliente e inicia o acesso à rede enviando uma solicitação de rede inicial a um computador remoto, normalmente um servidor. O aplicativo envia uma ou mais solicitações ao servidor, e o servidor envia de volta uma ou várias respostas. Por exemplo, todo tráfego de um aplicativo de cliente Web a um servidor Web se inclui nessa categoria.&lt;/li&gt;

  &lt;li&gt;&lt;b&gt;Solicitações de entrada não solicitadas&lt;/b&gt;: Seu aplicativo age como um servidor de rede e escuta solicitações de rede de entrada de um computador remoto. O computador remoto inicia o acesso à rede enviando uma solicitação inicial ao seu aplicativo, que age como um servidor. O computador remoto envia uma ou mais solicitações ao seu aplicativo, que envia de volta uma ou várias respostas ao computador remoto. Por exemplo, um aplicativo que funciona como um servidor de mídia se inclui nessa categoria.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Siga o princípio do mínimo de privilégios e adicione apenas as funcionalidades de que seu aplicativo precisa. Talvez seu aplicativo precise apenas de solicitações de saída iniciadas pelo cliente ou também precise de solicitações de entrada não solicitadas. Alguns aplicativos podem precisar também de acesso a certificados e credenciais de usuário no processo de autenticação em uma rede. &lt;/p&gt;

&lt;p&gt;A tabela a seguir mostra detalhes das funcionalidades de isolamento de rede e outros recursos relacionados que costumam ser necessários para aplicativos conectados. As três primeiras são funcionalidades primárias de isolamento de rede que os aplicativos conectados usam. Na verdade, seu aplicativo conectado deve ter pelo menos uma destas três primeiras funcionalidades. Os outros itens na tabela são funcionalidades adicionais que muitas vezes são necessárias por alguns aplicativos conectados.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;div align="center"&gt;
  &lt;table class="b8table" cellspacing="0" cellpadding="3" width="612" align="center" border="0"&gt;&lt;tbody&gt;
      &lt;tr&gt;
        &lt;td valign="top" width="146"&gt;
          &lt;p&gt;&lt;b&gt;Funcionalidade de rede&lt;/b&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="273"&gt;
          &lt;p&gt;&lt;b&gt;Descrição&lt;/b&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="191"&gt;
          &lt;p&gt;&lt;b&gt;Aplicativos de exemplo&lt;/b&gt;&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="146"&gt;
          &lt;p align="left"&gt;Internet (cliente)&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="273"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Fornece acesso de saída à Internet e a redes em locais públicos como aeroportos e cafés. A maioria dos aplicativos que requerem acesso à Internet devem declarar essa funcionalidade.&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="191"&gt;
          &lt;p align="left"&gt;        &lt;/p&gt;

          &lt;ul&gt;
            &lt;li&gt;
              &lt;div align="left"&gt;Leitores de RSS&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Redes sociais&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Jogos&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;
          &lt;/ul&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="146"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Internet (cliente e servidor)&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="273"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Fornece acesso de entrada e saída à Internet e a redes em locais públicos como aeroportos e cafés. O acesso de entrada a portas essenciais é sempre bloqueado. Essa funcionalidade é um superconjunto da funcionalidade Internet (cliente); não é necessário declarar as duas.&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="191"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;ul&gt;
            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Aplicativos P2P&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Jogos multiplayer que detectam jogadores com o uso de multicast&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;
          &lt;/ul&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="146"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Redes privadas (cliente e servidor)&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="273"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Fornece acesso de entrada e saída à rede em locais privados listados como confiáveis pelo usuário. Esses locais são geralmente as redes de casa ou do trabalho. O acesso de entrada a portas essenciais é sempre bloqueado.&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="191"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;ul&gt;
            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Aplicativos que acessam conteúdo NAS&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Aplicativos de linha de negócios&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Jogos multiplayer que detectam jogadores com o uso de multicast em uma rede privada (em casa ou no trabalho)&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;
          &lt;/ul&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="146"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Proximidade&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="273"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Necessária para comunicação de proximidade a curta distância com dispositivos. Permite que os aplicativos acessem a rede para se conectar a um dispositivo a curta distância, com consentimento do usuário para enviar ou aceitar um convite.&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="191"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;ul&gt;
            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Jogos multiplayer com usuários a curta distância&lt;i&gt;&lt;/i&gt;&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;
          &lt;/ul&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="146"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Autenticação empresarial&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="273"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Fornece a funcionalidade para se conectar a recursos da intranet empresarial que requerem credenciais de domínio.&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="191"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;ul&gt;
            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Aplicativos de linha de negócios&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;
          &lt;/ul&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="146"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Certificados compartilhados de usuário&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="273"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Fornece a funcionalidade para acessar certificados de software e hardware, como certificados de cartão inteligente, para validar a identidade de um usuário. Quando APIs relacionadas são chamadas no tempo de execução, o usuário deve realizar uma ação (inserir um cartão ou selecionar um certificado). &lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="191"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;ul&gt;
            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Aplicativos de rede privada virtual&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;Aplicativos de linha de negócios&lt;/div&gt;
            &lt;/li&gt;
          &lt;/ul&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;Use esta lista de verificação para garantir que o isolamento de rede está configurado no seu aplicativo:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Determine a direção do acesso à rede de que o seu aplicativo precisa, as solicitações de saída iniciadas por clientes, solicitações de entrada não solicitadas, ou ambos.&lt;/li&gt;

  &lt;li&gt;Determine o tipo de recursos de rede com os quais o seu aplicativo se comunicará: recursos confiáveis em uma rede doméstica ou corporativa, recursos na Internet ou ambos. &lt;/li&gt;

  &lt;li&gt;Configure a capacidade de isolamento mínima necessária da rede no manifesto do aplicativo. Você pode fazer isso usando o &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br230259.aspx" target="_blank"&gt;Designer de Manifesto de Aplicativo&lt;/a&gt; no Microsoft Visual Studio 2012, ou &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br211477.aspx" target="_blank"&gt;adicione-os manualmente&lt;/a&gt;.&lt;/li&gt;

  &lt;li&gt;Implante e execute o seu aplicativo para testá-lo usando as ferramentas de isolamento da rede para solucionar problemas. Para obter mais informações, consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/Hh780593.aspx" target="_blank"&gt;Como habilitar loopback e solucionar o isolamento de rede&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A captura de tela seguinte mostra como habilitar as funcionalidades da rede, usando o &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br230259.aspx" target="_blank"&gt;Designer de Manifesto de Aplicativo&lt;/a&gt; no Microsoft Visual Studio 2012.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/7268.app_2D00_manifest_2D00_design_5F00_47107BBF.png"&gt;&lt;img title="Selecione funcionalidades de rede no package.appxmanifest do seu aplicativo no Visual Studio 2012" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="Selecione funcionalidades de rede no package.appxmanifest do seu aplicativo no Visual Studio 2012" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/7752.app_2D00_manifest_2D00_design_5F00_thumb_5F00_5EC7B325.png" width="600" height="318" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p align="center"&gt;&lt;em&gt;Selecione funcionalidades de rede no package.appxmanifest do seu aplicativo no Visual Studio 2012&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;Adapte o comportamento do aplicativo para redes limitadas&lt;/h2&gt;

&lt;p&gt;Pense sobre a última vez em que você estava chegando ao seu limite mensal de dados ou, talvez, na última vez em que você viajou para o exterior. Nestas situações, eu normalmente acabava usando o meu dispositivo e os meus aplicativos com cautela para evitar tarifas de rede desnecessárias. &lt;/p&gt;

&lt;p&gt;O Windows 8 trata desse problema do usuário permitindo que os aplicativos monitorem os recursos disponíveis da rede e se comportem adequadamente quando estiverem em redes limitadas. Para promover a confiança dos usuários em seu aplicativo, você pode torná-lo capaz de identificar quando uma conexão pode incorrer em custos e adaptar o comportamento do aplicativo para evitar ou reduzir essas tarifas.&lt;/p&gt;

&lt;p&gt;A API &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.aspx" target="_blank"&gt;Windows.Networking.Connectivity&lt;/a&gt; fornece informações sobre o tipo e o custo de uma conexão de rede. Isto permite que o seu aplicativo determine quando usar os recursos da rede normalmente, quando usá-los de maneira conservadora ou quando solicitar a permissão do usuário. &lt;/p&gt;

&lt;p&gt;Uma &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectionprofile.aspx" target="_blank"&gt;ConnectionProfile&lt;/a&gt; representa uma conexão de rede. O seu aplicativo pode usar a &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectioncost.aspx" target="_blank"&gt;ConnectionCost&lt;/a&gt; de uma &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectionprofile.aspx" target="_blank"&gt;ConnectionProfile&lt;/a&gt; para determinar se deve ou não adaptar o seu comportamento. A propriedade &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectioncost.networkcosttype.aspx" target="_blank"&gt;NetworkCostType&lt;/a&gt; indica o tipo de conexão de uma rede. Existem quatro valores possíveis:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;b&gt;Irrestrita&lt;/b&gt;: o uso desta conexão de rede é ilimitado. Ela não tem tarifas de uso ou restrições na capacidade.&lt;/li&gt;

  &lt;li&gt;&lt;b&gt;Fixa&lt;/b&gt;: o uso desta conexão de rede é irrestrito até um limite específico.&lt;/li&gt;

  &lt;li&gt;&lt;b&gt;Variável&lt;/b&gt;: o uso desta conexão de rede é limitado por uso de bytes.&lt;/li&gt;

  &lt;li&gt;&lt;b&gt;Desconhecida&lt;/b&gt;: a informação de custo não está disponível para esta conexão de rede.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Diversas outras propriedades boolianas para a &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectioncost.aspx" target="_blank"&gt;ConnectionCost&lt;/a&gt; oferecem ainda mais informações. &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectioncost.roaming.aspx" target="_blank"&gt;Roaming&lt;/a&gt;: a conexão é com uma rede fora do provedor doméstico.&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectioncost.approachingdatalimit.aspx" target="_blank"&gt;ApproachingDataLimit&lt;/a&gt;: a conexão está chegando ao limite de uso especificado pelo plano de dados.&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectioncost.overdatalimit.aspx" target="_blank"&gt;OverDataLimit&lt;/a&gt;: a conexão excedeu o limite de uso especificado no plano de dados.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Faça o seu aplicativo responder às condições indicadas por essas propriedades. Sempre que uma conexão estiver &lt;b&gt;Roaming&lt;/b&gt;, os custos de dados associados ao uso da rede podem ser elevados. Quando a &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectioncost.networkcosttype.aspx" target="_blank"&gt;NetworkCostType&lt;/a&gt; for &lt;b&gt;Variável&lt;/b&gt;, a rede é uma rede limitada, onde o usuário paga pelo volume de dados enviados ou recebidos na rede. Quando a &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectioncost.networkcosttype.aspx" target="_blank"&gt;NetworkCostType&lt;/a&gt; for &lt;b&gt;Fixa&lt;/b&gt;, existe causa para preocupação caso o usuário já esteja acima ou chegando próximo ao limite de dados. &lt;/p&gt;

&lt;p&gt;Utilizando estas informações, um aplicativo pode seguir essas diretrizes para decidir como melhor utilizar os recursos da rede.&lt;/p&gt;

&lt;div align="center"&gt;
  &lt;p align="left"&gt;&lt;/p&gt;

  &lt;p align="left"&gt;&lt;/p&gt;

  &lt;p align="left"&gt;&lt;/p&gt;

  &lt;p align="left"&gt;&lt;/p&gt;

  &lt;p align="left"&gt;&lt;/p&gt;

  &lt;p align="left"&gt;&lt;/p&gt;

  &lt;p align="left"&gt;&lt;/p&gt;

  &lt;p align="left"&gt;&lt;/p&gt;

  &lt;p align="left"&gt;&lt;/p&gt;

  &lt;p align="left"&gt;&lt;/p&gt;

  &lt;p align="left"&gt;&lt;/p&gt;

  &lt;p align="left"&gt;&lt;/p&gt;

  &lt;p align="left"&gt;&lt;/p&gt;

  &lt;p align="left"&gt;&lt;/p&gt;

  &lt;p align="left"&gt;&lt;/p&gt;

  &lt;table class="b8table" cellspacing="0" cellpadding="3" align="center" border="0"&gt;&lt;tbody&gt;
      &lt;tr&gt;
        &lt;td valign="top" width="97"&gt;
          &lt;p&gt;&lt;b&gt;Comportamento&lt;/b&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="150"&gt;
          &lt;p&gt;&lt;b&gt;Custo da conexão&lt;/b&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="168"&gt;
          &lt;p&gt;&lt;b&gt;Diretrizes do aplicativo&lt;/b&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="175"&gt;
          &lt;p&gt;&lt;b&gt;Exemplos&lt;/b&gt;&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="97"&gt;
          &lt;p align="left"&gt;Normal&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="150"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;A &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectioncost.networkcosttype.aspx" target="_blank"&gt;NetworkCostType&lt;/a&gt; é &lt;b&gt;irrestrita&lt;/b&gt; ou &lt;b&gt;desconhecida&lt;/b&gt; e a &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectioncost.aspx" target="_blank"&gt;ConnectionCost&lt;/a&gt; não está &lt;b&gt;Roaming&lt;/b&gt;&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="168"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;O aplicativo não implementa restrições. O aplicativo trata a conexão como sendo &lt;b&gt;Ilimitada&lt;/b&gt; em custo e sem restrições derivadas de tarifas de uso ou restrições de capacidade.&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="175"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;ul&gt;
            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;O aplicativo de media player pode reproduzir um filme HD inteiro.&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;O aplicativo pode fazer o download de um arquivo grande sem quaisquer restrições ou consultas.&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;
          &lt;/ul&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="97"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Conservador&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="150"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;A &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectioncost.networkcosttype.aspx" target="_blank"&gt;NetworkCostType&lt;/a&gt; é &lt;b&gt;Fixa&lt;/b&gt; ou &lt;b&gt;Variável&lt;/b&gt; e a &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectioncost.aspx" target="_blank"&gt;ConnectionCost&lt;/a&gt; não está &lt;b&gt;Roaming&lt;/b&gt; ou &lt;b&gt;OverDataLimit&lt;/b&gt;&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="168"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;O aplicativo implementa restrições para o uso otimizado da rede de modo que possa lidar com operações em redes limitadas.&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="175"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;ul&gt;
            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;O aplicativo de media player pode reproduzir filmes em resoluções mais baixas.&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;O aplicativo pode atrasar downloads que não sejam importantes.&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;
          &lt;/ul&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td valign="top" width="97"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;Opções&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="150"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;A &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectioncost.aspx" target="_blank"&gt;ConnectionCost&lt;/a&gt; está &lt;b&gt;Roaming&lt;/b&gt; ou &lt;b&gt;OverDataLimit&lt;/b&gt;&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="168"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;p align="left"&gt;O aplicativo lida com casos excepcionais onde o custo de acesso da rede é significativamente mais alto do que o custo do plano.&lt;/p&gt;

          &lt;p align="left"&gt;&lt;/p&gt;
        &lt;/td&gt;

        &lt;td valign="top" width="175"&gt;
          &lt;p align="left"&gt;&lt;/p&gt;

          &lt;ul&gt;
            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;O aplicativo avisa o usuário para acessar a rede.&lt;/div&gt;
            &lt;/li&gt;

            &lt;p align="left"&gt;&lt;/p&gt;

            &lt;li&gt;
              &lt;div align="left"&gt;O aplicativo suspende todas as atividades de rede dos dados em segundo plano.&lt;i&gt;&lt;/i&gt;&lt;/div&gt;
            &lt;/li&gt;
          &lt;/ul&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;Este código de exemplo verifica o custo da conexão e faz sugestões para o comportamento adequado do aplicativo. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; CostGuidance = { Normal: 0, Conservative: 1, OptIn: 2 };&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;// GetCostGuidance returns an object with a Cost (with value of CostGuidance), &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;// CostName (a string) and Reason, which says why the cost is what it is.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; GetCostGuidance() &lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; connectionCost = Windows.Networking.Connectivity.NetworkInformation.getInternetConnectionProfile().getConnectionCost();&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; networkCostConstants = Windows.Networking.Connectivity.NetworkCostType;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; Retval = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Object();&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (connectionCost.roaming || connectionCost.overDataLimit)&lt;br /&gt;    {&lt;br /&gt;        Retval.Cost = CostGuidance.OptIn;&lt;br /&gt;        Retval.CostName = &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;OptIn&amp;quot;&lt;/span&gt;;&lt;br /&gt;        Retval.Reason = connectionCost.roaming&lt;br /&gt;            ? &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Connection is roaming; using the connection may result in additional charge.&amp;quot;&lt;/span&gt;&lt;br /&gt;            : &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Connection has exceeded the usage cap limit.&amp;quot;&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (connectionCost.networkCostType == networkCostConstants.&lt;span style="color: rgb(0, 0, 255);"&gt;fixed&lt;/span&gt;&lt;br /&gt;        || connectionCost.networkCostType == networkCostConstants.variable)&lt;br /&gt;    {&lt;br /&gt;        Retval.Cost = CostGuidance.conservative;&lt;br /&gt;        Retval.CostName = &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Conservative&amp;quot;&lt;/span&gt;;&lt;br /&gt;        Retval.Reason = connectionCost.networkCostType == NetworkCostType.&lt;span style="color: rgb(0, 0, 255);"&gt;fixed&lt;/span&gt;&lt;br /&gt;            ? &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Connection has limited allowed usage.&amp;quot;&lt;/span&gt;&lt;br /&gt;            : &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Connection is charged based on usage. &amp;quot;&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        Retval.Cost = CostGuidance.Normal;&lt;br /&gt;        Retval.CostName = &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Normal&amp;quot;&lt;/span&gt;;&lt;br /&gt;        Retval.Reason = connectionCost.networkCostType == networkCostConstants.unknown&lt;br /&gt;            ? &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Connection is unknown.&amp;quot;&lt;/span&gt;&lt;br /&gt;            : &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Connection cost is unrestricted.&amp;quot;&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; Retval;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;enum&lt;/span&gt; NetworkCost { Normal, Conservative, OptIn };&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; CostGuidance&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; CostGuidance()&lt;br /&gt;    {&lt;br /&gt;        var connectionCost = NetworkInformation.GetInternetConnectionProfile().GetConnectionCost();&lt;br /&gt;        Init(connectionCost);&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; NetworkCost Cost { get; &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; set; }&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; String Reason { get; &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; set; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; Init(ConnectionCost connectionCost)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (connectionCost == &lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;) &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;;&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (connectionCost.Roaming || connectionCost.OverDataLimit)&lt;br /&gt;        {&lt;br /&gt;            Cost = NetworkCost.OptIn;&lt;br /&gt;            Reason = connectionCost.Roaming&lt;br /&gt;                ? &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Connection is roaming; using the connection may result in additional charge.&amp;quot;&lt;/span&gt;&lt;br /&gt;                : &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Connection has exceeded the usage cap limit.&amp;quot;&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (connectionCost.NetworkCostType == NetworkCostType.Fixed&lt;br /&gt;            || connectionCost.NetworkCostType == NetworkCostType.Variable)&lt;br /&gt;        {&lt;br /&gt;            Cost = NetworkCost.Conservative;&lt;br /&gt;            Reason = connectionCost.NetworkCostType == NetworkCostType.Fixed&lt;br /&gt;                ? &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Connection has limited allowed usage.&amp;quot;&lt;/span&gt;&lt;br /&gt;                : &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Connection is charged based on usage. &amp;quot;&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;br /&gt;        {&lt;br /&gt;            Cost = NetworkCost.Normal;&lt;br /&gt;            Reason = connectionCost.NetworkCostType == NetworkCostType.Unknown&lt;br /&gt;                ? &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Connection is unknown.&amp;quot;&lt;/span&gt;&lt;br /&gt;                : &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Connection cost is unrestricted.&amp;quot;&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;

    &lt;br /&gt;&lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;Use a &lt;a href="http://code.msdn.microsoft.com/windowsapps/Network-Information-Sample-63aaa201" target="_blank"&gt;amostra de informação da rede&lt;/a&gt; para saber mais sobre como adaptar o comportamento de aplicativos para redes limitadas.&lt;/p&gt;

&lt;p&gt;Os usuários também podem executar o Gerenciador de Tarefas para verificar o volume de dados de rede que cada aplicativo está consumindo. Esta captura de tela mostra um exemplo.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/5618.task_2D00_manager_5F00_6C99F920.png"&gt;&lt;img title="A guia Histórico de Aplicativos no Gerenciador de Tarefas permite que os usuários vejam o consumo de CPU e rede por aplicativo" style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="A guia Histórico de Aplicativos no Gerenciador de Tarefas permite que os usuários vejam o consumo de CPU e rede por aplicativo" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/3554.task_2D00_manager_5F00_thumb_5F00_4C7EEC63.png" width="600" height="545" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p align="center"&gt;&lt;em&gt;A guia Histórico de Aplicativos no Gerenciador de Tarefas permite que os usuários vejam o consumo de CPU e rede por aplicativo&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;Reaja à alteração de status da rede&lt;/h2&gt;

&lt;p&gt;Em qualquer situação com um dispositivo móvel, as redes podem se conectar ou desconectar. Uma rede de banda larga móvel 3G ou 4G pode ficar fora do alcance na casa ou na garagem de um usuário enquanto o Wi-Fi ainda está disponível. Da mesma forma, um Wi-Fi pode ficar fora do alcance quando um usuário deixa a sua casa. Pode haver situações onde nenhuma rede esteja disponível. Dada a proliferação de redes Wi-Fi e de redes de banda larga móveis, tais alterações na rede ocorrem com frequência. &lt;/p&gt;

&lt;p&gt;Um evento &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.networkinformation.networkstatuschanged" target="_blank"&gt;NetworkStatusChanged&lt;/a&gt; indica que o &lt;i&gt;custo disponível&lt;/i&gt; ou as &lt;i&gt;opções de conectividade&lt;/i&gt; podem ter sido alterados. Para reagir a alterações no status da rede e fornecer ao usuário uma ótima experiência quando as alterações ocorrerem, faça com que os seus aplicativos conectados sigam as seguintes diretrizes.&lt;/p&gt;

&lt;h3&gt;Perda da conexão devido a erro&lt;/h3&gt;

&lt;p&gt;Na maioria dos casos, as conexões podem ser restabelecidas simplesmente repetindo a operação de rede. Se isto falhar, espere por um evento &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.networkinformation.networkstatuschanged" target="_blank"&gt;NetworkStatusChanged&lt;/a&gt;. Recomendamos que os aplicativos usem intervalos crescentes de retirada entre as tentativas, começando com um valor de 50 milissegundos e aumentando este intervalo exponencialmente caso as conexões continuem a falhar.&lt;/p&gt;

&lt;h3&gt;Perda da rede&lt;/h3&gt;

&lt;p&gt;Informe o usuário que a conexão foi perdida, faça o registro e espere por um evento &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.networkinformation.networkstatuschanged" target="_blank"&gt;NetworkStatusChanged&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Nova disponibilidade de rede&lt;/h3&gt;

&lt;p&gt;Pode haver situações em que o dispositivo está conectado a múltiplas redes. Por exemplo, um usuário pode estar conectado a uma banda larga móvel, conversando com amigos por meio do aplicativo Windows 8 Messaging antes de chegar em casa e pode estar conectado a uma rede irrestrita ali também. A política padrão no Windows 8 é preferir uma rede irrestrita em vez de uma rede limitada e uma rede mais rápida em vez de uma mais lenta. Entretanto, conexões já estabelecidas por um aplicativo não alternam automaticamente para uma nova rede. Nesse caso, o aplicativo deve agir pois apenas o aplicativo pode tomar a melhor decisão sobre se deve ou não alternar para a nova rede. &lt;/p&gt;

&lt;p&gt;Por exemplo, se a transmissão de um vídeo estiver quase concluída, pode não fazer sentido alternar a conexão para uma nova rede. Entretanto, se a rede atual estiver caindo, lenta demais ou se a transmissão for levar mais tempo para concluir, a alternância para uma nova rede pode ser o melhor.&lt;/p&gt;

&lt;p&gt;Se você determinar que a alternância de rede é plausível para a situação do seu aplicativo, siga estas diretrizes quando detectar uma nova rede:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Verifique os custos da rede já existentes e da nova rede. Se fizer sentido alternar para a nova rede, tente fazer uma nova conexão de rede e tente a operação de rede novamente baseando-se nas diretrizes que acabamos de mencionar. O Windows automaticamente selecionará a rede irrestrita em vez da rede limitada e a rede mais rápida em vez da mais lenta.&lt;/li&gt;

  &lt;li&gt;Se a nova conexão de rede for bem sucedida, use a nova conexão à rede no seu aplicativo e cancele a operação de rede original na rede anterior, caso a conexão já exista.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Alteração no custo da rede&lt;/h3&gt;

&lt;p&gt;Alterações no custo da rede podem ocorrer quando a &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectioncost.networkcosttype.aspx" target="_blank"&gt;NetworkCostType&lt;/a&gt; é &lt;b&gt;Fixa&lt;/b&gt; e o uso já estiver acima ou chegando próximo ao limite de dados. Alterações no custo da rede também podem ocorrer se a &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectioncost.networkcosttype.aspx" target="_blank"&gt;NetworkCostType&lt;/a&gt; se tornar &lt;b&gt;Variável&lt;/b&gt;, ou se o &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.connectioncost.roaming.aspx" target="_blank"&gt;Roaming&lt;/a&gt; mudar para verdadeiro. Nesses casos, adapte o comportamento do aplicativo baseando-se nas diretrizes da dica anterior.&lt;/p&gt;

&lt;p&gt;Os códigos de exemplos usam o evento &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.networkinformation.networkstatuschanged" target="_blank"&gt;NetworkStatusChanged&lt;/a&gt; para fornecer uma ótima experiência de aplicativo para várias alterações de status em redes. Ambos os exemplos usam uma variável booliana global denominada &lt;i&gt;registeredNetworkStatusNotification,&lt;/i&gt; inicialmente definida como &lt;b&gt;falso&lt;/b&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;// Register for NetworkStatusChanged notifications, and display new &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;// Internet ConnectionProfile info upon network status change.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; registerForNetworkStatusChange() {&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;try&lt;/span&gt; {&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// Register for network status change notifications.&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (!registeredNetworkStatusNotification) {&lt;br /&gt;            &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; networkInfo.addEventListener(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;networkstatuschanged&amp;quot;&lt;/span&gt;, onNetworkStatusChange);&lt;br /&gt;            registeredNetworkStatusNotification = &lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;catch&lt;/span&gt; (e) {&lt;br /&gt;        print(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;An unexpected exception occurred: &amp;quot;&lt;/span&gt; + e.name + &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;: &amp;quot;&lt;/span&gt; + e.message);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;// Event handler for NetworkStatusChanged event&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; onNetworkStatusChange(sender) {&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;try&lt;/span&gt; {&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// Get the ConnectionProfile that is currently used to connect &lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// to the Internet.&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; internetProfile = networkInfo.getInternetConnectionProfile();&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (internetProfile === &lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;) {&lt;br /&gt;            print(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Not connected to Internet\n\r&amp;quot;&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; {&lt;br /&gt;            internetProfileInfo += getConnectionProfileInfo(internetProfile) + &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;\n\r&amp;quot;&lt;/span&gt;;&lt;br /&gt;            print(internetProfileInfo);&lt;br /&gt;        }&lt;br /&gt;        internetProfileInfo = &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;catch&lt;/span&gt; (e) {&lt;br /&gt;        print(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;An unexpected exception occurred: &amp;quot;&lt;/span&gt; + e.name + &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;: &amp;quot;&lt;/span&gt; + e.message);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;

    &lt;br /&gt;&lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;// Register for NetworkStatusChanged notifications, and display new &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;// Internet ConnectionProfile info upon network status change.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; NetworkStatusChange()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;// Register for network status change notifications.&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;try&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        var networkStatusCallback = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; NetworkStatusChangedEventHandler(OnNetworkStatusChange);&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (!registeredNetworkStatusNotification)&lt;br /&gt;        {&lt;br /&gt;            NetworkInformation.NetworkStatusChanged += networkStatusCallback;&lt;br /&gt;            registeredNetworkStatusNotification = &lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;    {&lt;br /&gt;        rootPage.NotifyUser(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Unexpected exception occurred: &amp;quot;&lt;/span&gt; + ex.ToString(), NotifyType.ErrorMessage);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;// Event handler for NetworkStatusChanged event&lt;/span&gt;&lt;br /&gt;async &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; OnNetworkStatusChange(&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt; sender)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;try&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// Get the ConnectionProfile that is currently used to connect &lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// to the Internet                &lt;/span&gt;&lt;br /&gt;        ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (InternetConnectionProfile == &lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;)&lt;br /&gt;        {&lt;br /&gt;            await _cd.RunAsync(CoreDispatcherPriority.Normal, () =&amp;gt;&lt;br /&gt;            {&lt;br /&gt;                rootPage.NotifyUser(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Not connected to Internet\n&amp;quot;&lt;/span&gt;, NotifyType.StatusMessage);&lt;br /&gt;            });&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;br /&gt;        {&lt;br /&gt;            connectionProfileInfo = GetConnectionProfile(InternetConnectionProfile);&lt;br /&gt;            await _cd.RunAsync(CoreDispatcherPriority.Normal, () =&amp;gt;&lt;br /&gt;            {&lt;br /&gt;                rootPage.NotifyUser(connectionProfileInfo, NotifyType.StatusMessage);&lt;br /&gt;            });&lt;br /&gt;        }&lt;br /&gt;        internetProfileInfo = &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;    {&lt;br /&gt;        rootPage.NotifyUser(&lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;Unexpected exception occurred: &amp;quot;&lt;/span&gt; + ex.ToString(), NotifyType.ErrorMessage);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;Para mais informações sobre o evento &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.networking.connectivity.networkinformation.networkstatuschanged" target="_blank"&gt;NetworkStatusChanged&lt;/a&gt; , consulte o &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh700376.aspx" target="_blank"&gt;Guia de início rápido: Gerenciando eventos de conexão e mudanças na disponibilidade&lt;/a&gt; e a &lt;a href="http://code.msdn.microsoft.com/windowsapps/Network-Information-Sample-63aaa201" target="_blank"&gt;Network information sample&lt;/a&gt; (Amostra de informações da rede).&lt;/p&gt;

&lt;h2&gt;Conteúdo de cache para fluidez&lt;/h2&gt;

&lt;p&gt;Passando conteúdo de cache para o disco dá ao seu aplicativo rapidez e fluidez. Por exemplo, um aplicativo leitor de RSS feed pode exibir imediatamente os feeds que foram colocados em cache no disco em uma sessão anterior. Assim que os feeds mais recentes estiverem disponíveis, o aplicativo atualiza o conteúdo. O cache assegura que o usuário tenha conteúdo para ler logo no início, enquanto o aplicativo obtém um novo conteúdo.&lt;/p&gt;

&lt;p&gt;O Windows 8 oferece a classe &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.storage.applicationdata.aspx" target="_blank"&gt;ApplicationData&lt;/a&gt;&lt;b&gt;&lt;/b&gt; no namespace &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.storage.aspx" target="_blank"&gt;Windows.Storage&lt;/a&gt;&lt;b&gt;&lt;/b&gt;. Esta classe oferece acesso ao repositório de dados do aplicativo. Este repositório de dados consiste de arquivos e configurações que são locais ao dispositivo, que são transferidos por múltiplos dispositivos ou que são temporários.&lt;/p&gt;

&lt;p&gt;Arquivos são ideais para armazenar grandes conjuntos de dados, bancos de dados ou dados que estejam em um formato de arquivo comum. Arquivos podem existir em pastas roaming, locais ou temporárias. O que isso significa é o seguinte:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Arquivos Roaming são sincronizados em múltiplas máquinas e dispositivos nos quais os usuários entraram com contas conectadas. O Roaming de arquivos não é instantâneo; o sistema avalia vários fatores para determinar quando enviar informações. Mantenha o uso de dados de roaming abaixo da cota (disponível por meio da propriedade &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/windows.storage.applicationdata.roamingstoragequota.aspx" target="_blank"&gt;RoamingStorageQuota&lt;/a&gt;&lt;b&gt;&lt;/b&gt; ). Se a cota for excedida, o roaming de dados será suspenso. Arquivos não podem ser transferidos enquanto um aplicativo os estiver gravando. Portanto, certifique-se de fechar os objetos de arquivos do seu aplicativo quando eles não forem mais necessários. &lt;/li&gt;

  &lt;li&gt;Arquivos locais não são sincronizados em múltiplas máquinas. Eles permanecem na máquina onde foram originalmente gravados. &lt;/li&gt;

  &lt;li&gt;Arquivos temporários estão sujeitos a serem excluídos quando não estiverem em uso. O sistema considera fatores como capacidade disponível do disco e idade de um arquivo, para determinar quando ou se deve excluir um arquivo temporário.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Estes códigos de exemplo fazem o cache de conteúdo no disco. Fazer o cache da resposta do servidor permite que o seu aplicativo exiba imediatamente o conteúdo ao usuário após um término ou um reinício de sessão. Por uma questão de concisão, estes exemplos não mostram como gravar configurações para o repositório de dados de aplicativo ou como reagir a eventos de roaming. A &lt;a href="http://code.msdn.microsoft.com/windowsapps/ApplicationData-sample-fb043eb2" target="_blank"&gt;Application data sample&lt;/a&gt; (Amostra de dados do aplicativo) cobre estes detalhes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; roamingFolder = Windows.Storage.ApplicationData.current.roamingFolder;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; filename = &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;serverResponse.txt&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; cacheResponse(strResponse) {&lt;br /&gt;    roamingFolder.createFileAsync(filename, Windows.Storage.CreationCollisionOption.replaceExisting)&lt;br /&gt;        .done(&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; (file) {&lt;br /&gt;            &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; Windows.Storage.FileIO.writeTextAsync(file, strResponse);&lt;br /&gt;        });&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; getCachedResponse() {&lt;br /&gt;    roamingFolder.getFileAsync(filename)&lt;br /&gt;        .then(&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; (file) {&lt;br /&gt;            &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; Windows.Storage.FileIO.readTextAsync(file);&lt;br /&gt;        }).done(&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; (response) {&lt;br /&gt;            print(response);&lt;br /&gt;        }, &lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; () {&lt;br /&gt;            &lt;span style="color: rgb(0, 128, 0);"&gt;// getFileAsync or readTextAsync failed. &lt;/span&gt;&lt;br /&gt;            &lt;span style="color: rgb(0, 128, 0);"&gt;// No cached response.&lt;/span&gt;&lt;br /&gt;        });&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;

    &lt;br /&gt;&lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre id="codeSnippet" style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"&gt;MainPage rootPage = MainPage.Current;&lt;br /&gt;StorageFolder roamingFolder = &lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;const&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; filename = &lt;span style="color: rgb(0, 96, 128);"&gt;&amp;quot;serverResponse.txt&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;async &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; cacheResponse(&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; strResponse)&lt;br /&gt;{&lt;br /&gt;    StorageFile file = await roamingFolder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);&lt;br /&gt;    await FileIO.WriteTextAsync(file, strResponse);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;async &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; getCachedResponse()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;try&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        StorageFile file = await roamingFolder.GetFileAsync(filename);&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; response = await FileIO.ReadTextAsync(file);&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;catch&lt;/span&gt; (Exception)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// getFileAsync or readTextAsync failed.&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0, 128, 0);"&gt;// No cached response.&lt;/span&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;

    &lt;br /&gt;&lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;Para obter mais informações sobre o repositório de dados de aplicativo, consulte a postagem &lt;a href="http://blogs.msdn.com/b/windowsappdev_br/archive/2012/07/24/roaming.aspx" target="_blank"&gt;Transferindo os dados de seu aplicativo&lt;/a&gt; e experimente a &lt;a href="http://code.msdn.microsoft.com/windowsapps/ApplicationData-sample-fb043eb2" target="_blank"&gt;Application data sample&lt;/a&gt; (Amostra de dados do aplicativo).&lt;/p&gt;

&lt;h2&gt;Resumindo&lt;/h2&gt;

&lt;p&gt;Quando estiver planejando os seus aplicativos da Windows Store, use as diretrizes nesta postagem para fornecer uma experiência de conexão excelente e sem problemas. Estas dicas podem facilitar o seu processo de desenvolvimento e ao mesmo tempo manter a fluidez e aumentar a confiança dos usuários nos seus aplicativos.&lt;/p&gt;

&lt;p&gt;- Suhail Khalid, gerente de programa II, Windows&lt;/p&gt;

&lt;p&gt;Com a contribuição de: Steven Baker e Peter Smith&lt;/p&gt;
&lt;!-- Title: “Criando aplicativos conectados da Windows Store” Tags: “aplicativos da Windows Store, HttpClient, aplicativos conectados, XMLHTTPRequest, IXHR2, XML HTTP Request 2, WinJS.xhr” --&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10412043" width="1" height="1"&gt;</content><author><name>Windows 8 Team</name><uri>http://blogs.msdn.com/win8apps_4000_live.com/ProfileUrlRedirect.ashx</uri></author><category term="aplicativos da Windows Store" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/aplicativos+da+Windows+Store/" /><category term="HttpClient" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/HttpClient/" /><category term="XMLHTTPRequest" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/XMLHTTPRequest/" /><category term="IXHR2" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/IXHR2/" /><category term="XML HTTP Request 2" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/XML+HTTP+Request+2/" /><category term="aplicativos conectados" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/aplicativos+conectados/" /><category term="WinJS.xhr" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/WinJS-xhr/" /></entry><entry><title>Registre-se agora na //build/ 2013!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/windowsappdev_br/archive/2013/04/05/registre-se-agora-na-build-2013.aspx" /><id>http://blogs.msdn.com/b/windowsappdev_br/archive/2013/04/05/registre-se-agora-na-build-2013.aspx</id><published>2013-04-05T17:34:03Z</published><updated>2013-04-05T17:34:03Z</updated><content type="html">&lt;div class="PostContent"&gt;&lt;p&gt;Na última semana, Steve Guggenheimer &lt;a href="http://blogs.technet.com/b/microsoft_blog/archive/2013/03/26/announcing-build-2013.aspx" target="_blank"&gt;anunciou&lt;/a&gt; a //build/ 2013. A conferência acontecerá entre os dias 26 e 28 de junho de 2013, no Moscone Center, em São Francisco. A //build/ é uma ótima oportunidade para você aprender mais sobre como desenvolver aplicativos da Windows Store. Na conferência você assistirá a excelentes apresentações, demonstrações, sessões de informações e muito mais. Muitos membros da nossa equipe de engenharia estão viajando para São Francisco para apresentar essas demonstrações e responder às suas perguntas. Se você quiser ficar por dentro das últimas (e melhores) informações sobre o desenvolvimento de aplicativo da Windows Store, não existe lugar melhor. &lt;/p&gt;  &lt;p&gt;As inscrições começaram na terça-feira, 2 de abril&lt;sup&gt;&lt;/sup&gt;. Você pode ver todos os detalhes sobre a conferência e se registrar em &lt;a href="http://www.buildwindows.com" target="_blank"&gt;www.buildwindows.com&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Encontramos você lá!&lt;/p&gt; &lt;!-- Title: “Registre-se agora na //build/ 2013!” Tags: “build” --&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10408068" width="1" height="1"&gt;</content><author><name>Windows 8 Team</name><uri>http://blogs.msdn.com/win8apps_4000_live.com/ProfileUrlRedirect.ashx</uri></author><category term="build" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/build/" /></entry><entry><title>Suporte do aplicativo da Windows Store no jQuery versão 2.0</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/windowsappdev_br/archive/2013/04/04/suporte-do-aplicativo-da-windows-store-no-jquery-vers-227-o-2-0.aspx" /><id>http://blogs.msdn.com/b/windowsappdev_br/archive/2013/04/04/suporte-do-aplicativo-da-windows-store-no-jquery-vers-227-o-2-0.aspx</id><published>2013-04-04T18:40:15Z</published><updated>2013-04-04T18:40:15Z</updated><content type="html">&lt;div class="PostContent"&gt; &lt;p&gt;Se você já trabalhou com desenvolvimento na Web, é provável que já tenha usado a estrutura de JavaScript de código aberto, jQuery. E se tentou criar aplicativos da Windows Store usando o jQuery, pode ter encontrado erros relacionados ao conteúdo dinâmico ou tempo de execução do JavaScript. Com o próximo lançamento da versão v2.0, a equipe do jQuery resolveu esses problemas. O jQuery v2 beta oferece suporte ao desenvolvimento em HTML5/JS para aplicativos da Windows Store. Como um desenvolvedor da Web, você pode usar suas habilidades e ativos para criar incríveis aplicativos para Windows 8. É possível &lt;a href="http://jquery.com/download/" target="_blank"&gt;testá-los com o jQuery 2.0 beta mais recente agora mesmo&lt;/a&gt;.&lt;i&gt; &lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;“A equipe do jQuery está empolgada com os novos ambientes em que o jQuery 2.0 pode ser usado. Os desenvolvedores de HTML e JavaScript querem aproveitar o conhecimento de jQuery para simplificar o processo de desenvolvimento onde quer que trabalhem. O jQuery 2.0 oferece a habilidade de fazer isso em ambientes como os aplicativos da Windows Store.”&lt;/i&gt; - &lt;a href="https://twitter.com/davemethvin" target="_blank"&gt;Dave Methvin&lt;/a&gt;, presidente, fundação jQuery&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;h2&gt;Aplicativo da Windows Store: um contexto diferente para o código em JavaScript&lt;/h2&gt;  &lt;p&gt;Você deve estar se perguntando porque o jQuery não funcionou antes. Todos os aplicativos da Windows Store, escritos em HTML/JS, C# ou C++, têm acesso nativo ao Tempo de Execução do Windows. Por isso, um novo modelo de segurança foi criado para ajudar a executar os seus aplicativos de forma segura na nova plataforma. Além disso, alguns dos APIs comuns na Web foram modificados para se ajustar ao novo ambiente nativo de uma forma mais significante. Essas diferenças podem causar problemas em códigos que deveriam ser executados em um navegador. A maioria dos problemas está relacionada ao conteúdo dinâmico. Você já deve ter recebido o erro "HTML1701: Não é possível adicionar conteúdo dinâmico…” ou exceções “0x800c001c - Erro em tempo de execução JavaScript: Não é possível adicionar conteúdo dinâmico...”&lt;/p&gt;  &lt;p&gt;Para obter mais informações sobre esse modelo, confira a postagem &lt;a href="http://blogs.msdn.com/b/b8_br/archive/2012/05/24/oferecendo-aplicativos-estilo-metro-confi-225-veis-e-seguros.aspx" target="_blank"&gt;Oferecendo aplicativos estilo Metro confiáveis e seguros&lt;/a&gt;. Você pode saber mais sobre &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh465380.aspx" target="_blank"&gt;as diferenças entre o contexto de um aplicativo da Windows Store e um navegador da Web&lt;/a&gt; no Centro de Desenvolvimento do Windows.&lt;/p&gt;  &lt;h2&gt;Atualização do jQuery para oferecer suporte ao novo modelo&lt;/h2&gt;  &lt;p&gt;Como muitos de vocês sabem, o &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; é uma estrutura de JavaScript muito popular na Web por simplificar ações como manipulação e passagem de documento HTML, manipulação de eventos, animação e Ajax, com um API fácil de usar e que funciona em vários navegadores.&lt;/p&gt;  &lt;p&gt;Para habilitar todos esses recursos do jQuery em seus aplicativos da Windows Store, os especialistas em jQuery no &lt;a href="http://appendto.com/" target="_blank"&gt;appendTo&lt;/a&gt; trabalharam com a comunidade do jQuery para atualizar o jQuery e oferecer suporte ao novo modelo de aplicativo do Windows 8. Nossos engenheiros da Microsoft Open Technologies ofereceram suporte técnico para garantir que todas as alterações aproveitariam ao máximo a plataforma.&lt;/p&gt;  &lt;p&gt;A adição de suporte para aplicativos da Windows Store no jQuery envolveu testes iniciais, portabilidade de testes de unidade e avaliação das dependências de jQuery, como o mecanismo seletor Sizzle, que está na fundação do jQuery. O appendTo identificou diversas áreas na lógica de suporte do jQuery, bem como itens esparsos no Sizzle, usados para apontar elementos em um documento, o que exigia recriação para funcionar usando as diretrizes do modelo de segurança do aplicativo da Windows Store. &lt;/p&gt;  &lt;p&gt;O appendTo enviou o código diretamente para o projeto principal do jQuery, que integrou o suporte. E agora você recebe tudo isso gratuitamente assim que adiciona o jQuery em seu aplicativo. Além disso, você desejará praticar alguns padrões alternativos quando usar o jQuery em um aplicativo da Windows Store. Você pode encontrar mais informações sobre esses padrões no &lt;a href="http://aka.ms/learnjQueryOnWinRT" target="_blank"&gt;site net.tuts+&lt;/a&gt;. Consulte a &lt;a href="http://aka.ms/appendTojQueryOnWinRT" target="_blank"&gt;postagem no blog do appendTo&lt;/a&gt; para obter mais detalhes sobre as alterações feitas nas atualizações. &lt;/p&gt;  &lt;h2&gt;Vamos codificar.&lt;/h2&gt;  &lt;p&gt;Se for um desenvolvedor de JavaScript e HTML5, você pode criar aplicativos do Windows 8 usando o que já sabe juntamente com os códigos e as bibliotecas do JavaScript existentes. Para o código do jQuery, atualize para o &lt;a href="http://jquery.com/download/" target="_blank"&gt;jQuery 2.0&lt;/a&gt; beta e siga os &lt;a href="http://aka.ms/learnjQueryOnWinRT" target="_blank"&gt;novos padrões&lt;/a&gt; compartilhados pelo appendTo. Se não usar o jQuery, você pode aplicar os mesmos padrões e técnicas em seu próprio código e biblioteca para torná-los completamente compatíveis com o Windows 8.&lt;/p&gt;  &lt;p&gt;Se quiser saber mais sobre as novas oportunidades para usar as suas habilidades de desenvolvimento na Web com as plataformas Windows, consulte a &lt;a href="http://aka.ms/jQueryOnWinRT" target="_blank"&gt;postagem no blog do MS Open Tech.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;--Olivier Bloch, divulgador técnico sênior, MS Open Tech&lt;/p&gt; &lt;!-- Title: “Suporte do aplicativo da Windows Store no jQuery versão 2.0” Tags: “JavaScript,aplicativo da Windows Store,jQuery” --&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10407665" width="1" height="1"&gt;</content><author><name>Windows 8 Team</name><uri>http://blogs.msdn.com/win8apps_4000_live.com/ProfileUrlRedirect.ashx</uri></author><category term="JavaScript" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/JavaScript/" /><category term="aplicativo da Windows Store" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/aplicativo+da+Windows+Store/" /><category term="jQuery" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/jQuery/" /></entry><entry><title>Desenvolvendo jogos para a Windows Store</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/windowsappdev_br/archive/2013/03/29/desenvolvendo-jogos-para-a-windows-store.aspx" /><id>http://blogs.msdn.com/b/windowsappdev_br/archive/2013/03/29/desenvolvendo-jogos-para-a-windows-store.aspx</id><published>2013-03-29T22:51:55Z</published><updated>2013-03-29T22:51:55Z</updated><content type="html">&lt;div class="PostContent"&gt; &lt;p&gt;O Windows 8 mudou o panorama dos PCs com fatores forma inovadores, novas arquiteturas de chip, modelos de comércio interessantes e grandes oportunidades. Os jogos de PC sempre definiram o modo como as pessoas usam os computadores. Agora, mais do que nunca, os jogos são exemplo do valor desse novo panorama de dispositivos. Graças à Windows Store, ficou mais fácil comprar, jogar, compartilhar com os amigos e atualizar com segurança os jogos. Por isso não é de se admirar que os jogos sejam responsáveis por tantos downloads, gerem muita renda e consigam a maior interação de usuário na nova plataforma. Com a &lt;a href="http://gdconf.com/" target="_blank"&gt;GDC&lt;/a&gt; tão perto, mais desenvolvedores de jogos querem saber sobre as oportunidades do Windows 8.&lt;/p&gt;  &lt;p&gt;Portanto, como você cria um ótimo jogo na Windows Store? O que o Windows oferece para deixar o seu jogo mais criativo, inovador, rentável e fácil de desenvolver? Que ferramentas, tecnologias e serviços você pode usar? O que tem disponível aí no ecossistema? Que outras descobertas os &lt;a href="http://www.windowsstore.com/partner-stories" target="_blank"&gt;desenvolvedores compartilharam&lt;/a&gt; quando estavam desenvolvendo o Windows 8? Esta postagem responderá as questões sobre esses tópicos e também esclarecerá como você pode desenvolver um jogo impressionante para a Windows Store. &lt;/p&gt;  &lt;h2&gt;Considerações sobre a criação e desenvolvimento de jogos do Windows 8&lt;/h2&gt;  &lt;p&gt;O Windows 8 foi projetado e tem engenharia específica para proporcionar entretenimento. As diretrizes de experiência do usuário (UX) do Windows 8 incentivam o uso de imagem em tela inteira assim como interações rápidas e fluidas sem bordas ou decorações extra nas janelas. A orientação de design recomenda que os aplicativos se concentrem em experiências que convidem os usuários a participar e fazer interações que os levem a uma experiência imersiva. A maioria dos controles dos jogos deve ser fácil de acessar, e os controles secundários devem ficar embutidos na barra do aplicativo ou no painel de controle até que se precise usá-los. Isso é ótimo para os aplicativos em geral, mas como esses princípios afetam os jogos? Afinal, os desenvolvedores de jogos vêm fornecendo experiências imersivas rápidas e fluidas, em tela inteira, há muito tempo. Contudo, várias perguntas básicas surgem quase que imediatamente:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Como a mecânica do jogo se adapta do PC avançado até os notebooks e tablets?&lt;/li&gt;    &lt;li&gt;Quais são os principais fatores forma a considerar?&lt;/li&gt;    &lt;li&gt;É possível ativar os jogos para o toque, o controle do jogo e o teclado/mouse ao mesmo tempo?&lt;/li&gt;    &lt;li&gt;Quais são os principais tamanhos de tela, taxas de proporção e resoluções?&lt;/li&gt;  &lt;/ul&gt;  &lt;p&gt;Os desenvolvedores de jogos vêm usando uma ampla variedade de tecnologias para fornecer jogos de entretenimento para PC há muito tempo. As APIs usadas no Windows se desenvolveram significativamente com o tempo. Com o Windows 8, surgiu uma nova plataforma de desenvolvimento. A &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br211377" target="_blank"&gt;API do Tempo de Execução do Windows&lt;/a&gt; agrega as melhores tecnologias das APIs do passado e traz melhorias significativas para o desempenho, segurança, consistência de desenvolvimento e serviços. A Windows Store cria uma maneira nova de se descobrir, distribuir e oferecer os jogos. As novas APIs agregam valor significantemente para os desenvolvedores de jogos que buscam um novo modelo de desenvolvimento. Você pode ter algumas perguntas quando começar a desenvolver um jogo da Windows Store, por exemplo: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Quais são as melhores APIs do Tempo de Execução do Windows para desenvolver jogos?&lt;/li&gt;    &lt;li&gt;Como os modelos de desenvolvimento se relacionam com os diferentes gêneros de jogos?&lt;/li&gt;    &lt;li&gt;Como faço a transição do meu código para outras plataformas?&lt;/li&gt;    &lt;li&gt;Como eu atualizo o código de versões mais antigas do Windows?&lt;/li&gt;    &lt;li&gt;Quais são, se houver, os recursos dos jogos que precisam de atualização?&lt;/li&gt;    &lt;li&gt;Existem recursos que me ajudam a reduzir os custos de desenvolvimento?&lt;/li&gt;    &lt;li&gt;Onde está o DirectX SDK?&lt;/li&gt;  &lt;/ul&gt;  &lt;h2&gt;Jogos reimaginados&lt;/h2&gt;  &lt;p&gt;Todo jogo começa com uma ideia. Uma ideia pode surgir de lugares muito diferentes. Às vezes, ela surge aleatoriamente na sua cabeça enquanto você está caminhado ou no chuveiro. Outras vezes, uma abordagem mais colaborativa e interativa com a equipe pode resultar em uma ideia. Quando tiver a ideia, você precisa decidir que tipo de jogo será. Talvez você queira um jogo novo e diferenciado. Ou talvez você queira tornar compatível um jogo que já existe. Pode ser um jogo de tiro, quebra-cabeça ou corrida. Não importa que tipo de jogo é, tem um lugar para ele na Windows Store. Os &lt;a href="http://channel9.msdn.com/Events/Build/2012/3-111" target="_blank"&gt;Estudos de caso de jogos&lt;/a&gt; apresentados no //build/ 2012 podem inspirá-lo. Se tiver uma conta de desenvolvedor da Windows Store, você pode navegar pelas subcategorias de jogos para se inspirar e ver que desempenho as categorias diferentes de jogos têm em diferentes regiões.&lt;/p&gt;  &lt;h2&gt;Orientações de design de jogos&lt;/h2&gt;  &lt;p&gt;Quando tiver decidido que jogo quer criar, tomar as decisões no front-end poderá economizar muito tempo de desenvolvimento mais tarde. A página &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh868271.aspx" target="_blank"&gt;Criando jogos excelentes para o Windows&lt;/a&gt; oferece algumas ideias sobre como melhor atrair os jogadores e mantê-los envolvidos com os blocos e notificações. Há também sugestões sobre que tipo de layout geral usar e onde colocar os controles primários e secundários. &lt;/p&gt;  &lt;p&gt;Você achará recomendações sobre as interações e sobre como incorporar toque, sensores e contratos no seu jogo. As decisões sobre a mecânica e controle dos jogos devem ser tomadas o quanto antes para definir o escopo do desenvolvimento. Dito isto, a plataforma do Tempo de Execução do Windows torna mais prático do que nunca o suporte a toque, caneta (tinta) e mouse com o mesmo código, sem você ter de projetar uma mecânica especial para diferentes fatores forma. Como todo computador Windows tem um lugar para conectar um controle de jogo, não perca a oportunidade e certifique-se de incluir esse mecanismo de controle no seu jogo também. &lt;/p&gt;  &lt;p&gt;Planeje como – e em que lugar – você introduzirá as interações e mecânica do jogo para o jogador. Se for lento demais, eles podem perder o interesse; rápido demais, eles podem ficar frustrados. Talvez o mais importante de tudo seja decidir que modelo de monetização e plataforma de comércio você gostaria de usar. A Windows Store permite que você &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/jj193599.aspx" target="_blank"&gt;escolha seu modelo de negócios&lt;/a&gt;. Há suporte para os modelos Grátis para jogar, Baseado em anúncio, Compras no aplicativo e Conteúdo baixável. Os jogos da Windows Store podem se beneficiar de avaliações internas baseadas em tempo ou em recurso. Uma alternativa é usar um provedor de comércio de terceiros ou usar o seu próprio. Em ambos os casos, como esses fatores podem ter um impacto significante no sucesso do seu jogo, seja monetariamente ou na popularidade, eles são de grande importância.&lt;/p&gt;  &lt;p&gt;Como todos os aplicativos da Windows Store, os jogos têm de dar suporte para diferentes estados de ativação, exibição e suspensão. A orientação de design o ajudará oferecendo considerações para como e quando pausar o jogo, como e quando suspender o estado do jogo, e como e quando manipular os estados de exibição em tela inteira, ajustado e de preenchimento. Decida como será o suporte do seu jogo para as orientações de paisagem e retrato. Considere o tamanho dos destinos e outros controles na tela ao ajustar a resolução dos ativos do jogo para eles corresponderem aos tamanhos de tela (ou parte deles). Também não esqueça de considerar as taxas de proporção, resoluções e configurações de DPI das telas. Dessa maneira, você terá certeza de que o conteúdo do jogo aparecerá corretamente em qualquer tamanho de tela ou fator de escala.&lt;/p&gt;  &lt;p&gt;Por fim, lembre-se de considerar outras coisas que podem ajudar a aumentar as funcionalidades de acessibilidade e socialização do jogo. Um modo de contraste alto e mais filas de áudio podem ajudar a aumentar a visibilidade e facilidade de jogar e, por isso, incentivar a sua adoção por jogadores em condições de iluminação não tão ideais ou com deficiências visuais. Além disso, aproveitar as funcionalidades internas da plataforma para usar &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/xaml/Hh465283"&gt;identidade online&lt;/a&gt; (autenticação), dados &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/xaml/hh700362.aspx"&gt;roaming&lt;/a&gt; e &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/xaml/Hh871373(v=win.10).aspx"&gt;compartilhamento&lt;/a&gt; para outros aplicativos pode criar uma interação maior por meio da atividade social como é o caso com a comparação de resultados dos jogos e jogar em PCs diferentes.&lt;/p&gt;  &lt;h2&gt;Orientações para o desenvolvimento de jogos&lt;/h2&gt;  &lt;p&gt;O DirectX é considerado o centro da plataforma de desenvolvimento de jogos do Windows. Contudo, muitos outros componentes foram desenvolvidos e tiveram uma migração para o Windows 8 SDK para fornecer todas as funcionalidades necessárias de que a plataforma precisa para oferecer suporte a ecossistemas diversos de jogos do Windows. Fornecemos uma abordagem de desenvolvimento consistente e abrangente. Também incorporamos as práticas recomendadas aprendidas de outras plataformas de desenvolvimento de jogos. Mais importante de tudo, contudo, enfatizamos e observamos duas metas de arquitetura. O desempenho e o consumo de energia foram muito importantes na decisão da arquitetura, conforme descrito na postagem &lt;a href="http://blogs.msdn.com/b/b8_br/archive/2012/08/01/hardware-acelerando-tudo-gr-225-ficos-do-windows-8.aspx" target="_blank"&gt;Hardware acelerando tudo: Gráficos do Windows 8&lt;/a&gt;. O desenvolvimento de jogos no Windows 8 é muito bom porque a plataforma inteira foi projetada para fornecer entretenimento rápido e fluido. &lt;/p&gt;  &lt;h3&gt;C++ com DirectX é a linguagem de desenvolvimento preferida para jogos&lt;/h3&gt;  &lt;p&gt;O Tempo de Execução do Windows fornece APIs eficientes que expõem todos os dispositivos e sensores novos de forma conveniente e consistente e simplifica a manipulação de eventos do Windows. Há um só SDK do Windows de modo que toda API que você precisa para desenvolver um jogo da Windows Store está disponível no Microsoft Visual Studio 2012. Para obter experiências imersivas e de alta fidelidade, você deverá &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh465149.aspx" target="_blank"&gt;usar os APIs DirectX do Windows 8 para criar jogos em 3D&lt;/a&gt;. Essa é a versão mais fácil do DirectX para desenvolvimento, e ela dá suporte a uma grande variedade de níveis de recursos gráficos, desde o DirectX 9.1 até todos os recursos de hardware mais recentes apresentados no DirectX 11.1, o que permite personalizar o jogo para cada PC, dos tablet PCs portáteis com Windows 8 baseado em ARM até os PCs turbinados para jogos e com várias GPUs.&lt;/p&gt;  &lt;p&gt;Se você fica à vontade com uma linguagem de desenvolvimento em particular, pode usar toda a sua habilidade e experiência no Windows 8. Os jogos da Windows Store podem ser desenvolvidos com várias combinações de tecnologia, dependendo do tipo de jogo que estiver desenvolvendo e da sua preferência. Você não será forçado nem ficará limitado a usar uma sintaxe ou modelo. Desenvolvedores de código gerenciado podem criar jogos ótimos em 2D que aproveitem o ponto forte e os recursos da plataforma Windows Store. Se você for um desenvolvedor da Web, pode aproveitar a Web e a habilidade de desenvolvimento de jogos para a Web que você já tem para criar um jogo que pode render lucros por meio da Windows Store. Para jogos interativos em 3D, recomendamos que use C++ com DirectX (e opcionalmente XAML), que será o assunto principal do resto desse artigo.&lt;/p&gt;  &lt;h3&gt;Componentes de desenvolvimento de jogos&lt;/h3&gt;  &lt;p&gt;O Windows 8 oferece uma tecnologia interna de jogos que vem com toda versão do OS e reside em cada PC, e assim você não precisa se preocupar com a distribuição ou gerenciamento de várias versões. Não há necessidade de encontrar, baixar e instalar outros componentes.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/8206.awesome_5F00_game2_5F00_51B74335.png"&gt;&lt;img style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="Os componentes e bibliotecas de desenvolvimento de jogos do Windows 8" border="0" alt="Os componentes e bibliotecas de desenvolvimento de jogos do Windows 8" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-31-metablogapi/3010.awesome_5F00_game2_5F00_thumb_5F00_37E30D06.png" width="600" height="230" /&gt;&lt;/a&gt;&lt;i&gt;Figura 1: Os componentes e bibliotecas de desenvolvimento de jogos do Windows 8&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Desde os elementos gráficos, áudio e entrada, até a E/S de arquivo, agendamento, matemática e rede, cada componente é acessível na linguagem de desenvolvimento que escolher. Os componentes de nível mais baixo oferecem mais flexibilidade, gerenciamento de recursos e desempenho, mas podem precisar de mais código para controlarem de forma abrangente o processamento e fluxo dos dados necessários. Com C++, existe uma linha direta para a GPU, a CPU e os serviços de nível baixo da plataforma Windows 8, o que permite escrever códigos de alto desempenho. Com as novas extensões de linguagem C++/CX, a sintaxe se aproxima da simplicidade do C#. Você obtém um gerenciamento de objeto transparente por meio da contagem de referências, e não há camada de tempo de execução, coleção de lixo ou comportamentos de compilação just-in-time que possam vir a comprometer o bom desempenho do jogo. &lt;/p&gt;  &lt;p&gt;Para elementos gráficos em 3D e 2D, mídia, imagem e muitos dos outros componentes do jogo – as tecnologia DirectX do Windows 8 fornecem um conjunto abrangente de APIs, componentes e bibliotecas para a criação. Consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/jj554502.aspx" target="_blank"&gt;Introdução ao desenvolvimento de jogos DirectX&lt;/a&gt; para ter uma visão geral e abrangente. A nova pilha gráfica do Windows 8 é mais integrada, tornando os componentes Direct2D, Direct3D, DirectVideo e DirectCompute mais fáceis de usar em conjunto e exigindo menos recursos duplicados do que antes. Também adicionamos suporte interno para os controles do Xbox com a biblioteca XInput. Para saber mais, consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh452799.aspx" target="_blank"&gt;Trabalhando com entrada e controles em seu jogo em DirectX&lt;/a&gt;. As APIs melhoradas para áudio e mixagem de som com XAudio2 são abordadas na seção &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh452794.aspx" target="_blank"&gt;Trabalhando com áudio em seu jogo em DirectX&lt;/a&gt; , e as funções matemáticas simplificadas e tipos são discutidos no &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/ee415571.aspx" target="_blank"&gt;Guia de programação do DirectXMath&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Uma das maiores vantagens do enfoque de desenvolvimento do DirectX/C++ é você poder reutilizar quantidades significativas do seu código para criar um jogo da Windows Store (e jogo do Windows Desktop), um jogo de Windows Phone e um jogo do Xbox 360. As APIs DirectX são relevantes para todas as plataformas de jogos Microsoft. Tudo que você precisa para criar um ótimo jogo para o Windows está incluído no Tempo de Execução, no SDK do Windows e no Visual Studio 2012. Para obter informações sobre o SDK DirectX herdado, consulte &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/desktop/ee663275.aspx" target="_blank"&gt;Where is the DirectX SDK?&lt;/a&gt; Há vários modelos adicionais de desenvolvimento no Windows 8. Um modelo híbrido que dá suporte a &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh825871.aspx" target="_blank"&gt;Interoperabilidade entre DirectX e XAML (aplicativos da Windows Store em C++ e DirectX)&lt;/a&gt; fornece o melhor controle, desempenho e conveniência do kit de ferramentas de interface do usuário para WinRT. &lt;/p&gt;  &lt;h3&gt;Ferramentas de desenvolvimento&lt;/h3&gt;  &lt;p&gt;Fornecemos um ótimo conjunto de ferramentas para atender às demandas dos desenvolvedores de jogos da Windows Store. O Visual Studio 2012 tem um &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br229582.aspx" target="_blank"&gt;modelo para aplicativos da Windows Store em DirectX&lt;/a&gt; que oferece uma grande ajuda no desenvolvimento para Direct3D. O &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh465033.aspx" target="_blank"&gt;código de modelo&lt;/a&gt; fornece a infraestrutura de provedor de exibição básica, suporte de janelas e referências a todos os cabeçalhos e componentes necessários. Há outros modelos para explorar que oferecem a você a certeza de estar usando as práticas recomendadas qualquer que seja o modelo escolhido de desenvolvimento de jogos. &lt;/p&gt;  &lt;p&gt;Além disso, novos recursos do Visual Studio 2012 foram adicionados para melhorar o desenvolvimento, a depuração e a criação de perfil dos jogos. Os investimentos das &lt;a href="http://msdn.microsoft.com/pt-br/library/bb386063(v=vs.110).aspx#BKMK_GraphicsTools" target="_blank"&gt;Ferramentas gráficas&lt;/a&gt; do Visual Studio 2012 foram feitos para garantir que o desenvolvimento de aplicativo gráfico tivesse uma integração perfeita. Trabalhe com modelos em 3D, exiba texturas e imagens ou crie, edite e compile sombreadores HLSL sem sair da interface IDE que você conhece. &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh315751.aspx" target="_blank"&gt;A depuração de aplicativos intensivos gráficos DirectX&lt;/a&gt; no Visual Studio 2012 agora é mais intuitivo com a integração dos recursos de captura e reprodução de API gráfica (anteriormente conhecido como PIX do Windows). &lt;/p&gt;  &lt;h3&gt;Exemplos e tutoriais&lt;/h3&gt;  &lt;p&gt;Esses exemplos fornecem uma grande variedade de códigos de exemplo para você começar rapidamente o desenvolvimento de jogos. Cada exemplo é voltado para uma tecnologia ou técnica em particular. Os tutoriais e exemplos foram desenvolvidos levando-se em conta uma progressão. Estão em ordem lógica começando com a menor quantidade de código e a abordagem mais simples para ajudar você a começar. Cada novo exemplo se agrega ao exemplo anterior com mais um ou dois conceitos até que todo o jogo seja criado. &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh994935.aspx" target="_blank"&gt;Escrevendo código para aplicativos da Windows Store (DirectX e C++)&lt;/a&gt; explica algumas das coisas que você precisa saber sobre como criar código DirectX and C++ para aplicativos da Windows Store. &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Direct3D-Tutorial-Sample-08667fb0" target="_blank"&gt;Tutorial do Direct3D&lt;/a&gt;: Este tutorial em cinco etapas mostra como inicializar o Direct3D, escrever na superfície e exibir atualizações da superfície usando a cadeia de permuta. O "cubo girando" exibido nesse exemplo se estende a outros exemplos do Direct3D, e por isso é um ótimo lugar para se começar se você já conhece as APIs do Direct3D.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Simple-Direct3D-Touch-f98db97e" target="_blank"&gt;Exemplo de toque do DirectX&lt;/a&gt;: Esse item mostra o suporte a toque adicionado ao cubo girando do D3DTutorial. Especificamente, esse item mostra como conectar as atualizações de animação do Direct3D aos eventos de toque fornecidos pelo Tempo de Execução do Windows. Veja o exemplo de mapeamento de rugosidade para a navegação com gesto de pinçagem para aplicar zoom.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Direct3D-sprite-sample-97ae6262" target="_blank"&gt;Exemplo de sprite do Direct3D&lt;/a&gt;: Isso fornece a implementação de comportamento do Direct3D em lote de sprite, similar à API SpriteBatch XNA. Sprites são bitmaps em 2D que podem ser transformados e gerenciados independentemente em uma cena 3D, geralmente usados em jogos em 2D, ou para representar em computação objetos caros ou distantes em jogos em 3D.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Direct3D-Resource-Loading-25406148" target="_blank"&gt;Exemplo de carregamento de recursos&lt;/a&gt;: Esse item demonstra uma abordagem de carregamento de recursos e ativos como sombreadores, texturas e malhas. (Observe que cada tipo de conteúdo tem uma regra de criação associado a ele no projeto. Você pode adicionar seus próprios aplicativos de processador de conteúdo e criar suas próprias regras para invocá-los.)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Direct3D-bump-mapping-619d8d23" target="_blank"&gt;Exemplo de mapeamento de rugosidade do Direct3D&lt;/a&gt;: Isso demonstra o mapeamento de rugosidade usando um mapa normal e a iluminação por pixel. O exemplo fornece códigos para iluminação sombreada de superfície de um objeto usando um mapa normal e uma textura de cor. Também implementa um controle com gesto de pinçagem para aplicar zoom muito básico sem um reconhecedor de gestos.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Direct3D-Post-Processing-3fd1edb8" target="_blank"&gt;Exemplo de processamento posterior do Direct3D:&lt;/a&gt; Isso demonstra o processamento posterior da cena simples do cubo girando usando buffers intermediários dimensionados para baixo em um aplicativo da Windows Store em C++ com Direct3D. Esse item demonstra o uso de dois sombreadores diferentes dependendo do tipo de nível do recurso de hardware. O destino de renderização intermediário pode ser modificado para renderizar uma superfície menor para melhorar o desempenho e, em seguida, dimensionar para cima até alcançar a resolução nativa final do dispositivo para obter alta qualidade.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Basic-Audio-Sample-9a5bb0b7" target="_blank"&gt;Exemplo de reprodução de arquivo de áudio AUDIO2&lt;/a&gt;: Esse aplicativo de exemplo mostra como incorporar as APIs do XAudio2 de efeitos sonoros interativos de baixa latência ao seu jogo DirectX para obter uma experiência de audição melhor.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Simple-XInput-Controller-77c4b8e5" target="_blank"&gt;Exemplo de controle de jogo XINPUT:&lt;/a&gt;&lt;b&gt; &lt;/b&gt;Esse item mostra como adicionar o suporte para o controle de Xbox ao seu jogo DirectX. Ele lê as entradas de um controle do Xbox e exibe os dados dos movimentos dos sticks analógicos e dos pressionamentos de botões. Esse item mostra como obter um estado de entrada de um controle conectado e desenhar no visor usando o Direct2D e o DirectWrite.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Direct3D-111-Simple-Stereo-9b2b61aa" target="_blank"&gt;Exemplo de 3D estereoscópico do Direct3D:&lt;/a&gt; O Windows 8 dá suporte ao 3D estéreo como recurso central do OS. Esse aplicativo mostra como incorporar 3D estereoscópico ao seu jogo DirectX. Esse item também demonstra como responder às alterações estéreo do sistema no Direct3D.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Licensing-API-Sample-19712f1a" target="_blank"&gt;Avaliações e compras no aplicativo&lt;/a&gt; são tão importantes para o sucesso dos jogos que esse item aborda o modo de usar a API de licenciamento fornecida pela Windows Store para determinar o estado de licença de um jogo ou de um recurso que está habilitado por uma compra no aplicativo.&lt;/li&gt;  &lt;/ol&gt;  &lt;p&gt;A seguir encontram-se exemplos completos que integram técnicas individuais a jogos inteiros:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Metro-style-DirectX-7c64aa8d" target="_blank"&gt;DirectX Simple 3D Shooting Game&lt;/a&gt;: Esse aplicativo de exemplo completo e as &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh780567.aspx" target="_blank"&gt;instruções abrangentes de código&lt;/a&gt; mostram como incorporar vários tipos de controle e técnicas do DirectX em um jogo simples de galeria de tiro em primeira pessoa. Se você já conhece os conceitos básicos de todos os exemplos de técnicas individuais, esse é uma boa oportunidade de ver em ação todos os componentes de um jogo da Windows Store em Direct3D. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/Metro-style-DirectX-18f98448" target="_blank"&gt;Jogo simples de tiro em 3D em DirectX XAML&lt;/a&gt;: Esse item demonstra a implementação completa básica de um jogo simples em 3D e em primeira pessoa usando o DirectX (Direct3D 11.1, Direct2D, XInput e XAudio2) e XAML em um aplicativo C++. O Direct3D é usado para renderizar o conteúdo 3D, e o XAML é usado para a exibição de alertas e as mensagens de estado do jogo.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/windowsapps/DirectX-Marble-Maze-Game-e4806345" target="_blank"&gt;Exemplo de jogo de labirinto de bola de gude DirectX&lt;/a&gt;: Esse aplicativo de jogo completo é um simples jogo de labirinto no qual o jogador tem que rolar uma bola de gude por meio de um labirinto com armadilhas usando os controles de inclinação. Esse item demonstra como colocar todos os componentes do jogo em um único aplicativo. Também fornecemos observações úteis sobre esse aplicativo na forma de um &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/br230257(v=VS.85).aspx" target="_blank"&gt;instruções completas de código&lt;/a&gt;.&lt;/li&gt;  &lt;/ul&gt;  &lt;h3&gt;Técnicas para desenvolver jogos&lt;/h3&gt;  &lt;p&gt;Vale destacar vários padrões de desenvolvimento, práticas recomendadas e técnicas que são particularmente relevantes ao desenvolvimento de jogos:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh994923.aspx" target="_blank"&gt;Focando em diferentes níveis de recursos do Direct3D&lt;/a&gt; ajuda a entender como otimizar em conjunto muitos dispositivos que têm diferentes níveis de desempenho gráfico. Isso permitirá que você alcance um público maior para o jogo da Windows Store criado para o Windows usando DirectX com C++.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh994919.aspx" target="_blank"&gt;A programação assíncrona&lt;/a&gt; garante que o jogo tire vantagem de CPUs com vários núcleos e hyper threads. Os elementos gráficos, de áudio, lógica, E/S de arquivo e rede do jogo podem ser todos postos em paralelo para obter um melhor desempenho e duração da bateria.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/xaml/hh465290" target="_blank"&gt;Use a paralelização do pool de threads&lt;/a&gt; para jogos da Windows Store em vez das tradicionais APIs de threading (como o CreateThread). O modelo da tarefa é especialmente importante para oferecer e assegurar a existência de uma interface de usuário com capacidade de resposta, conforme descrito nessa &lt;a href="http://blogs.msdn.com/b/shawnhar/archive/2012/03/12/createthread-for-windows-8-metro.aspx" target="_blank"&gt;postagem&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/jj262112.aspx" target="_blank"&gt;Dando suporte à orientação de tela&lt;/a&gt; aborda a rotação de tela e o dimensionamento de DPI do conteúdo e entrada para aplicativos DirectX. Isso ajuda a garantir que o jogo funcione bem em várias resoluções de tela.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh452773.aspx" target="_blank"&gt;Adicionando controles move-look ao seu jogo&lt;/a&gt; explica uma técnica de navegação tradicional similar à do mouse que foi adaptada para adicionar toque ao modelo de desenvolvimento da Windows Store. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh994925.aspx" target="_blank"&gt;Desenvolvendo controles de mouse&lt;/a&gt; aborda a implementação de controles de mouse relativos, o que oculta o cursor do sistema e retorna coordenadas relativas de tela em vez de valores absolutos.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh452788.aspx" target="_blank"&gt;Requisitos para a publicação de jogos&lt;/a&gt; provê os desenvolvedores de jogos do Windows 8 com informações sobre as ferramentas e o suporte para cenários de publicação de jogos comuns, como a certificação de classificação e o empacotamento. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/jj863300.aspx" target="_blank"&gt;Dando suporte a processadores ARM E Windows RT&lt;/a&gt; coloca o jogo da Windows Store em DirectX para funcionar nos dispositivos do Windows RT, com foco no nível de recurso Direct3D 9_1 e compilação de um pacote ARM.&lt;/li&gt;  &lt;/ul&gt;  &lt;h3&gt;Usando middleware para reduzir o tempo ou custo de desenvolvimento&lt;/h3&gt;  &lt;p&gt;Desenvolver jogos profissionais de alta qualidade pode custar caro. Desenvolver jogos para várias plataformas pode ser complexo, propenso a erro e mais caro ainda. Muitos estúdios de criação de jogos criam ferramentas e desenvolvem tecnologias de produção que produzem o processo de desenvolvimento do jogo ou "pipeline". Esses investimentos ajudam os estúdios de criação a aproveitar seus ativos de jogos entre diferentes jogos e plataformas. Criar mecanismos, kits de ferramenta de interface de usuário, oclusão de visibilidade, simuladores físicos, criação de vídeo e áudio, interpolação de animação e inteligência artificial são apenas algumas das categorias de tecnologia geralmente envolvidas no desenvolvimento de jogos. Algumas tecnologias de jogos podem levar anos até serem desenvolvidas e ajustadas.&lt;/p&gt;  &lt;p&gt;Os pipelines proprietários de jogos são incrivelmente valiosos, e muitos estúdios consideram os investimentos tão estratégicos quanto os jogos que criam. Entretanto, nem todo mundo pode arcar com o tempo e custo de desenvolver um pipeline. Por sorte, fornecedores de terceiros oferecem pipelines de desenvolvimento completos ou bibliotecas de tecnologia em separado que fornecem essas funcionalidades. Desde o lançamento do Windows 8, muitos fornecedores de middleware de jogos fizeram a migração dos seus produtos para o novo modelo de aplicativo da Windows Store. Usando esses produtos, seu produto chega à Windows Store mais rapidamente e com muito menos risco. Com o tempo, esperamos que mais fornecedores anunciem e disponibilizem produtos para o desenvolvimento de jogos da Windows Store. A seguir (em ordem alfabética) apresentamos uma lista de fornecedores de middleware de jogos de terceiros que (até a publicação desse artigo) anunciaram ou disponibilizaram versões de seus produtos que tem suporte para o desenvolvimento de jogos do Windows 8. &lt;/p&gt;  &lt;div align="center"&gt;   &lt;table class="b8table" border="0" cellspacing="0" cellpadding="3" align="center"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="208"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;Appcelerator &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="208"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;appMobi {!}&lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="217"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;Audiokinetic Wwise&lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="208"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;Autodesk Scaleform &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="208"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;Cocos2d &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="217"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;Epic Unreal Engine 3 &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="208"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;Exit Games Photon Server &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="208"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;Fortumo Mobile Payments &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="217"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;Firelight Technologies FMOD &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="208"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;GameSalad Creator &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="208"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;Havok Physics &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="217"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;Havok Vision Engine &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="208"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;MonoGame &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="208"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;Ogre Rendering Engine &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="217"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;NVIDIA PhysX &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="208"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;Scirra Construct 2 &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="208"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;SharpDX &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="217"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;ShiVa3D &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="208"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;SlimDX &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="208"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;Unigine Engine &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="217"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;Unity 3d &lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="208"&gt;           &lt;ul&gt;             &lt;li&gt;               &lt;div align="left"&gt;Yoyo Games GameMaker&lt;/div&gt;             &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="208"&gt; &lt;/td&gt;          &lt;td valign="top" width="217"&gt; &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;  &lt;/div&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/pt-br/library/bb200104(v=xnagamestudio.40).aspx" target="_blank"&gt;XNA Game Studio da Microsoft&lt;/a&gt; é um pipeline de desenvolvimento de jogos que se concentra no Xbox 360, Windows Phone e Windows. Contudo, não é compatível com o desenvolvimento de jogos da Windows Store (embora os jogos XNA não tenham suporte como os aplicativos de desktop do Windows 8. O desenvolvimento DirectX com Visual C++/CX pega emprestado muitos padrões e práticas do XNA e compartilha muitas similaridades conceituais. Por isso muitos desenvolvedores de jogos XNA vão achar, mais do que nunca, relativamente fácil a migração para o desenvolvimento em DirectX e C++. Como alternativa, vimos desenvolvedores usar com sucesso a biblioteca &lt;a href="http://monogame.codeplex.com/" target="_blank"&gt;MonoGame&lt;/a&gt;, que replica muitas funcionalidades do XNA Game Studio. Vários artigos foram escritos sobre o aproveitamento dos ativos criados com XNA para jogos voltados para a Windows Store. Esse é um &lt;a href="http://blogs.msdn.com/b/tarawalker/archive/2012/12/04/windows-8-game-development-using-c-xna-and-monogame-3-0-building-a-shooter-game-walkthrough-part-1-overview-installation-monogame-3-0-project-creation.aspx" target="_blank"&gt;link&lt;/a&gt; com mais informações sobre o assunto.&lt;/p&gt;  &lt;h3&gt;Recursos adicionais para desenvolver jogos&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;A documentação tem uma &lt;a href="http://msdn.microsoft.com/pt-br/library/windows/apps/hh452744.aspx" target="_blank"&gt;área dedicada de desenvolvimento de jogos no MSDN&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;As sessões voltadas para os jogos, conjunto de slides e gravações de palestras que foram dadas em &lt;a href="http://channel9.msdn.com/Events/Build/2012?sort=sequential&amp;amp;direction=desc&amp;amp;term=game" target="_blank"&gt;//build/ 2012&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;As sessões voltadas para os jogos, conjunto de slides e gravações de palestras que foram dadas na &lt;a href="http://blogs.msdn.com/b/chuckw/archive/2012/03/28/game-developer-conference-2012.aspx" target="_blank"&gt;GDC 2012&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;As sessões voltada para os jogos, conjunto de slides e gravações de palestras que foram dadas em &lt;a href="http://channel9.msdn.com/Events/Build/BUILD2011?sort=sequential&amp;amp;direction=desc&amp;amp;term=game" target="_blank"&gt;//build/ 2011&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Há ajuda e suporte disponível no The Developer Center que tem um &lt;a href="http://social.msdn.microsoft.com/Forums/pt-br/wingameswithdirectx/threads" target="_blank"&gt;fórum dedicado ao desenvolvimento de jogos&lt;/a&gt; para desenvolvedores de jogos como você e que podem fornecer respostas quando você precisar delas.&lt;/li&gt;    &lt;li&gt;O &lt;a href="http://directxtk.codeplex.com/" target="_blank"&gt;DirectX Toolkit&lt;/a&gt; é uma coleção das aulas de ajuda para criar código em Direct3D 11 C++&lt;/li&gt;    &lt;li&gt;Outros auxílios ótimos são os blogs &lt;a href="http://blogs.msdn.com/b/chuckw/" target="_blank"&gt;Chuck Walbourn’s blog&lt;/a&gt; e &lt;a href="http://blogs.msdn.com/b/shawnhar/" target="_blank"&gt;Shawn Hargreaves’ blog&lt;/a&gt;&lt;/li&gt;  &lt;/ul&gt;  &lt;h2&gt;Resumo&lt;/h2&gt;  &lt;p&gt;O Windows 8 mudou os PCs com fatores forma novos, tecnologia inovadora e modelos de comércio lucrativos que são perfeitos para os jogos. A plataforma representa um terreno fértil de oportunidades para quem aproveitar. A Windows Store tinha milhares de jogos na época em que esse artigo foi escrito, e esse número cresce diariamente. A meta dessa postagem é ajudar a entender o que seria necessário para você mesmo criar um ótimo jogo da Windows Store e aproveitar essas possibilidades. A informação tinha como intuito esclarecer o modo como o Windows 8 pode deixar o desenvolvimento de jogos mais fácil, criativo, inovador e rentável. Vimos quais as ferramentas, tecnologias e serviços estão disponíveis na plataforma e quais tecnologias de terceiros estão disponíveis. Enquanto aguardamos a chegada da &lt;a href="http://gdconf.com/" target="_blank"&gt;Game Developer Conference&lt;/a&gt; anual, em São Francisco, consulte esta postagem para obter orientação sobre como desenvolver jogos da Windows Store.&lt;/p&gt;  &lt;p&gt;Vamos jogar! &lt;/p&gt;  &lt;p&gt;Shai Hinitz, Gerente de programas sênior&lt;/p&gt; &lt;!--
Title "Desenvolvendo jogos para a Windows Store"
Tags "Aplicativos da Windows Store, GDC, jogos do Windows 8, jogos da Windows Store, jogo, jogos do Windows, jogos"
--&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10406419" width="1" height="1"&gt;</content><author><name>Windows 8 Team</name><uri>http://blogs.msdn.com/win8apps_4000_live.com/ProfileUrlRedirect.ashx</uri></author><category term="aplicativos da Windows Store" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/aplicativos+da+Windows+Store/" /><category term="jogos do Windows 8" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/jogos+do+Windows+8/" /><category term="GDC" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/GDC/" /><category term="jogos do Windows" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/jogos+do+Windows/" /><category term="jogos" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/jogos/" /><category term="jogos da Windows Store" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/jogos+da+Windows+Store/" /><category term="jogo" scheme="http://blogs.msdn.com/b/windowsappdev_br/archive/tags/jogo/" /></entry></feed>