Přidání kontaktů do Windows

Aplikace s identitou balíčku můžou ukládat své kontakty v systému Windows. Tyto kontakty se můžou zobrazovat jako návrhy ve widgetu Lidé, ve Vyhledávání ve Windows a v panelu Sdílet. Tento článek ukazuje, jak vytvořit účet uživatelských dat, uložit kontakty a nakonfigurovat přístup pro prostředí Windows.

Vytvoření účtu UserDataAccount pro smlouvu People

Začněte vytvořením uživatelského datového účtu. Je nutné, aby aplikace třetích stran vytvořily uživatelský účet UserDataAccount s UserDisplayName jako "com.microsoft.peoplecontract".

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

Dále přidejte "com.microsoft.windows.system" do seznamu ExplictReadAccessPackageFamilyNames pro účet. Tím zajistíte omezený přístup kontaktů třetích stran k prostředím Windows.

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

Ukládání kontaktů

Prvním krokem při ukládání kontaktů je vytvoření seznamu kontaktů. Aby to bylo možné, musí aplikace třetích stran vytvořit nový seznam kontaktů pro UserDataAccount v ContactStore Windows. Aplikace si můžou ponechat výchozí OtherAppReadAccess typ přístupu pro seznam kontaktů a zároveň ho nastavit tak, aby None ostatní aplikace neměly přístup k těmto kontaktům. Úplný seznam dostupných typů přístupu najdete v výčtu ContactListOtherAppReadAccess .

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

Při ukládání kontaktu musí aplikace třetích stran zahrnovat všechny relevantní informace potřebné pro využití kontaktu v prostředích systému Windows.

Při ukládání kontaktu jsou vyžadována následující pole:

  • FirstName
  • RemoteId
  • DisplayPicture

Následující pole jsou volitelná:

  • LastName
  • Phones
  • Emails

Tento fragment kódu ukazuje, jak uložit 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

DisplayName pro Kontakt je vytvořen pomocí FirstName a LastName. Pokud by nebylo uvedeno příjmení, DisplayName bude totožný s řetězcem zadaným pro křestní jméno.

Přispívejte pouze výslovně zadané kontakty

Vaše aplikace by měla přispívat jenom kontakty, které uživatel explicitně přidal nebo autorizoval. Nikdy:

  • Nahrání celého adresáře
  • Automatická synchronizace kontaktů bez souhlasu uživatele
  • Sdílení kontaktů z podnikových adresářů bez explicitního oprávnění

Před uložením kontaktů v Windows People požádejte o oprávnění:

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

Respektovat nastavení ochrany osobních údajů uživatele

Umožnit uživatelům:

  • Výběr kontaktů, které se mají sdílet s Windows
  • Odhlásit integraci Windows People
  • Odstranění kontaktů z Windows kdykoli
// Provide a setting to disable sync
if (this.ShouldSyncContactsWithWindows)
{
    await SyncContactsAsync();
}
else
{
    // Clear contacts if the user disables sync
    await ClearWindowsContactsAsync();
}