Compartilhar via


API de Pessoas entre Dispositivos

O Windows é uma plataforma ideal para aplicativos de terceiros integrarem seus principais contatos pessoais. Essa integração permite que os usuários interajam com as personas para várias experiências de pessoas. O Windows agora fornece WinUI 3, UWP e outros aplicativos de terceiros com identidade de pacote com APIs para armazenar todos os seus contatos.

Importante

Algumas informações referem-se a um produto de pré-lançamento que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não oferece nenhuma garantia, explícita ou implícita, quanto às informações fornecidas aqui.

Observação

Os aplicativos podem experimentar esse recurso assim que ele for lançado no Programa Windows Insider (Canal Beta) nas configurações do Windows Update (consulte Introdução ao Programa Windows Insider para obter mais informações).

Depois que seus aplicativos armazenarem seus contatos no Windows, os usuários poderão ver essas sugestões de contato no painel Compartilhar no Windows para compartilhar diretamente com seus principais contatos. Consulte Como compartilhar arquivos no Explorador de Arquivos no Windows para obter mais informações sobre o painel Compartilhar .

Criando um contrato UserDataAccount para pessoas

Comece criando uma conta de dados do usuário. Aplicativos de terceiros são necessários para criar um UserDataAccount com UserDisplayName ."com.microsoft.peoplecontract"

UserDataAccountStore udas =
    await UserDataAccountManager.RequestStoreAsync(UserDataAccountStoreAccessType.AppAccountsReadWrite);
UserDataAccount uda = await udas.CreateAccountAsync("com.microsoft.peoplecontract");

Em seguida, adicione "com.microsoft.windows.system" à lista de ExplictReadAccessPackageFamilyNames para a conta. Isso fornecerá acesso restrito de contatos de terceiros às experiências do Windows.

uda.ExplictReadAccessPackageFamilyNames.Add("com.microsoft.windows.system");
await uda.SaveAsync();

Armazenando contatos

O primeiro passo para armazenar contatos é criar uma lista de contatos. Para fazer isso, os aplicativos de terceiros devem criar a nova lista de UserDataAccount contatos no Windows ContactStore. Os aplicativos podem optar por manter o tipo de acesso padrão OtherAppReadAccess para a lista de contatos, enquanto configurá-lo como None impedirá que outros aplicativos tenham acesso a esses contatos. Consulte a enumeração ContactListOtherAppReadAccess para obter a lista completa de tipos de acesso disponíveis.

ContactStore store = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AppContactsReadWrite);
this.contactList = await store.CreateContactListAsync(contactListsName, uda.Id);
contactList.OtherAppReadAccess = ContactListOtherAppReadAccess.None;
await contactList.SaveAsync();

Ao armazenar um contato, os aplicativos de terceiros devem incluir todas as informações relevantes necessárias para que as experiências do Windows alimentem um contato.

Os seguintes campos são obrigatórios ao armazenar um contato:

  • FirstName
  • RemoteId
  • DisplayPicture

Os seguintes campos são opcionais:

  • LastName
  • Phones
  • Emails

Este trecho de código demonstra como armazenar um contato:

foreach (var appContact in AppContacts)
{
  var cont = new Contact
  {
    FirstName = appContact.FirstName,
    LastName = appContact.LastName,
    RemoteId = appContact.Id,
    SourceDisplayPicture = RandomAccessStreamReference.CreateFromUri(new Uri(appContact.ProfilePicPath)),
    Phones = { new ContactPhone { Number = appContact.Phone } }
  };

  await this.contactList.SaveContactAsync(cont);
}

Observação

O DisplayName para o Contato é construído usando FirstName e LastName. Se o sobrenome não for fornecido, DisplayName será idêntico à cadeia de caracteres fornecida para o nome.

Armazenando classificações para contatos

Você pode criar uma lista de anotações para UserDataAccount armazenar classificações para seus contatos. Os aplicativos podem armazenar classificações para seus principais contatos adicionando anotações aos contatos. Essas anotações são armazenadas como parte de uma lista de anotações no repositório de contatos.

ContactAnnotationStore annotationStore = await
    ContactManager.RequestAnnotationStoreAsync(ContactAnnotationStoreAccessType.AppAnnotationsReadWrite);
this.contactAnnotationList = await annotationStore.CreateAnnotationListAsync(uda.Id);

Você pode armazenar classificações para seus principais contatos usando as anotações nos contatos. As classificações são armazenadas como parte de ProviderProperties em uma anotação de contato. Junto com a classificação, os aplicativos devem definir o SupportedOperations em uma anotação de contato como Share.

foreach (var appContact in topAppContacts)
{
  Contact contact = await list.GetContactFromRemoteIdAsync(topAppContact.RemoteID);
  var annotation = new ContactAnnotation
  {
    ContactId = contact.Id,
    SupportedOperations = ContactAnnotationOperations.Share
  };
  annotation.ProviderProperties.Add("Rank", rank);
  await annotationsLst.TrySaveAnnotationAsync(annotation);
}

Atualizando classificações de contato

Fica a critério dos aplicativos quando atualizar as classificações dos contatos armazenados no Windows. O Windows recomenda que as listas classificadas sejam atualizadas regularmente para fornecer a melhor experiência do usuário. Sempre que precisar atualizar uma lista classificada, você precisará seguir várias etapas.

  1. Exclua o ContactAnnotationList.

    Depois que o aplicativo tiver uma lista atualizada dos principais contatos, a lista de anotações poderá ser excluída e uma nova lista de anotações com anotações atualizadas para seus principais contatos poderá ser criada.

    await this.contactAnnotationList.DeleteAsync();
    
  2. Crie um ContactAnnotationList. Siga as etapas na seção Armazenando classificações para contatos para criar uma nova lista de anotações e armazenar classificações para seus principais contatos.

Confira também