Compartilhando de seu aplicativo

Blog do desenvolvedor de aplicativos do Windows 8

Ideias sobre a criação de aplicativos com o estilo Metro para o Windows 8, da equipe de engenharia do Windows 8

Compartilhando de seu aplicativo

  • Comments 0

No Windows 8, compartilhar é uma experiência ubíqua e uma expectativa natural do usuário. Os usuários muitas vezes se deparam com um conteúdo no aplicativo que desejam compartilhar com os amigos ou usar em outro aplicativo. Como desenvolvedor você pode atender a essa expectativa do usuário usando o contrato de Compartilhamento que fornece um modelo leve, contextual e fácil para realizar o compartilhamento entre aplicativos.

Você pode estar familiarizado com o aplicativo Food with Friends, apresentado na postagem Criando aplicativos estilo Metro que se destaquem da concorrência. Nessa postagem, falamos mais sobre como um aplicativo pode ser uma ótima fonte de compartilhamento usando o Food with Friends como exemplo. Consultaremos as exibições, a hierarquia e a expressão do que o aplicativo "tem de melhor" para nos orientar sobre o design e as decisões técnicas envolvidas na criação de uma ótima experiência de fonte de compartilhamento.

Modos de exibição e a hierarquia do Food with Friends

Modos de exibição e hierarquia do Food with Friends

O que é Compartilhamento e por que ele é importante?

Como vimos na postagem Adotando a interface do usuário sob demanda, o Windows 8 apresenta os botões como um lugar conveniente para pontos de entrada em ações ubíquas, como pesquisar, compartilhar, conectar a configurações e dispositivos em todos aplicativos com Windows. Os Contratos ajudam a aumentar o poder desses pontos de entrada de rápido acesso para permitir que o conteúdo no seu aplicativo brilhe. Compartilhamento é um desses contratos cuja finalidade é permitir que os usuários façam mais com seu conteúdo, compartilhando-o de um aplicativo para outro.

Uma experiência de compartilhamento completa no Windows tem dois componentes. Primeiro, existe um aplicativo de origem que torna o conteúdo disponível em diferentes formatos. Depois, existe um aplicativo de destino que se registra para reconhecer determinados formatos e atua como o destino para o conteúdo compartilhado. O Windows cria um canal de comunicação entre o aplicativo de origem e o de destino pelo contrato de Compartilhamento. Quando o seu aplicativo for uma fonte de compartilhamento, os usuários podem contar com o botão Compartilhar para localizar a lista de aplicativos, amigos e outros locais capazes de consumir o conteúdo do seu aplicativo no painel Compartilhar. Veja um exemplo.

Painel Compartilhar mostrando uma lista de aplicativos de destino que podem receber a página da Web compartilhada do aplicativo de origem, no caso, o Internet Explorer.

Painel Compartilhar mostrando uma lista de aplicativos que podem receber a página da Web
compartilhada do aplicativo de origem, no caso, o Internet Explorer.

O compartilhamento entre aplicativos pelo contrato de Compartilhamento é uma oportunidade incrível de várias maneiras.

Primeiro, ele tem a vantagem de ser um ecossistema diverso de aplicativos. Examinando as categorias de aplicativos na Loja, já dá para começar a identificar como a proposta de valor de um aplicativo de bares e restaurantes é diferente de um de produtividade ou social, e assim por diante. Mesmo nessas categorias, os aplicativos são diferentes de tantas maneiras que nem dá para mencionar. Seu aplicativo pode usar o que esses outros têm de melhor compartilhando seu conteúdo e tornando a experiência completa do usuário ainda mais rica.

Segundo, um ponto de entrada previsível para compartilhamento no sistema operacional significa que você não tem mais que usar a principal área da tela na interface do usuário do seu aplicativo para compartilhar widgets e, para os usuários, fica ainda mais fácil porque eles não têm que se preocupar em encontrar esses pontos de entrada em cada aplicativo. Da perspectiva do usuário, poder compartilhar do seu aplicativo sem mudar de contexto para outro aplicativo é ótimo, já que assim ele pode ser mais objetivo. Isso também é importante porque mantém o usuário envolvido na experiência do seu aplicativo.

