Dela via


API för användare på flera plattformar

Windows är en idealisk plattform för appar från tredje part för att integrera kontakter med de främsta personerna. Den här integreringen gör det möjligt för användare att interagera med personas för olika personers upplevelser. Windows tillhandahåller nu WinUI, UWP och andra appar från tredje part med paketidentitet med API:er för att lagra alla sina kontakter.

När dina appar har lagrat sina kontakter i Windows kan användarna se dessa kontaktförslag på panelen Dela i Windows för att sömlöst dela med sina främsta kontakter. Mer information om panelen Dela finns i Dela filer i Utforskaren i Windows.

Skapa ett användarkonto för personkontrakt

Börja med att skapa ett användarkonto. Det krävs appar från tredje part för att skapa ett UserDataAccount med UserDisplayName som "com.microsoft.peoplecontract".

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

Lägg sedan till "com.microsoft.windows.system" i listan över ExplictReadAccessPackageFamilyNames för kontot. Detta ger begränsad åtkomst för kontakter från tredje part till Windows-upplevelser.

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

Lagra kontakter

Det första steget i att lagra kontakter är att skapa en kontaktlista. För att göra detta måste appar från tredje part skapa den nya kontaktlistan för en UserDataAccount i Windows ContactStore. Appar kan välja att behålla standardåtkomsttypen OtherAppReadAccess för kontaktlistan, men om du ställer in den None på kommer andra appar inte att ha åtkomst till dessa kontakter. Se ContactListOtherAppReadAccess-uppräkningen för den fullständiga listan över tillgängliga åtkomsttyper.

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

När du lagrar en kontakt måste appar från tredje part innehålla all relevant information som krävs för att Windows-upplevelser ska kunna driva en kontakt.

Följande fält krävs när du lagrar en kontakt:

  • FirstName
  • RemoteId
  • DisplayPicture

Följande fält är valfritt.

  • LastName
  • Phones
  • Emails

Det här kodfragmentet visar hur du lagrar en kontakt:

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

Anmärkning

DisplayName konstrueras för kontakten med hjälp av FirstName och LastName. Om efternamnet inte anges DisplayName är det identiskt med strängen som anges för förnamnet.

Lagra rangordningar för kontakter

Du kan skapa en annoteringslista för UserDataAccount för att lagra rangordningar för dina kontakter. Appar kan lagra rangordningar för sina främsta kontakter genom att lägga till anteckningar i kontakterna. Dessa anteckningar lagras som en del av en anteckningslista i kontaktarkivet.

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

Du kan lagra rangordningar för dina främsta kontakter med hjälp av anteckningarna på kontakter. Rangordningar lagras som en del av ProviderEgenskaper på en kontaktanteckning. Tillsammans med rangordningen måste appar ange SupportedOperations på en kontaktanteckning som 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);
}

Uppdatera kontaktleden

Det är efter apparnas gottfinnande när du ska uppdatera rangordningen för de kontakter som lagras i Windows. Windows rekommenderar att rangordnade listor uppdateras regelbundet för att ge bästa möjliga användarupplevelse. När du behöver uppdatera en rangordnad lista måste du följa flera steg.

  1. Ta bort ContactAnnotationList.

    När appen har en uppdaterad lista över de vanligaste kontakterna kan anteckningslistan tas bort och en ny anteckningslista med uppdaterade anteckningar för de översta kontakterna kan skapas.

    await this.contactAnnotationList.DeleteAsync();
    
  2. Skapa en ny ContactAnnotationList. Följ stegen i avsnittet Lagra rangordningar för kontakter för att skapa en ny anteckningslista och lagra rangordningar för dina främsta kontakter.