Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Apps kunnen prioriteit toekennen aan hun belangrijkste contactpersonen door contactaantekeningen toe te voegen voor Windows Share. Dit artikel bevat informatie over het maken van een annotatielijst, het opslaan van rangschikkingen met de Share bewerking, het bijwerken van de gerangschikte lijst en best practices voor rangschikken.
Voordat u begint, voegt u uw contactpersonen toe aan Windows.
Rangschikkingen opslaan voor contactpersonen
U kunt een aantekeningslijst maken voor het UserDataAccount om rangschikkingen voor uw contactpersonen te beheren. Apps kunnen rangschikkingen opslaan voor hun belangrijkste contactpersonen door aantekeningen toe te voegen aan de contactpersonen. Deze aantekeningen worden opgeslagen als onderdeel van een annotatielijst in de contactenopslag.
ContactAnnotationStore annotationStore = await
ContactManager.RequestAnnotationStoreAsync(ContactAnnotationStoreAccessType.AppAnnotationsReadWrite);
this.contactAnnotationList = await annotationStore.CreateAnnotationListAsync(uda.Id);
U kunt rangschikkingen opslaan voor uw belangrijkste contactpersonen door de aantekeningen op contactpersonen te gebruiken. Rangschikkingen worden opgeslagen als onderdeel van ProviderProperties op een contactpersoonaantekening. Naast rang moeten apps de SupportedOperations instellen op een aantekening van een contactpersoon als Share.
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);
}
Referentie van de rangwaarde
| Aspect | Guidance |
|---|---|
| Eigenschapssleutel |
"Rank" in de dictionary van ProviderProperties de annotatie |
| Waardetype | Niet-negatief geheel getal. |
| Richting | Lagere waarden hebben voorrang in de lijst van uw app. Een rangschikking van 0 is niet 'negeren'; het volgt dezelfde volgorde van laag naar hoog. |
| Uniciteit | Wijs een unieke positie toe aan elke contactpersoon in uw lijst. Het gedrag voor dubbele rangschikkingen is niet gespecificeerd. |
| Scope | De rangschikking van uw app drukt alleen de prioriteit binnen uw eigen lijst uit. Windows leest alle Share-aantekeningen en gebruikt interne logica op basis van gebruik om contactpersonen in apps te ordenen. Het lezen van alle aantekeningen staat los van hoeveel suggesties Windows weergeeft. |
| Wie definieert de waarde | Uw app. Kies hoe u deze wilt berekenen, bijvoorbeeld op basis van recency en frequentie van interactie. |
Contactrangschikkingen bijwerken
Het is naar eigen goeddunken van apps wanneer de rangschikkingen van de contactpersonen die zijn opgeslagen in Windows moeten worden bijgewerkt. Windows raadt aan dat gerangschikte lijsten regelmatig worden bijgewerkt om de beste gebruikerservaring te bieden. Wanneer u een gerangschikte lijst moet bijwerken, moet u verschillende stappen uitvoeren.
Verwijder de ContactAnnotationList.
Zodra de app een bijgewerkte lijst met belangrijkste contactpersonen heeft, kan de lijst met aantekeningen worden verwijderd en kan een nieuwe lijst met aantekeningen met bijgewerkte aantekeningen voor de belangrijkste contactpersonen worden gemaakt.
await this.contactAnnotationList.DeleteAsync();Maak een nieuwe
ContactAnnotationList. Volg de stappen in de sectie Contactpersonen opslaan om een nieuwe lijst met aantekeningen te maken en rangschikkingen op te slaan voor uw belangrijkste contactpersonen.
Aanbevolen procedures voor rangschikking
Volg de volgende classificatieprincipes om de relevantie van de contactpersonen van uw app in de rij Suggesties voor Share Sheet te maximaliseren:
Sorteren op recentheid en frequentie
Rang berekenen als een combinatie van:
- Recency: Wanneer de gebruiker voor het laatst interactie heeft gehad met elke contactpersoon
- Frequentie: Hoe vaak de gebruiker communiceert met elke contactpersoon
Omdat lagere rangschikkingswaarden prioriteit hebben, sorteert u uw contactpersonen op score van hoog naar laag en wijst u rang 1, 2, 3 enzovoort toe. Een contactpersoon die de gebruiker gisteren een bericht stuurde, kan bijvoorbeeld rang 1 krijgen, terwijl een contactpersoon die 2 weken geleden een bericht stuurde, mogelijk rang 5 krijgt.
// 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));
Verouderde contactpersonen verwijderen
Contactpersonen waarmee de gebruiker al 30 dagen of langer niet heeft gecommuniceerd, moeten worden verwijderd uit uw gerangschikte lijst. Hiermee blijven suggesties actueel en relevant:
// 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);
Rangschikkingen regelmatig bijwerken
Plan rangschikkingsupdates op een frequentie die zinvol is voor uw app: dagelijks voor berichten-apps, wekelijks voor e-mail of maandelijks voor agenda-apps. Gebruik indien nodig achtergrondtaken:
// Example: Update ranks when the app comes to foreground or on a timer
private async void UpdateRanksOnAppActivated()
{
var topContacts = GetTopContactsByRecentActivity(50);
await UpdateAnnotationRanksAsync(topContacts);
}
Controlelijst voor de rij met suggesties
Wanneer u uw contactpersonen rangschikt en onderhoudt met de bovenstaande richtlijnen, zien gebruikers de belangrijkste contactpersonen van uw app in de rij suggesties van het Windows Share Sheet. Dit pad ondersteunt momenteel People-contactpersonen.
Zo zorgt u ervoor dat uw contacten worden weergegeven:
- Maak een
UserDataAccountmetDisplayName = "com.microsoft.peoplecontract" - Contactpersonen opslaan met vereiste velden (
FirstName,RemoteId,DisplayPicture) -
ContactAnnotationListmaken met rangen (lagere waarden hebben voorrang) - Stel
SupportedOperations = Sharein voor elke annotatie - Rangschikkingen regelmatig bijwerken op basis van recency en frequentie
- Contactpersonen waarmee de gebruiker gedurende 30 dagen of langer geen interactie heeft gehad uit uw gerangschikte lijst verwijderen
Zie Inhoud van uw app delen en inhoud ontvangen in uw app voor de volledige integratiehandleiding voor Share Sheet.
Verwante onderwerpen
Windows developer