Finalmente, participando do contrato de Compartilhamento, seu aplicativo permanece relevante e conectado a um ecossistema crescente de aplicativos. Além disso, você não precisa conhecer ou integrar-se a cada nova API de terceiros ou individual porque o contrato de Compartilhamento cria uma linguagem comum para trocar dados entre aplicativos de origem e de destino.

Personalizando a experiência de Compartilhamento de fonte

Com o sistema de Compartilhamento no Windows 8, seu aplicativo pode criar uma experiência de compartilhamento sofisticada personalizando o que será compartilhado no aplicativo, com base no modo de exibição do aplicativo com o qual o usuário está interagindo. Isso ajuda a atender às expectativas do usuário em relação ao que é compartilhado em um determinado modo de exibição do aplicativo. Por exemplo, no Food with Friends, o conteúdo da página de aterrissagem é diferente do conteúdo da seção My Wishlist (Minha Lista de Desejos) ou do modo de exibição Restaurant Details (Detalhes do Restaurante). Por isso, o usuário espera que o aplicativo e o sistema sejam inteligentes ao enviar e receber um conteúdo relevante no modo de exibição atual. Personalizar não significa ter de pensar sobre cada aplicativo viável para receber conteúdo, mas fornecer várias apresentações do conteúdo compartilhado no seu aplicativo que se ajustarão a diversos cenários de compartilhamento entre aplicativos.

Nas próximas seções, veremos como configurar o seu aplicativo para ser um Compartilhamento de fonte e criar uma experiência e um pacote de dados personalizados para diferentes modos de exibição no aplicativo.

  1. Compartilhando os planos desta noite na página de aterrissagem
  2. Compartilhando estados de erro úteis nos modos de exibição que não possuem conteúdo a ser compartilhado
  3. Compartilhando seleções de usuários de My Wishlist.

Vamos examinar.

Implementando um Compartilhamento de fonte

No Windows 8, você pode usar as APIs de compartilhamento para permitir que seu aplicativo compartilhe conteúdo com outros aplicativos. Primeiro, você precisa decidir quais formatos e tipos de dados implementará. Com Compartilhar, você pode empacotar os dados nos formatos de dados padrão, como texto, URI, HTML, bitmap e arquivos, e em formatos de dados personalizados em http://schema.org. Nas próximas seções, veremos por que e como o Food with Friends deve dar suporte a esses formatos.

Depois de decidir quais formatos de dados fornecerá, use as classes do Windows.ApplicationModel.DataTransfer namespace para empacotar os dados. O DataPackage é a unidade de troca de dados fundamental pelo contrato de Compartilhamento.

Quando o usuário exibe botões e seleciona Compartilhar, seu aplicativo recebe o evento datarequested. O seu aplicativo pode escutar o evento datarequested e criar um pacote de dados que possa ser enviado ao aplicativo de destino. Veja este guia de início rápido para obter detalhes sobre como configurar seu aplicativo para escutar e responder a esse evento.

Compartilhando os planos desta noite

Veja a exibição que apresenta o que esse aplicativo pode fazer de melhor, a página de aterrissagem na qual você está formulando os planos desta noite.

Página de aterrissagem mostrando os planos em Tonight no Food with Friends

Página de aterrissagem mostrando os planos em Tonight no Food with Friends

O Food with Friends adaptou o design da página de aterrissagem para destacar o conteúdo e minimizar as distrações. Como discutimos em Criando aplicativos estilo Metro que se destaquem da concorrência, esse conteúdo deixa claro o que o aplicativo faz de melhor. Da mesma forma que o design da página ajuda o usuário a entender a finalidade do aplicativo, ele deixa óbvio que os planos desta noite são o conteúdo compartilhável dessa página. Assim, o usuário pode naturalmente esperar que o conteúdo da seção Tonight seja compartilhado pelo aplicativo de origem e recebido pelo aplicativo de destino via Compartilhar. É importante que um desenvolvedor de aplicativos como você entenda a expectativa desse usuário porque isso o ajudará a criar um pacote de dados que atenda à sua expectativa e intenção de compartilhar. Agora, usamos o design da página de aterrissagem para nos orientar na criação de uma experiência de compartilhamento intuitiva que inclui o conteúdo da seção Tonight.

Cenários

