API Contacts inter-appareils

Windows est une plateforme idéale pour les applications tierces afin d’intégrer leurs contacts principaux. Cette intégration permet aux utilisateurs d’interagir avec les personnages pour différentes expériences de personnes. Windows fournit désormais des applications WinUI 3, UWP et d’autres applications tierces avec une identité de package avec des API pour stocker tous leurs contacts.

Important

Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifié avant sa commercialisation. Microsoft n’offre aucune garantie, expresse ou implicite, concernant les informations fournies ici.

Remarque

Les applications peuvent essayer cette fonctionnalité dès qu’elle est publiée dans le programme Windows Insider (canal bêta) dans les paramètres de Windows Update (voir Prise en main du programme Windows Insider pour plus d’informations).

Une fois que vos applications stockent leurs contacts dans Windows, les utilisateurs pourront voir ces suggestions de contact dans le panneau Partager dans Windows pour partager en toute transparence avec leurs principaux contacts. Découvrez comment partager des fichiers dans Explorateur de fichiers sur Windows pour plus d’informations sur le panneau Partager.

Création d’un contrat UserDataAccount for People

Commencez par créer un compte de données utilisateur. Les applications tierces sont requises pour créer un UserDataAccount avec UserDisplayName la valeur "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 liste de contacts d’une UserDataAccount application windows ContactStore. 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);
}

Remarque

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

Stockage des rangs pour les contacts

Vous pouvez créer une liste d’annotations pour stocker les UserDataAccount rangs de vos contacts. Les applications peuvent stocker les rangs de leurs principaux contacts en ajoutant des annotations aux contacts. Ces annotations sont stockées dans le cadre d’une liste d’annotations dans le magasin de contacts.

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

Vous pouvez stocker les rangs de vos principaux contacts à l’aide des annotations sur les contacts. Les rangs sont stockés dans le cadre de ProviderProperties sur une annotation de contact. En plus du classement, les applications doivent définir SupportedOperations sur une annotation Sharede contact comme .

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);
}

Mise à jour des rangs de contact

Il est à la discrétion des applications quand mettre à jour les rangs des contacts stockés dans Windows. Windows recommande que les listes classées soient mises à jour régulièrement pour offrir la meilleure expérience utilisateur. Chaque fois que vous devez mettre à jour une liste classée, vous devez suivre plusieurs étapes.

  1. Supprimez ContactAnnotationList.

    Une fois que l’application a une liste mise à jour des principaux contacts, la liste d’annotations peut être supprimée et une nouvelle liste d’annotations avec des annotations mises à jour pour leurs principaux contacts peut être créée.

    await this.contactAnnotationList.DeleteAsync();
    
  2. Créez un ContactAnnotationList. Suivez les étapes décrites dans la section Stockage des rangs des contacts pour créer une liste d’annotations et stocker les rangs de vos principaux contacts.

Voir aussi