共用方式為


跨裝置人員 API

Windows 是適合第三方應用程式整合其頂級人員聯繫人的理想平臺。 這項整合可讓用戶與各種人員體驗的角色互動。 Windows 現在提供第三方 WinUI 3、UWP 和其他應用程式搭配 API 的套件身分 識別,以儲存其所有聯繫人。

重要

某些資訊與發行前版本產品有關,在發行前版本產品可能經過大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。

注意

應用程式可以在 Windows Update 設定中發行至 Windows 測試人員計劃 (Beta 通道)後立即試用此功能(如需詳細資訊,請參閱 開始使用 Windows 測試人員計劃 )。

一旦您的應用程式將聯繫人儲存在 Windows 中,使用者就能夠在 Windows 中的 [共用 ] 面板上看到這些聯繫人建議,以順暢地與其最上層聯繫人共用。 如需共用面板的詳細資訊,請參閱如何在 Windows 上 檔案總管 共用檔案。

建立 People 合約的 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();

儲存連絡人

儲存連絡人的第一個步驟是建立聯繫人清單。 若要這樣做,第三方應用程式必須在 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 是使用 FirstNameLastName建構的 。 如果未提供姓氏, 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 建議定期更新排名清單,以提供最佳的用戶體驗。 每當您需要更新排名清單時,都必須遵循數個步驟。

  1. 刪除 ContactAnnotationList

    一旦應用程式有已更新的頂端聯繫人清單,就可以刪除批注清單,並建立具有其頂端聯繫人更新批注的新批注清單。

    await this.contactAnnotationList.DeleteAsync();
    
  2. 建立新的 ContactAnnotationList。 請遵循 [儲存聯繫人的排名] 區段中的步驟,為您的最上層聯繫人建立新的批注清單和儲存排名。

另請參閱