디바이스 간 People API
Windows는 타사 앱이 상위 사용자 연락처를 통합하는 데 이상적인 플랫폼입니다. 이 통합을 통해 사용자는 다양한 사용자 환경을 위해 가상 사용자와 상호 작용할 수 있습니다. 이제 Windows는 타사 WinUI 3, UWP 및 기타 앱에 API가 포함된 패키지 ID를 제공하여 모든 연락처를 저장합니다.
Important
일부 정보는 상업용으로 출시되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적, 또는 묵시적인 보증을 하지 않습니다.
참고 항목
앱은 Windows 업데이트 설정에서 Windows 참가자 프로그램(베타 채널)에 릴리스되는 즉시 이 기능을 사용해 볼 수 있습니다(자세한 내용은 Windows 참가자 프로그램 시작 참조).
앱이 Windows에 연락처를 저장하면 사용자는 Windows의 공유 패널에서 이러한 연락처 제안을 확인하여 상위 연락처와 원활하게 공유할 수 있습니다. 공유 패널에 대한 자세한 내용은 Windows의 파일 탐색기 파일을 공유하는 방법을 참조하세요.
사용자용 UserDataAccount 계약 만들기
먼저 사용자 데이터 계정을 만듭니다. 다음과 같이 "com.microsoft.peoplecontract"
UserDataAccount를 만들려면 타사 앱이 UserDisplayName
필요합니다.
UserDataAccountStore udas =
await UserDataAccountManager.RequestStoreAsync(UserDataAccountStoreAccessType.AppAccountsReadWrite);
UserDataAccount uda = await udas.CreateAccountAsync("com.microsoft.peoplecontract");
다음으로, 계정에 대한 ExplictReadAccessPackageFamilyNames 목록에 추가 "com.microsoft.windows.system"
합니다. 이렇게 하면 Windows 환경에 대한 타사 연락처의 액세스가 제한됩니다.
uda.ExplictReadAccessPackageFamilyNames.Add("com.microsoft.windows.system");
await uda.SaveAsync();
연락처 저장
연락처를 저장하는 첫 번째 단계는 연락처 목록을 만드는 것입니다. 이렇게 하려면 타사 앱이 Windows ContactStore에 대한 UserDataAccount
새 연락처 목록을 만들어야 합니다. 앱은 연락처 목록에 대한 기본 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의 일부로 저장됩니다. 순위와 함께 앱은 연락처 주석에서 SupportedOperations 를 다음과 같이 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에서는 최상의 사용자 환경을 제공하기 위해 순위가 지정된 목록을 정기적으로 업데이트하는 것이 좋습니다. 순위가 지정된 목록을 업데이트해야 할 때마다 몇 가지 단계를 수행해야 합니다.
ContactAnnotationList를 삭제합니다.
앱에 상위 연락처의 업데이트된 목록이 있으면 주석 목록을 삭제하고 상위 연락처에 대한 주석이 업데이트된 새 주석 목록을 만들 수 있습니다.
await this.contactAnnotationList.DeleteAsync();
새
ContactAnnotationList
를 만듭니다. 연락처에 대한 순위 저장 섹션의 단계에 따라 새 주석 목록을 만들고 상위 연락처에 대한 순위를 저장합니다.
참고 항목
Windows developer