Kişileri Windows'a ekleme

Paket kimliğine sahip uygulamalar, kişilerini Windows'ta depolayabilir. Bu kişiler Kişiler araç takımında, Windows Arama'da ve Paylaşım sayfasında öneri olarak görüntülenebilir. Bu makalede kullanıcı veri hesabı oluşturma, kişileri depolama ve Windows deneyimleri için erişimi yapılandırma işlemleri gösterilmektedir.

Kişiler sözleşmesi için bir UserDataAccount oluşturun

Başlangıç olarak bir kullanıcı veri hesabı oluşturun. UserDisplayName olarak bir "com.microsoft.peoplecontract" oluşturmak için üçüncü taraf uygulamalar gereklidir.

UserDataAccountStore udas =
    await UserDataAccountManager.RequestStoreAsync(UserDataAccountStoreAccessType.AppAccountsReadWrite);
UserDataAccount uda = await udas.CreateAccountAsync("com.microsoft.peoplecontract");

Ardından, "com.microsoft.windows.system" hesabın ExplicitReadAccessPackageFamilyNames listesine ekleyin. Bu, üçüncü taraf kişilerin Windows deneyimlerine kısıtlanmış erişimini sağlar.

uda.ExplictReadAccessPackageFamilyNames.Add("com.microsoft.windows.system");
await uda.SaveAsync();

Kişileri depolama

Kişileri depolamanın ilk adımı bir kişi listesi oluşturmaktır. Bunu yapmak için, üçüncü taraf uygulamaların Windows ContactStore'nda için UserDataAccount yeni kişi listesini oluşturması gerekir. Uygulamalar kişi listesi için varsayılan OtherAppReadAccess erişim türünü korumayı seçebilirken, bunu olarak ayarlamak None diğer uygulamaların bu kişilere erişmesini engeller. Tam erişim türleri listesini görmek için ContactListOtherAppReadAccess enum türüne bakın.

ContactStore store = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AppContactsReadWrite);
this.contactList = await store.CreateContactListAsync(contactListsName, uda.Id);
contactList.OtherAppReadAccess = ContactListOtherAppReadAccess.None;
await contactList.SaveAsync();

Bir kişiyi depolarken üçüncü taraf uygulamalar, Windows deneyimlerinin bir Kişiyi desteklemek için gerekli tüm ilgili bilgileri içermesi gerekir.

Bir kişiyi kaydederken gerekli olan alanlar şunlardır:

  • FirstName
  • RemoteId
  • DisplayPicture

Aşağıdaki alanlar isteğe bağlıdır:

  • LastName
  • Phones
  • Emails

Bu kod parçacığı, bir iletişim bilgisinin veya kaydının nasıl depolandığını gösterir.

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 İletişim için FirstName ve LastName kullanılarak oluşturulur. Soyadı belirtilmezse, DisplayName ad için belirtilen dizeyle aynı olacaktır.

Yalnızca açıkça belirtilen kişileri ekleyin

Uygulamanız yalnızca kullanıcının açıkça eklediği veya yetkilendirdiği kişilere katkıda bulunmalıdır. Hiçbir zaman:

  • Adres defterinin tamamını karşıya yükleyin
  • Kullanıcı onayı olmadan kişileri otomatik eşitleme
  • Kurumsal dizinlerdeki kişileri açık izin olmadan paylaşma

Kişileri Windows Kişiler'de depolamadan önce izin isteyin:

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;
}

Kullanıcı gizlilik ayarlarına saygı gösterin

Kullanıcıların şunları yapmasına izin ver:

  • Windows ile paylaşacak kişileri seçme
  • Windows Kişiler tümleştirmesini devre dışı bırakma
  • Kişilerini Windows’tan istediğiniz zaman silin
// Provide a setting to disable sync
if (this.ShouldSyncContactsWithWindows)
{
    await SyncContactsAsync();
}
else
{
    // Clear contacts if the user disables sync
    await ClearWindowsContactsAsync();
}