Dodawanie kontaktów do systemu Windows

Aplikacje z tożsamością pakietu mogą przechowywać swoje kontakty w Windows. Te kontakty mogą być wyświetlane jako sugestie w widżecie Ludzie, Wyszukiwarce systemu Windows i arkuszu udostępniania. W tym artykule pokazano, jak utworzyć konto danych użytkownika, przechowywać kontakty i konfigurować dostęp dla środowisk systemu Windows.

Tworzenie konta UserDataAccount dla kontraktu People

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

Note

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.

Dodawaj tylko jawne kontakty

Aplikacja powinna współtworzyć tylko kontakty, które użytkownik jawnie dodał lub autoryzował. Nigdy:

  • Prześlij całą książkę adresową
  • Automatyczna synchronizacja kontaktów bez zgody użytkownika
  • Udostępnianie kontaktów z katalogów firmowych bez jawnego uprawnienia

Poproś o zgodę przed zapisaniem kontaktów w 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;
}

Przestrzegaj ustawień prywatności użytkownika

Pozwól użytkownikom:

  • Wybieranie kontaktów, które mają być udostępniane Windows
  • Zrezygnuj z integracji z Windows People
  • Usuwanie kontaktów z Windows w dowolnym momencie
// Provide a setting to disable sync
if (this.ShouldSyncContactsWithWindows)
{
    await SyncContactsAsync();
}
else
{
    // Clear contacts if the user disables sync
    await ClearWindowsContactsAsync();
}