連絡先を Windows に追加する

パッケージ ID を持つアプリは、連絡先を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" の一覧にを追加します。 これにより、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();

連絡先を保存する際、サード パーティ製アプリには、 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

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

明示的な連絡先のみを投稿する

アプリは、ユーザーが明示的に追加または承認した連絡先のみを提供する必要があります。 Never:

  • アドレス帳全体をアップロードする
  • ユーザーの同意なしに連絡先を自動同期する
  • 明示的なアクセス許可なしで会社のディレクトリから連絡先を共有する

連絡先を Windows People に保存する前に許可を求める:

private async Task<bool> RequestContactStoreAccessAsync()
{
    // Requesting a writable ContactStore prompts the user for consent.
    // Your app must declare the contacts capability in its manifest.
    ContactStore store = await ContactManager.RequestStoreAsync(
        ContactStoreAccessType.AppContactsReadWrite);
    return store != null;
}

ユーザーのプライバシー設定を尊重する

ユーザーに次を許可:

  • Windowsと共有する連絡先を選択する
  • Windows People の統合をオプトアウトする
  • いつでもWindowsから連絡先を削除する
// Provide a setting to disable sync
if (this.ShouldSyncContactsWithWindows)
{
    await SyncContactsAsync();
}
else
{
    // Clear contacts if the user disables sync
    await ClearWindowsContactsAsync();
}