Verbinden der App mit Aktionen auf einer Visitenkarte

Ihre App kann neben Aktionen auf einer Visitenkarte oder einer Minikontaktkarte angezeigt werden. Benutzer können Ihre App auswählen, um eine Aktion auszuführen, z. B. eine Profilseite zu öffnen, einen Anruf zu tätigen oder eine Nachricht zu senden.

Visitenkarte und Minikontaktkarte

Suchen Sie zunächst vorhandene Kontakte, oder erstellen Sie neue Kontakte. Erstellen Sie als Nächstes eine Anmerkung und einige Paketmanifesteinträge, um zu beschreiben, welche Aktionen Ihre App unterstützt. Schreiben Sie dann Code, der die Aktionen ausführt.

Ein vollständiges Beispiel finden Sie unter "Beispiel für die Visitenkartenintegration".

Suchen oder Erstellen eines Kontakts

Wenn Ihre App personen bei der Verbindung mit anderen personen hilft, suchen Sie nach Windows nach Kontakten, und kommentieren Sie sie dann. Wenn Ihre App Kontakte verwaltet, können Sie sie einer Windows-Kontaktliste hinzufügen und diese dann kommentieren.

Suchen eines Kontakts

Suchen Sie Kontakte mithilfe eines Namens, einer E-Mail-Adresse oder einer Telefonnummer.

ContactStore contactStore = await ContactManager.RequestStoreAsync();

IReadOnlyList<Contact> contacts = null;

contacts = await contactStore.FindContactsAsync(emailAddress);

Contact contact = contacts[0];

Einen Kontakt erstellen

Wenn Ihre App eher wie ein Adressbuch aussieht, erstellen Sie Kontakte, und fügen Sie sie dann einer Kontaktliste hinzu.

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

Markieren Sie jeden Kontakt mit einer Anmerkung.

Markieren Sie jeden Kontakt mit einer Liste von Aktionen (Vorgängen), die Ihre App ausführen kann (z. B. Videoanrufe und Messaging).

Ordnen Sie dann die ID eines Kontakts einer ID zu, die Ihre App intern verwendet, um diesen Benutzer zu identifizieren.

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

Registrieren für jeden Vorgang

Registrieren Sie im Paketmanifest für jeden Vorgang, den Sie in Ihrer Anmerkung aufgelistet haben.

Registrieren Sie sich, indem Sie dem Extensions Element des Manifests Protokollhandler hinzufügen.

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

Sie können diese auch auf der Registerkarte "Deklarationen " des Manifest-Designers in Visual Studio hinzufügen.

Registerkarte

Suchen Ihrer App neben Aktionen auf einer Visitenkarte

Öffnen Sie die Personen-App. Ihre App wird neben jeder Aktion (Operation) angezeigt, die Sie in Ihrer Anmerkung und im Paketmanifest angegeben haben.

Visitenkarte

Wenn Benutzer Ihre App für eine Aktion auswählen, wird sie beim nächsten Öffnen einer Visitenkarte als Standard-App für diese Aktion angezeigt.

Suchen Ihrer App neben Aktionen auf einer Minikontaktkarte

In Minikontaktkarten wird Ihre App auf Registerkarten angezeigt, die Aktionen darstellen.

Minikontaktkarte

Apps wie die Mail-App öffnen Minikontaktkarten. Ihre App kann sie ebenfalls öffnen. Dieser Code zeigt Ihnen, wie Das geht.

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

}

Weitere Beispiele mit Minikontaktkarten finden Sie im Beispiel "Visitenkarten".

Genau wie bei der Visitenkarte merkt sich jede Registerkarte die App, die der Benutzer zuletzt verwendet hat, damit sie einfach zu Ihrer App zurückkehren können.

Ausführen von Vorgängen, wenn Benutzer Ihre App auf einer Visitenkarte auswählen

Überschreiben Sie die Application.OnActivated-Methode in Ihrer App.cs-Datei , und navigieren Sie zu einer Seite in Ihrer App. Das Beispiel für die Visitenkartenintegration zeigt eine Möglichkeit, dies zu tun.

Überschreiben Sie in der CodeBehind-Datei der Seite die Page.OnNavigatedTo-Methode . Die Visitenkarte übergibt diese Methode den Namen des Vorgangs und die ID des Benutzers.

Informationen zum Starten eines Video- oder Audioanrufs finden Sie in diesem Beispiel: VoIP-Beispiel. Sie finden die vollständige API im WIndows.ApplicationModel.Calls-Namespace .

Informationen zur Erleichterung von Nachrichten finden Sie im Windows.ApplicationModel.Chat-Namespace .

Sie können auch eine andere App starten. Das macht dieser 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);
    }
}

Die args.uri.scheme Eigenschaft enthält den Namen des Vorgangs, und die args.uri.Query Eigenschaft enthält die ID des Benutzers.