Aracılığıyla paylaş


Cihazlar Arası Kişiler API'si

Windows, üçüncü taraf uygulamaların en iyi insanlarla olan kişilerini entegre etmesi için ideal bir platformdur. Bu tümleştirme, kullanıcıların çeşitli kişi deneyimleri için kişiliklerle etkileşim kurmasını sağlar. Windows artık üçüncü taraf WinUI ve diğer uygulamalara, tüm kişilerini depolaması için API'lerle paket kimliği sunar.

Uygulamalarınız kişilerini Windows'ta depoladıktan sonra, kullanıcılar bu kişi önerilerini Windows'taki Paylaş panelinde görebilir ve en iyi kişileriyle sorunsuz bir şekilde paylaşabilir. Paylaşım paneli hakkında daha fazla bilgi için bkz. Windows'da Dosya Gezgini'nde dosyaları paylaşma.

Kişiler İçin Kullanıcı Verisi Hesabı Oluşturma Sözleşmesi

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

Uyarı

DisplayName İletişim için FirstName ve LastName kullanılarak oluşturulur. Soyadı belirtilmezse, DisplayName ad için belirtilen dizeyle aynı olacaktır.

Kişiler için dereceleri depolama

Kişilerinizin derecelendirmelerini depolamak için bir UserDataAccount ek açıklama listesi oluşturabilirsiniz. Uygulamalar, kişilere ek açıklamalar ekleyerek en önemli bağlantılarının sıralamalarını depolayabilir. Bu ek açıklamalar, iletişim deposundaki bir ek açıklama listesinin parçası olarak depolanır.

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

Kişilerdeki ek açıklamaları kullanarak en iyi kişilerinizin derecelerini depolayabilirsiniz. Dereceler, bir kişi ek açıklamasında ProviderProperties'in bir parçası olarak depolanır. Derecelendirmenin yanı sıra, uygulamaların kişi ek açıklamasında SupportedOperations değerini olarak Shareayarlaması gerekir.

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

Kişi derecelerini güncelleştirme

Windows'ta depolanan kişilerin derecelerinin güncelleştirilirken uygulamaların takdirine bağlıdır. Windows, en iyi kullanıcı deneyimini sağlamak için dereceli listelerin düzenli olarak güncelleştirilmiş olmasını önerir. Dereceli listeyi güncelleştirmeniz gerektiğinde birkaç adımı izlemeniz gerekir.

  1. ContactAnnotationList öğesini silin.

    Uygulama güncellenmiş en iyi kişiler listesine sahip olduktan sonra, ek açıklama listesi silinebilir ve en iyi kişiler için güncellenmiş ek açıklamalar bulunduran yeni bir ek açıklama listesi oluşturulabilir.

    await this.contactAnnotationList.DeleteAsync();
    
  2. Yeni bir ContactAnnotationListoluşturun. Yeni bir açıklama listesi oluşturmak ve en iyi kişilerinize ait sıralamaları depolamak için Kişiler için Derecelendirmeleri Depolama bölümündeki adımları izleyin.