Vamos fazer uma lista de maneiras interessantes de compartilhar que o usuário pode querer usar para compartilhar o conteúdo da seção Tonight de Food with Friends com outros aplicativos.

  1. Compartilhar os planos desta noite com um aplicativo de rede social. Os aplicativos de rede social são ótimos para ajudar o usuário a manter o contato com um grande grupo de amigos ou seguidores. Com o compartilhamento entre aplicativos, o usuário pode compartilhar o conteúdo do Food with Friends com sua rede e personalizá-lo com uma atualização de status, tweetar ou enviar a mensagem: "Southwestern Seafood, um ótimo jantar esta noite! Recomendo!".
  2. Compartilhar os planos desta noite com um aplicativo de calendário. Os aplicativos Calendário são bons para ajudar o usuário a organizar seu tempo e lembrá-lo dos compromissos futuros. O usuário pode compartilhar seus planos para esta noite do Food with Friends no aplicativo de calendário e receber um lembrete conveniente desse aplicativo para chegar ao restaurante na hora certa. Assim, juntos, o aplicativo de origem e o de destino formam um cenário de usuário final completo.

Como você pode imaginar, essa lista não é abrangente. É apenas o começo de uma longa série de cenários de compartilhamento entre aplicativos. Uma das vantagens de usar a plataforma Compartilhar no Windows é que você não precisa antecipar cada um dos cenários de compartilhamento entre aplicativos. Mas a lista é importante porque ajuda os desenvolvedores do aplicativo de origem, como você, a identificar e priorizar os formatos de dados que serão compartilhados no seu aplicativo para satisfazer os cenários de usuário de sua preferência. Agora, vejamos como você pode criar um pacote de dados usando os formatos padrão e personalizado.

Criando um pacote de dados

A quais tipos de dados você deve dar suporte?

Você deve decidir os formatos de dados que fornecerá no pacote de dados. Para uma operação de compartilhamento bem-sucedida, o aplicativo de destino deve reconhecer o formato de dados que possui suporte no seu aplicativo.

Os tipos de dados padrão são mais usados e reconhecidos em uma ampla gama de aplicativos de destino. Por exemplo, muitos aplicativos oferecem informações através de texto, e os usuários podem compartilhá-lo com outros aplicativos. Destinos como aplicativos de anotações ou de email podem receber texto compartilhado do seu aplicativo para completar os cenários de usuário final. Além disso, você também pode especificar formatos de dados para cenários de usuário final específicos. Escolhendo formatos de dados descreve esses formatos com mais detalhes. Discutiremos como criar um pacote de dados usando os formatos de dados padrão e personalizado para o Food with Friends.

Recomendamos que você forneça o conteúdo compartilhado no maior número de formatos de dados possível para maximizar o conjunto de aplicativos de destino que reconhecerá o conteúdo do seu aplicativo. Para dar suporte a vários tipos de dados, é importante que cada um apresente as mesmas informações. Essa paridade transmite ao usuário confiança e previsibilidade no conteúdo que está sendo compartilhado pelo aplicativo e permite que aplicativos de destino usem esse conteúdo de formas específicas e criativas. Mas não forneça tipos de dados que não reflitam precisamente a intenção de compartilhar do usuário.

Por exemplo, ao compartilhar a partir da página de aterrissagem do Food with Friends, criamos um pacote de dados com texto, URI, HTML, arquivos e formatos personalizados. Não fornecemos um bitmap porque as imagens na seção Tonight mostrando comida, o mapa, miniaturas de contatos ou outras imagens não ajudam a apresentar os planos desta noite.

Formatos de dados padrão

Os formatos de dados padrão que os aplicativos de origem podem compartilhar são:

  • Texto
  • URI
  • Bitmap
  • HTML
  • Arquivo

Empacotando os dados para os planos desta noite

Como mencionamos antes, o design da página de aterrissagem enfatiza os planos desta noite em Tonight apresentando-os primeiro no controle ListView e minimizando outras distrações. Ele apresenta diferentes aspectos do plano: data e hora, local, pessoas etc. Quando o usuário compartilha a partir dessa exibição, ele espera usar essas informações em outro aplicativo, seja de rede social, calendários, lembretes ou email.

Página de aterrissagem para Food with Friends apresentando primeiro a seção Tonight no controle ListView

