Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las aplicaciones con identidad de paquete pueden almacenar sus contactos en Windows. Estos contactos pueden aparecer como sugerencias en el Widget de personas, la Búsqueda de Windows y la hoja para compartir. En este artículo se muestra cómo crear una cuenta de usuario de datos, almacenar contactos y configurar el acceso para experiencias de Windows.
Crear un UserDataAccount para el contrato People
Empiece por crear una cuenta de datos de usuario. Las aplicaciones de terceros deben crear una 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, añada "com.microsoft.windows.system" a la lista de ExplictReadAccessPackageFamilyNames para la cuenta. Esto proporcionará un acceso restringido de los contactos de terceros a las experiencias de Windows.
uda.ExplictReadAccessPackageFamilyNames.Add("com.microsoft.windows.system");
await uda.SaveAsync();
Almacenamiento de 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 un UserDataAccount en el ContactStore de Windows. Las aplicaciones pueden optar por mantener el tipo de acceso predeterminado OtherAppReadAccess para la lista de contactos, mientras que si se establece en None se evitará que otras aplicaciones tengan acceso a estos contactos. Consulte la lista ContactListOtherAppReadAccess enum para ver la lista completa de tipos de acceso.
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 relevante necesaria para que las experiencias de Windows puedan alimentar un Contacto.
Los siguientes campos son obligatorios al almacenar un contacto:
FirstNameRemoteIdDisplayPicture
Los campos siguientes son opcionales:
LastNamePhonesEmails
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);
}
Note
El DisplayName para el Contacto se construye utilizando FirstName y LastName. Si no se proporciona el apellido, DisplayName será idéntico a la cadena proporcionada para el nombre.
Privacidad y consentimiento
Contribuir solo a los contactos específicos
La aplicación debe contribuir solo a los contactos que el usuario ha agregado o autorizado explícitamente. Nunca:
- Cargar toda la libreta de direcciones
- Sincronización automática de contactos sin consentimiento del usuario
- Compartir contactos de directorios corporativos sin permiso explícito
Pida permiso antes de almacenar contactos en Windows People:
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;
}
Respetar la configuración de privacidad del usuario
Permitir a los usuarios:
- Elegir qué contactos compartir con Windows
- Desactivar la integración de Windows People
- Eliminar sus contactos de Windows en cualquier momento
// Provide a setting to disable sync
if (this.ShouldSyncContactsWithWindows)
{
await SyncContactsAsync();
}
else
{
// Clear contacts if the user disables sync
await ClearWindowsContactsAsync();
}