Compartir a través de


API de personas entre dispositivos

Windows es una plataforma ideal para aplicaciones de terceros para integrar sus contactos más importantes. Esta integración permite a los usuarios interactuar con los roles para diversas experiencias de personas. Windows ahora proporciona winUI 3, UWP y otras aplicaciones de terceros con identidad de paquete con API para almacenar todos sus contactos.

Importante

Parte de la información hace referencia a un producto de versión preliminar que puede sufrir importantes modificaciones antes de que se publique la versión comercial. Microsoft no proporciona ninguna garantía, expresa o implícita, con respecto a la información proporcionada aquí.

Nota:

Las aplicaciones pueden probar esta característica tan pronto como se publique en el Programa Windows Insider (canal beta) en la configuración de Windows Update (consulta Introducción al Programa Windows Insider para obtener más información).

Una vez que las aplicaciones almacenen sus contactos en Windows, los usuarios podrán ver estas sugerencias de contacto en el panel Compartir de Windows para compartir sin problemas con sus contactos principales. Consulte Cómo compartir archivos en Explorador de archivos en Windows para obtener más información sobre el panel Compartir.

Creación de un contrato UserDataAccount para personas

Empiece por crear una cuenta de datos de usuario. Las aplicaciones de terceros son necesarias para crear un userDataAccount con UserDisplayName como "com.microsoft.peoplecontract".

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

A continuación, agregue "com.microsoft.windows.system" a la lista de ExplictReadAccessPackageFamilyNames para la cuenta. Esto proporcionará acceso restringido de contactos de terceros a experiencias de Windows.

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

Almacenar contactos

El primer paso para almacenar contactos es crear una lista de contactos. Para ello, las aplicaciones de terceros deben crear la nueva lista de contactos para en UserDataAccount el Almacén de contactos de Windows. Las aplicaciones pueden optar por mantener el tipo de acceso predeterminado OtherAppReadAccess para la lista de contactos, al establecerlo para None impedir que otras aplicaciones tengan acceso a estos contactos. Consulte la enumeración ContactListOtherAppReadAccess para obtener la lista completa de tipos de acceso disponibles.

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

Al almacenar un contacto, las aplicaciones de terceros deben incluir toda la información pertinente necesaria para que las experiencias de Windows abran un contacto.

Se requieren los siguientes campos al almacenar un contacto:

  • FirstName
  • RemoteId
  • DisplayPicture

Los campos siguientes son opcionales:

  • LastName
  • Phones
  • Emails

Este fragmento de código muestra cómo almacenar un contacto:

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

Nota:

Para DisplayName el contacto se construye mediante FirstName y LastName. Si no se proporciona el apellido, DisplayName será idéntico a la cadena proporcionada para el nombre.

Almacenar clasificaciones para contactos

Puede crear una lista de anotaciones para almacenar UserDataAccount las clasificaciones de los contactos. Las aplicaciones pueden almacenar clasificaciones para sus contactos principales agregando anotaciones a los contactos. Estas anotaciones se almacenan como parte de una lista de anotaciones en el almacén de contactos.

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

Puede almacenar las clasificaciones de los contactos principales mediante las anotaciones de los contactos. Las clasificaciones se almacenan como parte de ProviderProperties en una anotación de contacto. Junto con la clasificación, las aplicaciones deben establecer SupportedOperations en una anotación de contacto como 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);
}

Actualización de las clasificaciones de contactos

Es a discreción de las aplicaciones cuando se actualizan las clasificaciones de los contactos almacenados en Windows. Windows recomienda que las listas clasificadas se actualicen periódicamente para proporcionar la mejor experiencia de usuario. Siempre que necesite actualizar una lista clasificada, deberá seguir varios pasos.

  1. Elimine contactAnnotationList.

    Una vez que la aplicación tiene una lista actualizada de contactos principales, se puede eliminar la lista de anotaciones y se puede crear una nueva lista de anotaciones con anotaciones actualizadas para sus contactos principales.

    await this.contactAnnotationList.DeleteAsync();
    
  2. Cree un nuevo ContactAnnotationList. Siga los pasos descritos en la sección Almacenar clasificaciones para contactos para crear una nueva lista de anotaciones y almacenar las clasificaciones de los contactos principales.

Consulte también