Página de aterrissagem para Food with Friends apresentando primeiro a seção Tonight no controle ListView

Este guia em Compartilhando conteúdo fornece uma visão geral de como definir os dados no pacote para esses tipos de dados padrão. Posteriormente, examinaremos o conteúdo da seção Tonight para explicar como apresentar essas informações de forma significativa no pacote de dados. As informações contidas em cada tipo de dado apresentam todos os planos desta noite. Com isso, seja qual for o tipo de dado que o aplicativo de destino decida aceitar, não se perde a fidelidade das informações.

Texto

Compartilhar texto é ideal quando sua intenção é disponibilizar o conteúdo do aplicativo para um grande número de aplicativos, porque é um formato normalmente reconhecido. Neste cenário, o texto no pacote de dados deve fornecer todas as informações importantes para os planos, isto é, onde, quando e com quem, e o URI, como mostramos aqui:

Planos desta noite – Jantar

Onde: Southwestern Seafood

Quando: 19:00

Quem vai: você, Diane Prescott, Andy Rodgers e Ahmad Abu-Dayah

URI para os planos desta noite no site Food with Friends.

 

URI

Recomendamos que você forneça um link da Web para o conteúdo que será compartilhado pelo aplicativo. Assim você garante que os usuários que exibirem o conteúdo em um PC sem Windows 8 ou sem o seu aplicativo também possam exibir o conteúdo compartilhado. Caso não haja nenhum URI disponível, você pode fornecer um link profundo para o conteúdo no seu aplicativo. Para Food with Friends, os aplicativos compartilham um URI para os planos desta noite no site Food with Friends.

Bitmap

Não se aplica, porque uma imagem aqui não ajuda a transmitir os planos.

HTML

O HTML contém marcação da versão formatada das informações passadas em outros formatos de dados. Ele apresenta as informações importantes sobre os planos desta noite, isto é, onde, quando, com quem.

Arquivo

O compartilhamento de arquivos que apresentam o conteúdo a ser compartilhado nos formatos relevantes permite que os aplicativos de destino trabalhem com esses tipos de arquivos. Por exemplo, o Food with Friends pode usar os planos desta noite em .ics, .vcs ou outros formatos de arquivo padrão que apresentem um evento. Assim, os aplicativos de calendário ou lembrete que reconhecem formatos populares podem criar eventos.

Agora, quando seleciona Compartilhar, o usuário vê uma lista filtrada de aplicativos de destino que reconhecem os dados compartilhados. O usuário pode selecionar o aplicativo Pessoas para compartilhar o conteúdo dos planos desta noite com a rede social conectada.

Compartilhamento de Food with Friends com o aplicativo Pessoas

Compartilhamento de Food with Friends com o aplicativo Pessoas

Formatos de dados personalizados

Alguns aplicativos de destino se registram para aceitar formatos de dados específicos para dar suporte aos cenários destinados. Por exemplo, um aplicativo calendário pode optar por dar suporte a um formato de dados Evento ou um aplicativo Mapas pode optar por dar suporte a um formato de dados Local . Em um aplicativo de origem, você pode dar suporte a formatos de compartilhamento adicionais para permitir que os usuários completem os cenários destinados.

Formatos de dados personalizados reconhecidos

Ao decidir a quais formatos de dados personalizados você dará suporte, é natural perguntar se há formatos reconhecidos que são entendidos pelos aplicativos. Consulte os esquemas existentes em http://schema.org/ para verificar se os tipos de dados que seus aplicativos enviam e recebem são universalmente reconhecidos. O site fornece uma coleção de esquemas, isto é, tipos de dados estruturados que são normalmente usados em diversos setores. Como exemplo, alguns formatos de dados comuns com suporte nesse padrão são Pessoas, Local, Restaurantes, Evento, Produto e muito mais. Como os aplicativos de origem e de destino têm um conjunto comum de formatos dados que reconhecem e trocam, as possibilidades de compartilhamento entre aplicativos são infinitas.

Empacotando os dados para os planos desta noite

Agora que você está familiarizado com a criação de um pacote de dados com os formatos de dados padrão, vejamos o que faríamos para adicionar formatos de dados personalizados ao seu pacote de dados para os cenários do usuário destinados que requerem esses formatos sofisticados.

