Włącz akcje komunikacyjne dla kontaktów

Adnotacje kontaktowe opisują akcje komunikacyjne obsługiwane przez aplikację dla kontaktu, takie jak wyświetlanie profilu, wysyłanie wiadomości lub dzwonienie. W tym artykule pokazano, jak zadeklarować te możliwości i jak Windows otwiera odpowiedni kontakt w aplikacji.

Przed rozpoczęciem dodaj swoje kontakty do systemu Windows.

Deklarowanie obsługiwanych operacji komunikacyjnych

Aplikacje mogą zadeklarować możliwości komunikacji obsługiwane dla kontaktu przy użyciu właściwości SupportedOperations w ContactAnnotation.

Właściwość SupportedOperations określa typy akcji komunikacyjnych, które aplikacja obsługuje do interakcji z kontaktem. Te operacje są definiowane przez wyliczenie ContactAnnotationOperations .

Ponieważ ContactAnnotationOperations jest to wyliczenie flag, można połączyć wiele operacji przy użyciu operatora binarnego OR (|). Dzięki temu aplikacje mogą wskazywać wszystkie obsługiwane możliwości komunikacji dla kontakt w jednej adnotacji. Aby uzyskać więcej informacji na temat tej właściwości, zobacz dokumentację interfejsu API ContactAnnotation.SupportedOperations.

W poniższym przykładzie pokazano, jak zadeklarować obsługiwane operacje komunikacji dla kontaktu.

var annotation = new ContactAnnotation
{
    ContactId = contact.Id,
    RemoteId = contact.RemoteId,
    SupportedOperations =
        ContactAnnotationOperations.ContactProfile |
        ContactAnnotationOperations.Message |
        ContactAnnotationOperations.AudioCall |
        ContactAnnotationOperations.VideoCall |
        ContactAnnotationOperations.SocialFeeds
};

await this.contactAnnotationList.TrySaveAnnotationAsync(annotation);

W tym przykładzie adnotacja deklaruje systemowi Windows, że aplikacja obsługuje wyświetlanie profilu kontaktu, wysyłanie wiadomości, nawiązywanie połączeń audio lub wideo oraz uzyskiwanie dostępu do aktualizacji kanałów społecznościowych dla określonego kontaktu.

Aplikacje powinny ustawić obsługiwane operacje, aby dokładnie reprezentować możliwości interakcji i komunikacji dostępne dla danego kontaktu w aplikacji.

Obsłuż włączenie komunikacji

Gdy użytkownicy wybierają akcję komunikacji z interfejsu Windows, Windows uruchamia aplikację przy użyciu zarejestrowanego protokołu URI i przekazuje do aplikacji element RemoteId kontaktu.

Następujące schematy identyfikatorów URI odpowiadają wartościom ContactAnnotationOperations .

Operation Schemat identyfikatora URI SupportedOperations flaga
Call ms-voip-call: AudioCall
wideo ms-voip-video: VideoCall
Message ms-ipmessaging: Message
Profile ms-contact-profile: ContactProfile

Jeśli na przykład aplikacja deklaruje AudioCall | VideoCall, Windows może aktywować aplikację za pomocą identyfikatora URI, takiego jak:

ms-voip-video:<RemoteId>

<RemoteId> jest tą samą RemoteId wartością przechowywaną na ContactAnnotation. Użyj go, aby zlokalizować odpowiedniego użytkownika lub rozmowę w aplikacji i uruchomić żądane działanie.

Rejestruj schematy identyfikatorów URI tylko dla operacji, które obsługuje aplikacja. Windows udostępnia akcję komunikacji tylko wtedy, gdy dostępna jest odpowiednia rejestracja protokołu.

Zarejestruj schematy URI

Zadeklaruj każdy schemat URI w manifeście pakietu jako rozszerzenie windows.protocol. Poniższy przykład rejestruje protokoły do wyświetlania profilów, wysyłania wiadomości, połączeń audio i połączeń wideo.

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