Windows Share için kişileri sıralama

Uygulamalar, Windows Share için kişi ek açıklamaları ekleyerek en önemli kişilerinin sıralamalarını sağlayabilir. Bu makalede ek açıklama listesi oluşturma, Share işlemiyle dereceleri depolama, dereceli listeyi güncelleştirme ve en iyi derecelendirme yöntemleri yer alır.

Başlamadan önce, kişilerinizi Windows'a ekleyin.

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 this.contactAnnotationList.TrySaveAnnotationAsync(annotation);
}

Derece değeri referansı

Aspect Guidance
Özellik anahtarı "Rank" ek açıklama sözlüğünde ProviderProperties
Değer türü Negatif olmayan tamsayı.
Yön Düşük değerler uygulamanızın listesinde önceliklidir. 0 derecesi "yoksay" değildir; aynı düşük değer önce gelir sıralamasını izler.
Benzersizlik Listenizdeki her kişiye benzersiz bir sıra atayın. Yinelenen sıralamaların davranışı belirtilmemiştir.
Scope Uygulamanızın dereceleri, yalnızca kendi listenizde öncelik sırasını gösterir. Windows tüm Share ek açıklamaları okur ve uygulamalar arasında kişileri sıralamak için kullanıma dayalı iç mantığı kullanır. Tüm ek açıklamaları okumak, Windows’un kaç öneri gösterdiğinden ayrıdır.
Değeri kim tanımlar? Uygulamanız. Bunun nasıl hesaplanacağını seçin; örneğin, etkileşimin güncelliği ve sıklığına göre.

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.

Derecelendirme için en iyi yöntemler

Paylaşım Sayfası'nın öneri satırındaki uygulamanızın kişilerinin alaka düzeyini en üst düzeye çıkarmak için şu sıralama ilkelerini izleyin:

Güncellik ve sıklığa göre sırala

Sıralamayı şunların birleşimi olarak hesaplayın:

  • Güncellik: Kullanıcının her bir kişiyle en son ne zaman etkileşim kurduğu
  • Sıklık: Kullanıcının her bir kişiyle etkileşim kurma sıklığı

Daha düşük sıra değerleri öncelikli olduğundan, kişilerinizi en yüksekten en düşük puana göre sıralayın ve 1, 2, 3 vb. dereceler atayın. Örneğin, kullanıcının dün mesaj gönderdiği bir kişi 1. sırayı alırken, kullanıcının 2 hafta önce mesaj gönderdiği bir kişi 5. sırayı alabilir.

// lastInteraction and interactionCount come from your app's own interaction
// telemetry. The Windows Contact class does not expose interaction history.
private int CalculateScore(DateTime lastInteraction, int interactionCount)
{
    TimeSpan daysSinceLastInteraction = DateTime.Now - lastInteraction;
    int frequencyScore = interactionCount * 10; // Max ~100
    int recencyScore = Math.Max(0, 100 - (daysSinceLastInteraction.Days * 3));

    return (recencyScore + frequencyScore) / 2;
}

// A higher score means a more relevant contact, so it gets a lower rank value.
// Assign unique ranks 1, 2, 3, ... in descending score order.
var rankedContacts = this.AllTrackedContacts
    .OrderByDescending(c => CalculateScore(c.LastInteractionDate, c.InteractionCount))
    .Select((c, index) => (Contact: c, Rank: index + 1));

Eski kişileri kaldırma

Kullanıcının 30 günden fazla süredir etkileşim kurmadığı kişiler dereceli listenizden kaldırılmalıdır. Bu, önerileri güncel ve ilgili tutar:

// Exclude stale contacts when you rebuild the ranked list. Don't save a rank of 0
// for them: lower values take precedence, so 0 is the highest priority.
var staleCutoff = DateTime.Now.AddDays(-30);
var activeContacts = this.AllTrackedContacts
    .Where(c => c.LastInteractionDate >= staleCutoff);

Düzenli olarak derecelendirmeleri güncelleştirme

Güncelleştirmeleri uygulamanız için anlamlı bir tempoda (mesajlaşma uygulamaları için günlük, e-posta için haftalık veya takvim uygulamaları için aylık) zamanlayın. Gerekirse arka plan görevlerini kullanın:

// Example: Update ranks when the app comes to foreground or on a timer
private async void UpdateRanksOnAppActivated()
{
    var topContacts = GetTopContactsByRecentActivity(50);
    await UpdateAnnotationRanksAsync(topContacts);
}

Öneriler satırı için denetim listesi

Yukarıdaki yönergelerle kişilerinizi derecelerine göre sıraladığınızda ve koruduğunuzda, kullanıcılar uygulamanızın en önemli kişilerini Windows Paylaşım Sayfası'nın öneriler satırında görür. Bu yol şu anda People kişilerini destekliyor.

Kişilerinizin görünmesini sağlamak için:

  1. UserDataAccount ile bir DisplayName = "com.microsoft.peoplecontract" oluşturun
  2. Zorunlu alanları bulunan kişileri kaydedin (FirstName, RemoteId, DisplayPicture)
  3. ContactAnnotationList derecelerle oluştur (düşük değerler önceliklidir)
  4. Her ek açıklama için SupportedOperations = Share ayarlayın
  5. Sıralamaları güncellik ve sıklığa göre düzenli olarak güncelleyin
  6. Kullanıcının 30 günden fazla bir süredir etkileşimde bulunmadığı kişileri dereceli listenizden kaldırın

Sayfa Paylaşma tümleştirme kılavuzunun tamamı için bkz. Uygulamanızdan içerik paylaşma ve Uygulamanızda içerik alma .