Ajouter des contacts à Windows

Les applications avec identité de package peuvent stocker leurs contacts dans Windows. Ces contacts peuvent apparaître sous forme de suggestions dans le widget Contacts, Windows Search et la feuille de partage. Cet article explique comment créer un compte de données d’utilisateur, stocker des contacts et configurer l’accès pour les expériences Windows.

Créer un UserDataAccount pour le contrat People

Commencez par créer un compte de données utilisateur. Les applications tierces sont requises pour créer un UserDataAccount en utilisant UserDisplayName comme "com.microsoft.peoplecontract".

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

Ensuite, ajoutez "com.microsoft.windows.system" à la liste des ExplictReadAccessPackageFamilyNames pour le compte. Cela fournira un accès restreint des contacts tiers aux expériences Windows.

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

Stockage des contacts

La première étape du stockage des contacts consiste à créer une liste de contacts. Pour ce faire, les applications tierces doivent créer la nouvelle liste de contacts pour le UserDataAccount dans le ContactStore de Windows. Les applications peuvent choisir de conserver le type d’accès par défaut OtherAppReadAccess pour la liste de contacts, tout en le définissant pour None empêcher les autres applications d’avoir accès à ces contacts. Consultez l’énumération ContactListOtherAppReadAccess pour obtenir la liste complète des types d’accès disponibles.

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

Lors du stockage d’un contact, les applications tierces doivent inclure toutes les informations pertinentes requises pour que les expériences Windows alimentent un contact.

Les champs suivants sont requis lors du stockage d’un contact :

  • FirstName
  • RemoteId
  • DisplayPicture

Les champs suivants sont facultatifs :

  • LastName
  • Phones
  • Emails

Cet extrait de code montre comment stocker un contact :

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

Le DisplayName pour le Contact est construit en utilisant FirstName et LastName. Si le nom n’est pas fourni, DisplayName est identique à la chaîne fournie pour le prénom.

Ajoutez uniquement des contacts explicites

Votre application doit contribuer uniquement aux contacts que l’utilisateur a explicitement ajoutés ou autorisés. Jamais :

  • Charger l’intégralité du carnet d’adresses
  • Synchroniser automatiquement les contacts sans consentement de l’utilisateur
  • Partager des contacts à partir d’annuaires d’entreprise sans autorisation explicite

Demandez l’autorisation avant de stocker des contacts dans 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;
}

Respecter les paramètres de confidentialité des utilisateurs

Permettre aux utilisateurs :

  • Choisir les contacts à partager avec Windows
  • Désactiver l’intégration des contacts Windows
  • Supprimer leurs contacts de Windows à tout moment
// Provide a setting to disable sync
if (this.ShouldSyncContactsWithWindows)
{
    await SyncContactsAsync();
}
else
{
    // Clear contacts if the user disables sync
    await ClearWindowsContactsAsync();
}