Freigeben über


Geräteübergreifende Personen-API

Windows ist eine ideale Plattform für Apps von Drittanbietern, um ihre wichtigsten Kontakte zu integrieren. Mit dieser Integration können Benutzer mit den Personas für verschiedene Benutzeroberflächen interagieren. Windows stellt jetzt WinUI 3, UWP und andere Apps mit Paketidentität mit APIs bereit, um alle ihre Kontakte zu speichern.

Wichtig

Einige Informationen beziehen sich auf Vorabversionen, die vor der kommerziellen Freigabe grundlegend geändert werden können. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.

Hinweis

Apps können dieses Feature ausprobieren, sobald es im Windows-Insider-Programm (Betakanal) in den Windows Update-Einstellungen veröffentlicht wird (weitere Informationen finden Sie unter "Erste Schritte mit dem Windows-Insider-Programm ").

Sobald Ihre Apps ihre Kontakte in Windows speichern, können Benutzer diese Kontaktvorschläge im Bereich "Freigeben " in Windows anzeigen, um sie nahtlos mit ihren wichtigsten Kontakten zu teilen. Weitere Informationen zum Freigeben von Dateien in Explorer unter Windows finden Sie im Bereich "Freigeben".

Erstellen eines UserDataAccount für den Vertrag für Personen

Erstellen Sie zunächst ein Benutzerkonto. Apps von Drittanbietern sind erforderlich, um ein UserDataAccount mit UserDisplayName dem Folgenden "com.microsoft.peoplecontract"zu erstellen.

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

Fügen Sie "com.microsoft.windows.system" als Nächstes der Liste der ExplictReadAccessPackageFamilyNames für das Konto hinzu. Dadurch wird der eingeschränkte Zugriff von Kontakten von Drittanbietern auf Windows-Erfahrungen ermöglicht.

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

Speichern von Kontakten

Der erste Schritt beim Speichern von Kontakten besteht darin, eine Kontaktliste zu erstellen. Dazu müssen Apps von Drittanbietern die neue Kontaktliste für einen UserDataAccount im Windows ContactStore erstellen. Apps können den Standardzugriffstyp OtherAppReadAccess für die Kontaktliste beibehalten, während sie festlegen, um None zu verhindern, dass andere Apps Zugriff auf diese Kontakte haben. Die vollständige Liste der verfügbaren Zugriffstypen finden Sie in der ContactListOtherAppReadAccess-Enumeration .

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

Beim Speichern eines Kontakts müssen Apps von Drittanbietern alle relevanten Informationen enthalten, die für Windows-Erfahrungen erforderlich sind, um einen Kontakt zu unterstützen.

Die folgenden Felder sind beim Speichern eines Kontakts erforderlich:

  • FirstName
  • RemoteId
  • DisplayPicture

Folgende Felder sind optional:

  • LastName
  • Phones
  • Emails

Dieser Codeausschnitt veranschaulicht, wie ein Kontakt gespeichert wird:

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

Hinweis

Der DisplayName für den Kontakt wird mit FirstName und LastName. Wenn der Nachname nicht angegeben wird, DisplayName entspricht die für den Vornamen angegebene Zeichenfolge.

Speichern von Rangfolgen für Kontakte

Sie können eine Anmerkungsliste erstellen, damit die UserDataAccount Rangfolgen für Ihre Kontakte gespeichert werden. Apps können Rangfolgen für ihre wichtigsten Kontakte speichern, indem Sie den Kontakten Anmerkungen hinzufügen. Diese Anmerkungen werden als Teil einer Anmerkungsliste im Kontaktspeicher gespeichert.

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

Sie können Rangfolgen für Ihre obersten Kontakte speichern, indem Sie die Anmerkungen zu Kontakten verwenden. Rangfolgen werden als Teil von ProviderProperties für eine Kontaktanmerkung gespeichert. Zusammen mit der Rangfolge müssen Apps die SupportedOperations für eine Kontaktanmerkung 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 annotationsLst.TrySaveAnnotationAsync(annotation);
}

Aktualisieren von Kontaktbewertungen

Es liegt im Ermessen von Apps, wann die Rangfolge der in Windows gespeicherten Kontakte aktualisiert werden soll. Windows empfiehlt, dass bewertete Listen regelmäßig aktualisiert werden, um die beste Benutzererfahrung zu bieten. Wenn Sie eine Rangliste aktualisieren müssen, müssen Sie mehrere Schritte ausführen.

  1. Löschen Sie die ContactAnnotationList.

    Sobald die App über eine aktualisierte Liste der obersten Kontakte verfügt, kann die Anmerkungsliste gelöscht werden, und eine neue Anmerkungsliste mit aktualisierten Anmerkungen für ihre wichtigsten Kontakte kann erstellt werden.

    await this.contactAnnotationList.DeleteAsync();
    
  2. Erstellen Sie ein neues ContactAnnotationList-Element. Führen Sie die Schritte im Abschnitt "Speichern von Einstufungen für Kontakte " aus, um eine neue Anmerkungsliste zu erstellen und Rangfolgen für Ihre wichtigsten Kontakte zu speichern.

Siehe auch