Delen via


Personen-API voor meerdere apparaten

Windows is een ideaal platform voor apps van derden om hun belangrijkste contactpersonen te integreren. Met deze integratie kunnen gebruikers communiceren met de persona's voor verschillende gebruikerservaringen. Windows biedt nu WinUI, UWP en andere apps van derden met pakketidentiteit met API's om al hun contactpersonen op te slaan.

Zodra uw apps hun contactpersonen opslaan in Windows, kunnen gebruikers deze suggesties voor contactpersonen zien in het deelvenster Delen in Windows om naadloos te delen met hun belangrijkste contactpersonen. Zie Bestanden delen in Verkenner op Windows voor meer informatie over het Deel paneel.

Een UserDataAccount voor het People Contract maken

Begin met het maken van een gebruikersgegevensaccount. Apps van derden zijn vereist voor het maken van een UserDataAccount met UserDisplayName als "com.microsoft.peoplecontract".

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

Voeg "com.microsoft.windows.system" vervolgens toe aan de lijst met ExplicitReadAccessPackageFamilyNames voor het account. Dit biedt beperkte toegang tot contactpersonen van derden voor Windows-ervaringen.

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

Contactpersonen opslaan

De eerste stap bij het opslaan van contactpersonen is het maken van een lijst met contactpersonen. Hiervoor moeten apps van derden de nieuwe lijst met contactpersonen maken voor een UserDataAccount in de Windows ContactStore. Apps kunnen ervoor kiezen om het standaardtoegangstype OtherAppReadAccess voor de lijst met contactpersonen te behouden, terwijl het None zo wordt ingesteld dat andere apps geen toegang hebben tot deze contactpersonen. Zie de opsomming ContactListOtherAppReadAccess voor de volledige lijst met beschikbare toegangstypen.

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

Tijdens het opslaan van een contactpersoon moeten apps van derden alle relevante informatie bevatten die vereist is voor Windows-ervaringen om een contactpersoon te activeren.

De volgende velden zijn vereist bij het opslaan van een contactpersoon:

  • FirstName
  • RemoteId
  • DisplayPicture

De volgende velden zijn optioneel:

  • LastName
  • Phones
  • Emails

Dit codefragment laat zien hoe u een contactpersoon opslaat:

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

Opmerking

Het DisplayName voor de contactpersoon wordt samengesteld met behulp van FirstName en LastName. Als de achternaam niet is opgegeven, zal DisplayName identiek zijn aan de voornaam.

Rangschikkingen opslaan voor contactpersonen

U kunt een aantekeningslijst maken voor het UserDataAccount om rangschikkingen voor uw contactpersonen te beheren. Apps kunnen rangschikkingen opslaan voor hun belangrijkste contactpersonen door aantekeningen toe te voegen aan de contactpersonen. Deze aantekeningen worden opgeslagen als onderdeel van een annotatielijst in de contactenopslag.

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

U kunt rangschikkingen opslaan voor uw belangrijkste contactpersonen door de aantekeningen op contactpersonen te gebruiken. Rangschikkingen worden opgeslagen als onderdeel van ProviderProperties op een contactpersoonaantekening. Naast rang moeten apps de SupportedOperations instellen op een aantekening van een contactpersoon als 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);
}

Contactrangschikkingen bijwerken

Het is naar eigen goeddunken van apps wanneer de rangschikkingen van de contactpersonen die zijn opgeslagen in Windows moeten worden bijgewerkt. Windows raadt aan dat gerangschikte lijsten regelmatig worden bijgewerkt om de beste gebruikerservaring te bieden. Wanneer u een gerangschikte lijst moet bijwerken, moet u verschillende stappen uitvoeren.

  1. Verwijder de ContactAnnotationList.

    Zodra de app een bijgewerkte lijst met belangrijkste contactpersonen heeft, kan de lijst met aantekeningen worden verwijderd en kan een nieuwe lijst met aantekeningen met bijgewerkte aantekeningen voor de belangrijkste contactpersonen worden gemaakt.

    await this.contactAnnotationList.DeleteAsync();
    
  2. Maak een nieuwe ContactAnnotationList. Volg de stappen in de sectie Contactpersonen opslaan om een nieuwe lijst met aantekeningen te maken en rangschikkingen op te slaan voor uw belangrijkste contactpersonen.