Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplicativos com identidade de pacote podem armazenar seus contatos em Windows. Esses contatos podem aparecer como sugestões no Widget de Pessoas, na Pesquisa do Windows e no painel de compartilhamento. Este artigo mostra como criar uma conta de dados de usuário, armazenar contatos e configurar o acesso para experiências do Windows.
Criar um UserDataAccount para o contrato People
Comece criando uma conta de dados do usuário. Aplicativos de terceiros são necessários para criar um UserDataAccount com UserDisplayName como "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 isso, os aplicativos de terceiros devem criar a nova lista de contatos para um UserDataAccount 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 o enum ContactListOtherAppReadAccess para acessar 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:
FirstNameRemoteIdDisplayPicture
Os seguintes campos são opcionais:
LastNamePhonesEmails
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);
}
Note
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.
Privacidade e consentimento
Forneça apenas contatos explícitos
Seu aplicativo deve contribuir apenas com os contatos que o usuário adicionou ou autorizou explicitamente. Nunca:
- Carregar o catálogo de endereços inteiro
- Sincronizar contatos automaticamente sem o consentimento do usuário
- Compartilhar contatos de diretórios corporativos sem permissão explícita
Solicite permissão antes de armazenar contatos no Windows People:
private async Task<bool> RequestContactStoreAccessAsync()
{
// Requesting a writable ContactStore prompts the user for consent.
// Your app must declare the contacts capability in its manifest.
ContactStore store = await ContactManager.RequestStoreAsync(
ContactStoreAccessType.AppContactsReadWrite);
return store != null;
}
Respeitar as configurações de privacidade do usuário
Permita que os usuários:
- Escolha quais contatos compartilhar com Windows
- Recusar a integração das Pessoas do Windows
- Excluir seus contatos de Windows a qualquer momento
// Provide a setting to disable sync
if (this.ShouldSyncContactsWithWindows)
{
await SyncContactsAsync();
}
else
{
// Clear contacts if the user disables sync
await ClearWindowsContactsAsync();
}
Conteúdo relacionado
Windows developer