Connecter votre application à des actions sur une carte de visite

Votre application peut apparaître en regard d’actions sur une carte de visite ou une mini carte de visite. Les utilisateurs peuvent choisir votre application pour effectuer une action telle qu’ouvrir une page de profil, effectuer un appel ou envoyer un message.

Carte de visite et mini carte de visite

Pour commencer, recherchez des contacts existants ou créez-en de nouveaux. Ensuite, créez une annotation et quelques entrées de manifeste de package pour décrire les actions prises en charge par votre application. Ensuite, écrivez du code qui effectue les actions.

Pour obtenir un exemple plus complet, consultez l’exemple d’intégration de carte de visite.

Rechercher ou créer un contact

Si votre application aide les personnes à se connecter avec d’autres personnes, recherchez des contacts dans Windows, puis annotez-les. Si votre application gère les contacts, vous pouvez les ajouter à une liste de contacts Windows, puis les annoter.

Rechercher un contact

Recherchez des contacts à l’aide d’un nom, d’une adresse e-mail ou d’un numéro de téléphone.

ContactStore contactStore = await ContactManager.RequestStoreAsync();

IReadOnlyList<Contact> contacts = null;

contacts = await contactStore.FindContactsAsync(emailAddress);

Contact contact = contacts[0];

Créer un contact

Si votre application est plus semblable à un carnet d’adresses, créez des contacts, puis ajoutez-les à une liste de contacts.

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

Étiqueter chaque contact avec une annotation

Étiquetez chaque contact avec une liste d’actions (opérations) que votre application peut effectuer (par exemple : appels vidéo et messagerie).

Ensuite, associez l’ID d’un contact à un ID que votre application utilise en interne pour identifier cet utilisateur.

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

S’inscrire à chaque opération

Dans votre manifeste de package, inscrivez-vous pour chaque opération que vous avez répertoriée dans votre annotation.

Inscrivez-vous en ajoutant des gestionnaires de protocole à l’élément Extensions du manifeste.

<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>

Vous pouvez également les ajouter dans l’onglet Déclarations du concepteur de manifeste dans Visual Studio.

Onglet Déclarations du concepteur de manifestes

Rechercher votre application en regard d’actions dans une carte de visite

Ouvrez l’application Contacts. Votre application apparaît en regard de chaque action (opération) que vous avez spécifiée dans votre manifeste d’annotation et de package.

Carte de visite

Si les utilisateurs choisissent votre application pour une action, elle apparaît comme application par défaut pour cette action la prochaine fois que les utilisateurs ouvrent une carte de visite.

Rechercher votre application en regard d’actions dans une mini carte de visite

Dans les mini cartes de visite, votre application apparaît sous des onglets qui représentent des actions.

Mini carte de visite

Les applications telles que l’application Courrier ouvrent des mini-cartes de visite. Votre application peut également les ouvrir. Ce code vous montre comment procéder.

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

}

Pour afficher d’autres exemples avec des mini-cartes de visite, consultez l’exemple de cartes de visite.

Tout comme la carte de visite, chaque onglet mémorise l’application que l’utilisateur a utilisée pour la dernière fois afin qu’il soit facile de revenir à votre application.

Effectuer des opérations lorsque les utilisateurs sélectionnent votre application dans une carte de visite

Remplacez la méthode Application.OnActivated dans votre fichier App.cs et naviguez les utilisateurs vers une page de votre application. L’exemple d’intégration de carte de visite montre un moyen de le faire.

Dans le fichier code-behind de la page, remplacez la méthode Page.OnNavigatedTo . La carte de visite transmet ce nom d’opération et l’ID de l’utilisateur.

Pour démarrer un appel vidéo ou audio, consultez cet exemple : exemple VoIP. Vous trouverez l’API complète dans l’espace de noms WIndows.ApplicationModel.Calls .

Pour faciliter la messagerie, consultez l’espace de noms Windows.ApplicationModel.Chat .

Vous pouvez également démarrer une autre application. C’est ce que fait ce code.

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 propriété contient le nom de l’opération et la args.uri.Query propriété contient l’ID de l’utilisateur.