Поделиться через


API пользователей между устройствами

Windows — это идеальная платформа для сторонних приложений для интеграции своих лучших контактов пользователей. Эта интеграция позволяет пользователям взаимодействовать с пользователями для различных возможностей пользователей. Windows теперь предоставляет сторонние приложения WinUI 3, UWP и другие приложения с удостоверением пакета с API для хранения всех контактов.

Внимание

Некоторые сведения относятся к предварительному продукту, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Примечание.

Приложения могут попробовать эту функцию, как только она будет выпущена в программе предварительной оценки Windows (бета-канал) в параметрах Обновл. Windows (дополнительные сведения см. в разделе "Начало работы с программой предварительной оценки Windows").

После хранения контактов в Windows пользователи смогут просматривать эти предложения контактов на панели "Общий доступ" в Windows, чтобы без проблем поделиться своими лучшими контактами. Дополнительные сведения о панели "Общий доступ" см. в проводник в Windows.

Создание контракта UserDataAccount для людей

Начните с создания учетной записи данных пользователя. Сторонние приложения необходимы для создания 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 для управления контактом.

При хранении контакта требуются следующие поля:

  • FirstName
  • RemoteId
  • DisplayPicture

Следующие поля необязательные:

  • LastName
  • Phones
  • Emails

В этом фрагменте кода показано, как сохранить контакт:

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

Примечание.

Контакт DisplayName создается с помощью FirstName иLastName. Если фамилия не указана, DisplayName будет идентична строке, предоставленной для первого имени.

Хранение рангов для контактов

Вы можете создать список заметок для UserDataAccount хранения рядов для контактов. Приложения могут хранить ряды для своих лучших контактов, добавляя заметки в контакты. Эти заметки хранятся в составе списка заметок в хранилище контактов.

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

Вы можете хранить ряды для лучших контактов с помощью заметок в контактах. Ряды хранятся в рамках providerProperties в заметке контакта. Наряду с рангом приложения должны задать поддерживаемыеoperations в заметке контакта как 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);
}

Обновление рангов контактов

Это по усмотрению приложений, когда нужно обновить ряды контактов, хранящихся в Windows. Windows рекомендует регулярно обновлять списки ранжирования, чтобы обеспечить лучший пользовательский интерфейс. Каждый раз, когда вам нужно обновить рейтинг, вам потребуется выполнить несколько шагов.

  1. Удалите ContactAnnotationList.

    После того как приложение содержит обновленный список лучших контактов, список заметок можно удалить и создать новый список заметок с обновленными заметками для их главных контактов.

    await this.contactAnnotationList.DeleteAsync();
    
  2. Создайте ContactAnnotationList. Выполните действия в разделе "Хранение рядов для контактов ", чтобы создать новый список заметок и сохранить ряды для лучших контактов.

См. также