Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложения с идентификатором пакета могут хранить свои контакты в Windows. Эти контакты могут отображаться как предложения в мини-приложении "Люди", поиске Windows и листе общего доступа. В этой статье показано, как создать учетную запись пользовательских данных, сохранить контакты и настроить доступ для возможностей Windows.
Создайте объект UserDataAccount для контракта People
Начните с создания учетной записи данных пользователя. Сторонние приложения необходимы для создания UserDataAccount с UserDisplayName как "com.microsoft.peoplecontract".
UserDataAccountStore udas =
await UserDataAccountManager.RequestStoreAsync(UserDataAccountStoreAccessType.AppAccountsReadWrite);
UserDataAccount uda = await udas.CreateAccountAsync("com.microsoft.peoplecontract");
Затем добавьте "com.microsoft.windows.system" в список ExplictReadAccessPackageFamilyNames для учетной записи. Это обеспечит ограниченный доступ сторонних контактов к интерфейсам Windows.
uda.ExplictReadAccessPackageFamilyNames.Add("com.microsoft.windows.system");
await uda.SaveAsync();
Хранение контактов
Первым шагом в хранении контактов является создание списка контактов. Для этого сторонние приложения должны создать новый список контактов в UserDataAccount Windows ContactStore. Приложения могут сохранить тип доступа по умолчанию OtherAppReadAccess для списка контактов, а установка в None предотвратит доступ к этим контактам для других приложений.
Полный список доступных типов доступа см. в перечислении ContactListOtherAppReadAccess.
ContactStore store = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AppContactsReadWrite);
this.contactList = await store.CreateContactListAsync(contactListsName, uda.Id);
contactList.OtherAppReadAccess = ContactListOtherAppReadAccess.None;
await contactList.SaveAsync();
При сохранении контакта сторонние приложения должны включать все необходимые сведения, необходимые для работы с Windows для управления контактом.
При хранении контакта требуются следующие поля:
FirstNameRemoteIdDisplayPicture
Следующие поля необязательные:
LastNamePhonesEmails
В этом фрагменте кода показано, как сохранить контакт:
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Контакт создается с помощью FirstName иLastName. Если фамилия не указана, DisplayName будет идентична строке, предоставленной для первого имени.
Конфиденциальность и согласие
Добавляйте только явно указанные контакты
Ваше приложение должно внести только те контакты, которые пользователь явно добавил или авторизован. Никогда:
- Отправка всей адресной книги
- Автоматически синхронизировать контакты без согласия пользователя
- Предоставление общего доступа к контактам из корпоративных каталогов без явного разрешения
Попросите разрешение перед хранением контактов в Windows "Люди":
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;
}
Соблюдение параметров конфиденциальности пользователей
Разрешить пользователям:
- Выбор контактов для совместного использования с Windows
- Отключить интеграцию Windows "Люди"
- Удаление контактов из Windows в любое время
// Provide a setting to disable sync
if (this.ShouldSyncContactsWithWindows)
{
await SyncContactsAsync();
}
else
{
// Clear contacts if the user disables sync
await ClearWindowsContactsAsync();
}
Связанные материалы
Windows developer