クロス デバイス People API

Windows は、第三者のアプリがトップの連絡先を統合するための理想的なプラットフォームです。 この統合により、ユーザーはさまざまなユーザー エクスペリエンスのためにペルソナと対話できます。 Windows では、サードパーティの WinUI 3、UWP、およびその他のアプリに、すべての連絡先を格納するための API を使用して パッケージ ID を 提供するようになりました。

重要

一部の情報はリリース前の製品に関する事項であり、正式版がリリースされるまでに大幅に変更される可能性があります。 Microsoft はここに示されている情報について、明示か黙示かを問わず、一切保証しません。

Note

アプリは、Windows Update 設定の Windows Insider Program (ベータ チャネル) にリリースされるとすぐにこの機能を試すことができます (詳細については、「 Windows Insider Program の使用を開始する 」を参照してください)。

アプリで連絡先を Windows に保存すると、ユーザーは Windows の [ 共有 ] パネルで連絡先の候補を確認し、上位の連絡先とシームレスに共有できるようになります。 Share パネルの詳細については、「Windows のエクスプローラーでファイルを共有する方法を参照してください。

People コントラクトの UserDataAccount の作成

まず、ユーザー データ アカウントを作成します。 UserDisplayName"com.microsoft.peoplecontract"としてUserDataAccountを作成するには、サード パーティ製アプリが必要です。

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 ContactStoreUserDataAccountの新しい連絡先リストを作成する必要があります。 アプリは、連絡先リストの既定の 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();

連絡先を保存する際、サード パーティ製アプリには、 Contactを強化するために 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);
}

Note

ContactDisplayNameは、FirstNameLastNameを使用して構築されます。 姓が指定されていない場合、 DisplayName 名に指定された文字列と同じになります。

連絡先のランクの格納

連絡先のランクを格納する UserDataAccount の注釈リストを作成できます。 アプリでは、連絡先に注釈を追加することで、上位の連絡先のランクを格納できます。 これらの注釈は、連絡先ストアの注釈リストの一部として格納されます。

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

連絡先の注釈を使用して、上位の連絡先のランクを格納できます。 ランクは、連絡先の注釈に ProviderProperties の一部として格納されます。 ランクと共に、アプリは連絡先注釈の SupportedOperationsShareとして設定する必要があります。

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 を作成します。 連絡先のランクセクションの手順に従って、新しい注釈リストを作成し、上位の連絡先のランクを格納します。

関連項目