Conectar seu app a ações em um cartão de contato
Seu aplicativo pode aparecer ao lado de ações em um cartão de visita ou mini-cartão de visita. Os usuários podem escolher seu aplicativo para executar uma ação, como abrir uma página de perfil, fazer uma chamada ou enviar uma mensagem.
Para começar, encontre contatos existentes ou crie novos. Em seguida, crie uma anotação e algumas entradas de manifesto de pacote para descrever quais ações seu aplicativo dá suporte. Em seguida, escreva o código que executa as ações.
Para obter um exemplo mais completo, consulte Exemplo de integração de cartão de visita.
Localizar ou criar um contato
Se o seu aplicativo ajudar as pessoas a se conectarem com outras pessoas, pesquise contatos no Windows e faça anotações neles. Se o seu aplicativo gerencia contatos, você pode adicioná-los a uma lista de contatos do Windows e anotá-los.
Encontre um contato
Encontre contatos usando um nome, endereço de e-mail ou número de telefone.
ContactStore contactStore = await ContactManager.RequestStoreAsync();
IReadOnlyList<Contact> contacts = null;
contacts = await contactStore.FindContactsAsync(emailAddress);
Contact contact = contacts[0];
Criar um contato
Se o seu aplicativo for mais parecido com um catálogo de endereços, crie contatos e adicione-os a uma lista de contatos.
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);
Marque cada contato com uma anotação
Marque cada contato com uma lista de ações (operações) que seu aplicativo pode executar (por exemplo: chamadas de vídeo e mensagens).
Em seguida, associe a ID de um contato a uma ID que seu aplicativo usa internamente para identificar esse usuário.
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);
Registre-se para cada operação
No manifesto do pacote, registre-se para cada operação listada na anotação.
Registre-se adicionando manipuladores de protocolo ao Extensions
elemento do manifesto.
<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>
Você também pode adicioná-los na guia Declarações do designer de manifesto no Visual Studio.
Localizar seu aplicativo ao lado de ações em um cartão de visita
Abra o aplicativo Pessoas. Seu aplicativo aparece ao lado de cada ação (operação) que você especificou na anotação e no manifesto do pacote.
Se os usuários escolherem seu aplicativo para uma ação, ele aparecerá como o aplicativo padrão para essa ação na próxima vez que os usuários abrirem um cartão de visita.
Localizar seu aplicativo ao lado de ações em um mini cartão de visita
Em minicartões de visita, seu aplicativo aparece em guias que representam ações.
Aplicativos como o aplicativo Mail abrem mini cartões de contato. Seu aplicativo também pode abri-los. Este código mostra como fazer isso.
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 mais exemplos com mini cartões de visita, consulte Exemplo de cartões de visita.
Assim como o cartão de visita, cada guia lembra o aplicativo que o usuário usou pela última vez, para que seja fácil para ele retornar ao seu aplicativo.
Executar operações quando os usuários selecionam seu aplicativo em um cartão de visita
Substitua o método Application.OnActivated no arquivo App.cs e navegue os usuários para uma página no aplicativo. O Exemplo de Integração de Cartão de Visita mostra uma maneira de fazer isso.
No arquivo code-behind da página, substitua o método Page.OnNavigatedTo . O cartão de visita passa a esse método o nome da operação e a ID do usuário.
Para iniciar uma chamada de vídeo ou áudio, consulte este exemplo: Exemplo de VoIP. Você encontrará a API completa no namespace WIndows.ApplicationModel.Calls .
Para facilitar o sistema de mensagens, consulte o namespace Windows.ApplicationModel.Chat .
Você também pode iniciar outro aplicativo. É isso que este código faz.
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);
}
}
A args.uri.scheme
propriedade contém o nome da operação e a args.uri.Query
propriedade contém a ID do usuário.