Na seção Cenários anterior, identificamos uma categoria de aplicativos, a categoria calendário e planejamento, que queremos conectar ao Food with Friends. Para isso, podemos consultar os esquemas existentes em schema.org para encontrar um formato de dados que apresente as informações que queremos compartilhar e que seriam reconhecidas pelo aplicativo de destino. Considerando que estamos tentando compartilhar o conteúdo da seção Tonight na página de aterrissagem, podemos dar suporte ao compartilhamento do formato Evento no pacote de dados. Com isso, os usuários podem compartilhar seus planos com aplicativos de calendário e planejamento que reconhecem esse formato. As imagens mostram a experiência completa para o usuário com os dois aplicativos: quando passa o dedo na borda e toca em Compartilhar, o usuário vê uma lista filtrada de aplicativos nos quais pode compartilhar os planos desta noite. A lista é preenchida com qualquer aplicativo registrado para dar suporte ao formato Evento no contrato de Compartilhamento de Destino. Você pode tocar no aplicativo calendário, visualizar o compromisso que está prestes a compartilhar e enviar os planos desta noite para o seu calendário na exibição de destino do aplicativo. É um processo rápido e eficiente e permite que o usuário volte rapidamente a usar o Food with Friends.

Página de aterrissagem com a opção Compartilhar mostrando um aplicativo de calendário como um destino de compartilhamento

Página de aterrissagem com o botão Compartilhar mostrando um aplicativo de calendário como um destino de compartilhamento

Exibição de um aplicativo de calendário mostrando os dados de Compartilhar no Food with Friends na forma de um evento

Exibição de um aplicativo de calendário mostrando os dados de Compartilhar no Food with Friends na forma de um evento

Neste momento, não examinaremos o design ou os detalhes técnicos da exibição do aplicativo de destino no aplicativo calendário. Consulte Recebendo conteúdo compartilhado para saber mais sobre como implementar um destino de compartilhamento.

Propriedades do pacote de dados

A classe DataPackage dá suporte a uma coleção de propriedades do tipo DataPackagePropertySet para descrever os dados contidos no pacote. Os aplicativos de destino podem usar essas propriedades para saber mais sobre o conteúdo do pacote de dados. Exemplos de propriedades comuns incluem imagens em miniatura, título e tipos de arquivo. Recomendamos que você defina essas propriedades no pacote de dados.

Veja algumas propriedades no pacote de dados ao compartilhar os planos desta noite.

  • Título – "Planos desta noite"
  • Descrição – "Jantar no Southwestern Seafood"
  • Miniatura – uma imagem menor representando um evento ou plano.

Consulte os detalhes da classe DataPackagePropertySet para saber como adicionar propriedades ao seu pacote de dados.

Compartilhando estados de erro

No exemplo que acabamos de examinar, demonstramos como criar e implementar uma experiência de compartilhamento de fonte para a seção Tonight da página de aterrissagem.

Isso nos leva às seguintes questões. E se os planos ainda não existirem? O que você compartilhará? A próxima imagem mostra a página de aterrissagem para o Food with Friends, quando o planejamento do evento não tinha iniciado.

Exibição da página de aterrissagem sem nenhum evento planejado Exibição da página de aterrissagem sem nenhum evento planejado

Como você pode ver, a exibição do hub mostra algumas seções, isto é, um modelo para fazer os planos desta noite, Friends’ Wishlists (Listas de Desejos dos Amigos), My Wishlist (Minha Lista de Desejos) e, se você rolar mais, a exibição All Restaurants (Todos os Restaurantes). Mas enquanto nenhum evento é criado para esta noite, não há nada nesta exibição a se compartilhar.

Como então você responde ao evento datarequested sem ter um pacote de dados significativo para entregar ao gerenciador de compartilhamento?

Nesse caso, em que compartilhar não pode ser concluído de forma significativa na exibição atual, o aplicativo deve mostrar uma mensagem de erro que diz ao usuário o que ele precisa fazer para permitir o compartilhamento naquela exibição. Você pode fazer isso chamando o método FailWithDisplayText na classe DataRequest . Esse método cancela a operação de compartilhar e fornece uma mensagem de texto para o gerenciador de compartilhamento. O aplicativo do painel Compartilhar pode então exibir esse texto ao usuário para explicar por que houve falha na operação de compartilhar. Para saber mais sobre como implementar essa mensagem de erro personalizada, consulte DataRequest.FailWithDisplayText.

