Windows 是適合第三方應用程式整合其頂級人員聯繫人的理想平臺。 這項整合可讓用戶與不同角色的體驗進行互動。 Windows 現在透過 API 為第三方 WinUI 3、UWP 和其他應用程式提供套件身分,以儲存他們所有的聯絡人。
一旦您的應用程式將聯繫人儲存在 Windows 中,使用者就能夠在 Windows 中的 [共用 ] 面板上看到這些聯繫人建議,以順暢地與其最上層聯繫人共用。 如需共用面板的詳細資訊,請參閱如何在 Windows 上 檔案總管 共用檔案。
建立用於 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();
儲存連絡人
儲存連絡人的第一個步驟是建立聯繫人清單。 若要這樣做,第三方應用程式必須在 Windows 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);
}
儲存聯絡人的排名
您可以為 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 建議定期更新排名清單,以提供最佳的用戶體驗。 每當您需要更新排名清單時,都必須遵循數個步驟。
-
一旦應用程式有已更新的頂端聯繫人清單,就可以刪除批注清單,並建立具有其頂端聯繫人更新批注的新批注清單。
await this.contactAnnotationList.DeleteAsync();
建立新的
ContactAnnotationList
。 請遵循 [儲存聯繫人的排名] 區段中的步驟,為您的最上層聯繫人建立新的批注清單和儲存排名。