Conectar la aplicación a acciones en una tarjeta de contacto
La aplicación puede aparecer junto a acciones en una tarjeta de contacto o en una tarjeta de contacto mini. Los usuarios pueden elegir tu aplicación para realizar una acción, como abrir una página de perfil, realizar una llamada o enviar un mensaje.
Para empezar, busque contactos existentes o cree nuevos. A continuación, cree una anotación y algunas entradas de manifiesto de paquete para describir qué acciones admite la aplicación. A continuación, escriba código que realice las acciones.
Para obtener un ejemplo más completo, consulte Ejemplo de integración de tarjetas de contacto.
Buscar o crear un contacto
Si la aplicación ayuda a los usuarios a conectarse con otros usuarios, busque contactos de Windows y anotelos. Si la aplicación administra contactos, puedes agregarlos a una lista de contactos de Windows y anotarlos.
Buscar un contacto
Busque contactos mediante un nombre, una dirección de correo electrónico o un número de teléfono.
ContactStore contactStore = await ContactManager.RequestStoreAsync();
IReadOnlyList<Contact> contacts = null;
contacts = await contactStore.FindContactsAsync(emailAddress);
Contact contact = contacts[0];
Cree contactos
Si la aplicación es más similar a una libreta de direcciones, cree contactos y agréguelos a una lista de contactos.
Contact contact = new Contact();
contact.FirstName = "TestContact";
ContactEmail email = new ContactEmail();
email.Address = "TestContact@contoso.com";
email.Kind = ContactEmailKind.Other;
contact.Emails.Add(email);
ContactPhone phone = new ContactPhone();
phone.Number = "4255550101";
phone.Kind = ContactPhoneKind.Mobile;
contact.Phones.Add(phone);
ContactStore store = await
ContactManager.RequestStoreAsync(ContactStoreAccessType.AppContactsReadWrite);
ContactList contactList;
IReadOnlyList<ContactList> contactLists = await store.FindContactListsAsync();
if (0 == contactLists.Count)
contactList = await store.CreateContactListAsync("TestContactList");
else
contactList = contactLists[0];
await contactList.SaveContactAsync(contact);
Etiquetar cada contacto con una anotación
Etiquete cada contacto con una lista de acciones (operaciones) que la aplicación puede realizar (por ejemplo: videollamadas y mensajería).
A continuación, asocie el identificador de un contacto a un identificador que la aplicación usa internamente para identificar a ese usuario.
ContactAnnotationStore annotationStore = await
ContactManager.RequestAnnotationStoreAsync(ContactAnnotationStoreAccessType.AppAnnotationsReadWrite);
ContactAnnotationList annotationList;
IReadOnlyList<ContactAnnotationList> annotationLists = await annotationStore.FindAnnotationListsAsync();
if (0 == annotationLists.Count)
annotationList = await annotationStore.CreateAnnotationListAsync();
else
annotationList = annotationLists[0];
ContactAnnotation annotation = new ContactAnnotation();
annotation.ContactId = contact.Id;
annotation.RemoteId = "user22";
annotation.SupportedOperations = ContactAnnotationOperations.Message |
ContactAnnotationOperations.AudioCall |
ContactAnnotationOperations.VideoCall |
ContactAnnotationOperations.ContactProfile;
await annotationList.TrySaveAnnotationAsync(annotation);
Registro para cada operación
En el manifiesto del paquete, regístrese para cada operación que aparecen en la anotación.
Regístrese agregando controladores de protocolo al Extensions
elemento del manifiesto.
<Extensions>
<uap:Extension Category="windows.protocol">
<uap:Protocol Name="ms-contact-profile">
<uap:DisplayName>TestProfileApp</uap:DisplayName>
</uap:Protocol>
</uap:Extension>
<uap:Extension Category="windows.protocol">
<uap:Protocol Name="ms-ipmessaging">
<uap:DisplayName>TestMsgApp</uap:DisplayName>
</uap:Protocol>
</uap:Extension>
<uap:Extension Category="windows.protocol">
<uap:Protocol Name="ms-voip-video">
<uap:DisplayName>TestVideoApp</uap:DisplayName>
</uap:Protocol>
</uap:Extension>
<uap:Extension Category="windows.protocol">
<uap:Protocol Name="ms-voip-call">
<uap:DisplayName>TestCallApp</uap:DisplayName>
</uap:Protocol>
</uap:Extension>
</Extensions>
También puede agregarlos en la pestaña Declaraciones del diseñador de manifiestos en Visual Studio.
Buscar la aplicación junto a acciones en una tarjeta de contacto
Abra la aplicación Contactos. La aplicación aparece junto a cada acción (operación) que especificó en el manifiesto de anotación y paquete.
Si los usuarios eligen la aplicación para una acción, aparece como la aplicación predeterminada para esa acción la próxima vez que los usuarios abran una tarjeta de contacto.
Buscar la aplicación junto a acciones en una tarjeta de mini contacto
En las tarjetas de mini contacto, la aplicación aparece en pestañas que representan acciones.
Las aplicaciones, como la aplicación Correo, abren tarjetas de contacto mini. La aplicación también puede abrirlas. Este código muestra cómo hacerlo.
public async void OpenContactCard(object sender, RoutedEventArgs e)
{
// Get the selection rect of the button pressed to show contact card.
FrameworkElement element = (FrameworkElement)sender;
Windows.UI.Xaml.Media.GeneralTransform buttonTransform = element.TransformToVisual(null);
Windows.Foundation.Point point = buttonTransform.TransformPoint(new Windows.Foundation.Point());
Windows.Foundation.Rect rect =
new Windows.Foundation.Rect(point, new Windows.Foundation.Size(element.ActualWidth, element.ActualHeight));
// helper method to find a contact just for illustrative purposes.
Contact contact = await findContact("contoso@contoso.com");
ContactManager.ShowContactCard(contact, rect, Windows.UI.Popups.Placement.Default);
}
Para ver más ejemplos con tarjetas de contacto mini, consulte Ejemplo de tarjetas de contacto.
Al igual que la tarjeta de contacto, cada pestaña recuerda la aplicación que el usuario usó por última vez para que sea fácil volver a la aplicación.
Realizar operaciones cuando los usuarios seleccionan la aplicación en una tarjeta de contacto
Invalide el método Application.OnActivated en el archivo App.cs y navegue a los usuarios a una página de la aplicación. El ejemplo de integración de tarjeta de contacto muestra una manera de hacerlo.
En el archivo de código subyacente de la página, invalide el método Page.OnNavigatedTo . La tarjeta de contacto pasa este método el nombre de la operación y el identificador del usuario.
Para iniciar una llamada de vídeo o audio, consulte este ejemplo: Ejemplo de VoIP. Encontrará la API completa en el espacio de nombres WIndows.ApplicationModel.Calls .
Para facilitar la mensajería, consulte el espacio de nombres Windows.ApplicationModel.Chat .
También puede iniciar otra aplicación. Eso es lo que hace este código.
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
var args = e.Parameter as ProtocolActivatedEventArgs;
// Display the result of the protocol activation if we got here as a result of being activated for a protocol.
if (args != null)
{
var options = new Windows.System.LauncherOptions();
options.DisplayApplicationPicker = true;
options.TargetApplicationPackageFamilyName = "ContosoApp";
string launchString = args.uri.Scheme + ":" + args.uri.Query;
var launchUri = new Uri(launchString);
await Windows.System.Launcher.LaunchUriAsync(launchUri, options);
}
}
La args.uri.scheme
propiedad contiene el nombre de la operación y la args.uri.Query
propiedad contiene el identificador del usuario.