Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Windows ideális platform a külső alkalmazások számára, hogy integrálhassák a legfelső szintű kapcsolattartóikat. Ez az integráció lehetővé teszi a felhasználók számára, hogy interakcióba lépjenek a különböző felhasználói élmények személyeivel. A Windows mostantól harmadik féltől származó WinUI-t és más alkalmazásokat biztosít csomagidentitással API-kkal az összes névjegy tárolásához.
Miután az alkalmazások a Windowsban tárolják a névjegyeiket, a felhasználók a Windows Megosztás paneljén láthatják ezeket a partnerjavaslatokat, hogy zökkenőmentesen megoszthassák őket a legfontosabb partnerekkel. A Megosztás panelről további információt a Fájlok megosztása a Windows Fájlkezelőben című témakörben talál.
UserDataAccount for People-szerződés létrehozása
Először hozzon létre egy felhasználóiadat-fiókot. Harmadik féltől származó alkalmazásokra van szükség a UserDataAccount létrehozásához a következővel UserDisplayName : "com.microsoft.peoplecontract".
UserDataAccountStore udas =
await UserDataAccountManager.RequestStoreAsync(UserDataAccountStoreAccessType.AppAccountsReadWrite);
UserDataAccount uda = await udas.CreateAccountAsync("com.microsoft.peoplecontract");
Ezután adja hozzá a "com.microsoft.windows.system" elemet a ExplictReadAccessPackageFamilyNames listájához a fiókhoz. Ez korlátozott hozzáférést biztosít a külső partnerek számára a Windows-szolgáltatásokhoz.
uda.ExplictReadAccessPackageFamilyNames.Add("com.microsoft.windows.system");
await uda.SaveAsync();
Névjegyek tárolása
A partnerek tárolásának első lépése egy partnerlista létrehozása. Ehhez a külső alkalmazásoknak létre kell hozniuk egy új partnerlistát a UserDataAccount Windows ContactStore-ban. Az alkalmazások dönthetnek úgy, hogy megtartják a partnerlista alapértelmezett OtherAppReadAccess hozzáférési típusát; a None beállítása esetén más alkalmazások nem férhetnek hozzá ezekhez a névjegyekhez. A teljes hozzáférési lista megtekintéséhez lásd a ContactListOtherAppReadAccess enumerációt.
ContactStore store = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AppContactsReadWrite);
this.contactList = await store.CreateContactListAsync(contactListsName, uda.Id);
contactList.OtherAppReadAccess = ContactListOtherAppReadAccess.None;
await contactList.SaveAsync();
A névjegyek tárolásakor a külső alkalmazásoknak tartalmazniuk kell a Windows-szolgáltatásokhoz szükséges összes releváns információt a névjegyek használatához.
A kapcsolatok tárolásához a következő mezők szükségesek:
FirstNameRemoteIdDisplayPicture
Az alábbi mezők nem kötelezőek:
LastNamePhonesEmails
Ez a kódrészlet bemutatja, hogyan tárolhat partnereket:
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);
}
Megjegyzés:
A DisplayName a és FirstName segítségével van felépítve. Ha a vezetéknév nincs megadva, DisplayName az megegyezik az utónévhez megadott sztringgel.
Kapcsolatokhoz tartozó rangok tárolása
Létrehozhat egy annottációs listát a UserDataAccount kapcsolatok rangjainak tárolására. Az alkalmazások megjegyzések hozzáadásával tárolhatják a legfontosabb névjegyeik rangsorát. Ezek az annotációk egy annotációs lista részeként vannak tárolva a kapcsolattárolóban.
ContactAnnotationStore annotationStore = await
ContactManager.RequestAnnotationStoreAsync(ContactAnnotationStoreAccessType.AppAnnotationsReadWrite);
this.contactAnnotationList = await annotationStore.CreateAnnotationListAsync(uda.Id);
A kapcsolatokon lévő jegyzetek használatával tárolhatja a legfontosabb kapcsolatok rangsorát. A rangok a ProviderProperties részeként vannak tárolva egy partnerjegyzeten. A rangsorolás mellett az alkalmazásoknak a SupportedOperations tulajdonságot is be kell állítaniuk egy kapcsolat-jegyzetbe 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 annotationsLst.TrySaveAnnotationAsync(annotation);
}
Kapcsolati szempontok frissítése
Az alkalmazások saját belátása szerint frissítik a Windowsban tárolt névjegyek rangját. A Windows azt javasolja, hogy a rangsorolt listák rendszeresen frissüljenek a legjobb felhasználói élmény érdekében. Minden alkalommal, amikor frissítenie kell egy rangsorolt listát, több lépést kell követnie.
Törölje a ContactAnnotationList elemet.
Miután az alkalmazás frissítette a legfontosabb névjegyek listáját, a megjegyzéslista törölhető, és létrehozható egy új megjegyzéslista, amely frissített megjegyzéseket tartalmaz a legfontosabb névjegyekhez.
await this.contactAnnotationList.DeleteAsync();Hozzon létre egy újat
ContactAnnotationList. A Partnerek rangsorolása szakaszban található lépéseket követve hozzon létre egy új jegyzetlistát, és tárolja a rangsorokat a legfontosabb partnerek számára.
Ajánlott eljárások a rangsoroláshoz
Ha szeretné maximalizálni az alkalmazás névjegyeinek relevanciáját a Share Sheet javaslatsorában, kövesse az alábbi rangsorolási alapelveket:
Rangsorolás a frissesség és a gyakoriság alapján
Számítsa ki a rangot a következők kombinációjaként:
- Recency: Amikor a felhasználó utoljára kommunikált az egyes partnerekkel
- Gyakoriság: Milyen gyakran lép kapcsolatba a felhasználó az egyes partnerekkel?
Előfordulhat például, hogy a felhasználó tegnapi üzenete 95. rangot kapott, míg a két héttel ezelőtti üzenetben szereplő partner 60- os rangot kaphat.
// lastInteraction and interactionCount come from your app's own interaction
// telemetry. The Windows Contact class does not expose interaction history.
private int CalculateRank(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;
}
Elavult névjegyek eltávolítása
A felhasználó által 30+ nap alatt nem kommunikált partnereket jelentősen el kell távolítani vagy le kell őket rangsorolni. Így a javaslatok frissek és relevánsak maradnak:
private async Task PruneStaleContactsAsync()
{
var now = DateTime.Now;
var staleCutoff = now.AddDays(-30);
foreach (var contact in this.AllTrackedContacts)
{
if (contact.LastInteractionDate < staleCutoff)
{
// Remove the annotation or set rank to 0
var annotation = await GetAnnotationForContactAsync(contact);
if (annotation != null)
{
annotation.ProviderProperties["Rank"] = 0;
await this.contactAnnotationList.TrySaveAnnotationAsync(annotation);
}
}
}
}
Frissítse rendszeresen a rangsorokat.
A rangsorfrissítések ütemezése az alkalmazás számára ésszerű ütemben – naponta üzenetküldő alkalmazásokhoz, heti e-mailekhez vagy naptáralkalmazásokhoz havonta. Szükség esetén használjon háttérfeladatokat:
// Example: Update ranks when the app comes to foreground or on a timer
private async void UpdateRanksOnAppActivated()
{
var topContacts = GetTopContactsByRecentActivity(50);
await UpdateAnnotationRanksAsync(topContacts);
}
Adatvédelem és hozzájárulás
Csak kifejezett kapcsolatokat adjon meg
Az alkalmazásnak csak azokat a névjegyeket kell hozzáadnia, amelyekhez a felhasználó kifejezetten hozzáadott vagy engedélyezett. Soha:
- A teljes címjegyzék feltöltése
- Névjegyek automatikus szinkronizálása felhasználói hozzájárulás nélkül
- Partnerek megosztása a vállalati címtárakból kifejezett engedély nélkül
Kérjen engedélyt, mielőtt névjegyeket tárol a Kapcsolatok rendszerben:
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;
}
A felhasználói adatvédelmi beállítások tiszteletben tartása
Lehetővé teszi a felhasználók számára, hogy:
- Válassza ki, mely névjegyeket osztja meg a Windowszal
- A People-integráció kikapcsolása
- Bármikor törölheti a névjegyeit a Windowsból
// Provide a setting to disable sync
if (this.ShouldSyncContactsWithWindows)
{
await SyncContactsAsync();
}
else
{
// Clear contacts if the user disables sync
await ClearWindowsContactsAsync();
}
Integráció a megosztási laplal
Ha a fenti útmutatással rangsorolja és tartja karban a névjegyeit, a felhasználók az alkalmazás legjobb partnereit látják a Windows Megosztás lap javaslatsorában. Ez az útvonal jelenleg támogatja a People névjegyeket.
Annak érdekében, hogy a névjegyek megjelenjenek:
- Hozzon létre egy
UserDataAccountelemetDisplayName = "com.microsoft.peoplecontract"használatával - Kapcsolatok mentése kötelező mezőkkel (
FirstName,RemoteId,DisplayPicture) -
ContactAnnotationListRanglétrehozás létrehozása - Állítsa be a(z)
SupportedOperations = Sharebeállítást minden annotáción - A rangsorokat rendszeresen frissítse az aktualitás és a gyakoriság alapján
- 30+ nap után metsszük ki az elavult névjegyeket
A teljes Share Sheet integrációs útmutatót az alkalmazás tartalmainak megosztása és a Tartalom fogadása az alkalmazásban című témakörben találja.
Kapcsolódó tartalom
Windows developer