Na exibição acima, quando o usuário tenta compartilhar o conteúdo pelo botão Compartilhar, o aplicativo retorna esta mensagem de erro:

"You have no plans for tonight. Create a plan to share from this view" (Você tem planos para esta noite. Crie uma plano para compartilhar esta exibição).

Isso permite que o usuário execute as etapas necessárias para fazer os planos desta noite e habilitar o compartilhamento.

Página de aterrissagem mostrando o botão Compartilhar com o erro fornecido pelo aplicativo

Página de aterrissagem mostrando o botão Compartilhar com o erro fornecido pelo aplicativo

Da mesma forma, em outras exibições em que não há suporte para o compartilhamento, recomendamos que você personalize a mensagem de erro que o aplicativo retorna para a exibição atual. Tomando outro exemplo, se o usuário ainda não tiver feito logon, o aplicativo poderá retornar uma mensagem de erro pedindo especificamente para o usuário fazer logon antes de compartilhar o conteúdo.

Por fim, verifique se o texto do erro fornecido ao usuário é útil para permitir que ele compartilhe algo no aplicativo.

Compartilhando seleções do usuário

Quando o usuário possui itens específicos selecionados na exibição do aplicativo, você pode refletir a intenção dele na experiência de compartilhar dentro do seu aplicativo, criando e compartilhando pacotes de dados que apresentem o que os itens selecionados têm de melhor.

Nesta exibição do Food with Friends, o usuário selecionou um conjunto de restaurantes onde gostaria de jantar. Ele pode optar por selecionar um restaurante específico e compartilhá-lo com vários outros aplicativos baseados em restaurante.

Exibição de My wishlist do Food with Friends com um restaurante selecionado

Exibição de My wishlist do Food with Friends com um restaurante selecionado

Quando o usuário seleciona um restaurante nessa exibição, podemos dar suporte ao compartilhamento do formato Restaurante no pacote de dados, conforme descrito anteriormente. Qualquer aplicativo de destino que reconhecer o formato agora estará disponível como destino de compartilhamento. Por exemplo, na próxima imagem, você vê a seleção do restaurante sendo compartilhada com um aplicativo de anotações que salva o restaurante na agenda de restaurantes favoritos do usuário.

Aplicativo de anotações exibindo os dados do restaurante na exibição Compartilhar

Aplicativo de anotações exibindo os dados do restaurante na exibição Compartilhar

É recomendável que, quando o usuário voltar ao aplicativo depois de interagir com o aplicativo de destino, o aplicativo de origem preserve a seleção que o usuário fez. Isso poderá ajudar os usuários se eles quiserem modificar a seleção ou compartilhar o mesmo conteúdo com vários destinos.

Resumo

Compartilhar o conteúdo do seu aplicativo pode torná-lo essencial para uma experiência social e de conexão dos usuários no Windows 8. Seu aplicativo pode oferecer um conteúdo sofisticado e compartilhável ao usuário e contar com o botão Compartilhar para minimizar a sobrecarga de se integrar a cada novo aplicativo de terceiros capaz de receber o conteúdo. Dando suporte ao compartilhamento, seu aplicativo ganha uma vantagem competitiva porque amplia o escopo de cenários de usuário final completos possíveis dentro do próprio aplicativo.

Espero que esta postagem o ajude a entender a motivação e a lógica por trás da criação de uma ótima experiência de compartilhar em seu aplicativo. Também espero que, junto com a visão sobre as grandes qualidades do seu aplicativo, esse entendimento o inspire a usar esse recurso da plataforma para atingir as metas do seu aplicativo de forma criativa e exclusiva. Para saber mais sobre compartilhamento, consulte uma visão geral de Copiando e trocando dados e Share content source sample (Exemplo de fonte de conteúdo de compartilhamento) para ajudá-lo a começar.

-- Ishita Kapur, gerente de programas, Windows

  • Loading...
Leave a Comment
  • Please add 5 and 3 and type the answer here:
  • Post