Udostępnij przez


Interfejs API do identyfikacji osób na różnych urządzeniach

System Windows to idealna platforma dla aplikacji innych firm do integracji kontaktów z najlepszymi osobami. Ta integracja umożliwia użytkownikom interakcję z personami dla różnych doświadczeń użytkowników. System Windows udostępnia teraz aplikacjom WinUI 3, UWP i innym aplikacjom tożsamość pakietu oraz interfejsy API do przechowywania wszystkich kontaktów.

Gdy aplikacje będą przechowywać swoje kontakty w systemie Windows, użytkownicy będą mogli zobaczyć te sugestie kontaktowe w panelu Udostępnianie w systemie Windows, aby bezproblemowo udostępniać swoje najważniejsze kontakty. Aby uzyskać więcej informacji na temat panelu Udostępnianie, zobacz Jak udostępniać pliki w Eksploratorze plików w systemie Windows.

Tworzenie konta UserDataAccount dla kontraktu Osób

Zacznij od utworzenia konta danych użytkownika. Aby utworzyć konto UserDataAccount, konieczne jest użycie aplikacji innych firm z UserDisplayName jako "com.microsoft.peoplecontract".

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

Następnie dodaj "com.microsoft.windows.system" do listy explictReadAccessPackageFamilyNames dla konta. Zapewni to ograniczony dostęp kontaktom zewnętrznym do środowisk korzystania z systemu Windows.

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

Przechowywanie kontaktów

Pierwszym krokiem przechowywania kontaktów jest utworzenie listy kontaktów. W tym celu aplikacje innych firm muszą utworzyć nową listę kontaktów dla elementu UserDataAccount w sklepie Windows ContactStore. Aplikacje mogą zachować domyślny OtherAppReadAccess typ dostępu dla listy kontaktów, ustawiając je tak, aby None uniemożliwiły innym aplikacjom dostęp do tych kontaktów. Aby uzyskać pełną listę dostępnych typów dostępu, zobacz wyliczenie ContactListOtherAppReadAccess .

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

Podczas przechowywania kontaktu aplikacje innych firm muszą zawierać wszystkie istotne informacje wymagane przez środowiska systemu Windows do obsługi kontaktu.

Podczas przechowywania kontaktu wymagane są następujące pola:

  • FirstName
  • RemoteId
  • DisplayPicture

Poniższe pola są polami opcjonalnymi:

  • LastName
  • Phones
  • Emails

Ten fragment kodu pokazuje, jak przechowywać 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);
}

Uwaga

Element DisplayName dla kontaktu skonstruowano przy użyciu FirstName i LastName. Jeśli nazwisko nie zostanie podane, DisplayName będzie identyczne z ciągiem podanym dla imienia.

Przechowywanie rang dla kontaktów

Możesz utworzyć listę adnotacji dla UserDataAccount elementu , aby przechowywać rangi dla kontaktów. Aplikacje mogą przechowywać rangi dla swoich najważniejszych kontaktów, dodając adnotacje do kontaktów. Te adnotacje są przechowywane jako część listy adnotacji w bazie kontaktów.

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

Rankingi dla najważniejszych kontaktów można przechowywać przy użyciu adnotacji w kontaktach. Rangi są przechowywane w ramach właściwości ProviderProperties w adnotacji kontaktu. Oprócz rangi aplikacje muszą ustawić SupportedOperations w adnotacji kontaktowej jako 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);
}

Aktualizowanie rang kontaktów

Jest to według uznania aplikacji, kiedy należy zaktualizować szeregi kontaktów przechowywanych w systemie Windows. System Windows zaleca regularne aktualizowanie list rankingowych w celu zapewnienia najlepszych wrażeń użytkownika. Zawsze, gdy musisz zaktualizować listę sklasyfikowaną, musisz wykonać kilka kroków.

  1. Usuń element ContactAnnotationList.

    Gdy aplikacja ma zaktualizowaną listę najważniejszych kontaktów, można usunąć listę adnotacji, a można utworzyć nową listę adnotacji ze zaktualizowanymi adnotacjami dla najważniejszych kontaktów.

    await this.contactAnnotationList.DeleteAsync();
    
  2. Utwórz nowy element ContactAnnotationList. Wykonaj kroki opisane w sekcji Przechowywanie rang dla kontaktów , aby utworzyć nową listę adnotacji i zapisać rangi dla najważniejszych kontaktów.