애플리케이션에 내 피플 지원 추가Adding My People support to an application

참고

Windows 10에서 2019 업데이트 (버전 1903)를 기준으로 새 Windows 10 설치에는 기본적으로 ' 작업 표시줄의 사람 '이 더 이상 표시 되지 않습니다.As of the Windows 10 May 2019 Update (version 1903), new Windows 10 installations will no longer show ‘People in the taskbar’ by default. 고객은 작업 표시줄을 마우스 오른쪽 단추로 클릭 하 고 "작업 표시줄에 사람 표시"를 눌러 기능을 사용 하도록 설정할 수 있습니다.Customers can enable the feature by right-clicking on the taskbar and pressing “Show People on the taskbar.” 개발자는 내 사용자 지원을 응용 프로그램에 추가 하지 않는 것이 좋습니다. windows 10 용 응용 프로그램을 최적화 하는 방법에 대 한 자세한 내용은 Windows 개발자 블로그 를 참조 하세요.Developers are discouraged from adding My People support to their applications, and should visit the Windows Developer Blog for more information about optimizing apps for Windows 10.

사용자는 내 사용자 기능을 사용 하 여 응용 프로그램의 연락처를 작업 표시줄에 직접 고정할 수 있습니다. 그러면 여러 가지 방법으로 상호 작용할 수 있는 새 연락처 개체가 만들어집니다.The My People feature allows users to pin contacts from an application directly to their taskbar, which creates a new contact object that they can interact with in several ways. 이 문서에서는 사용자가 앱에서 직접 연락처를 고정할 수 있도록이 기능에 대 한 지원을 추가 하는 방법을 보여 줍니다.This article shows how you can add support for this feature, allowing users to pin contacts directly from your app. 연락처가 고정 되어 있으면 내 사용자 공유알림과같은 새로운 유형의 사용자 상호 작용을 사용할 수 있게 됩니다.When contacts are pinned, new types of user interaction become available, such as My People sharing and notifications.

내 사용자 채팅

요구 사항Requirements

개요Overview

응용 프로그램에서 내 사용자 기능을 사용할 수 있도록 하려면 다음 세 가지 작업을 수행 해야 합니다.There are three things you need to do to enable your application to use the My People feature:

  1. 응용 프로그램 매니페스트에서 Windows.sharetarget 활성화 계약에 대 한 지원을 선언 합니다.Declare support for the shareTarget activation contract in your application manifest.
  2. 사용자가 앱을 사용 하 여 공유할 수 있는 연락처에 주석을 추가 합니다.Annotate the contacts that the users can share to using your app.
  3. 동시에 실행 되는 응용 프로그램의 여러 인스턴스를 지원 합니다.Support multiple instances of your application running at the same time. 사용자는 연락처 패널에서 응용 프로그램을 사용 하는 동안 전체 버전의 응용 프로그램과 상호 작용할 수 있어야 합니다.Users must be able to interact with a full version of your application while using it in a contact panel. 여러 연락처 패널에서 한 번에 사용할 수도 있습니다.They may even use it in multiple contact panels at once. 이를 지원 하기 위해 응용 프로그램은 여러 보기를 동시에 실행할 수 있어야 합니다.To support this, your application needs to be able to run multiple views simultaneously. 이 작업을 수행 하는 방법에 대 한 자세한 내용은 "앱에 대 한 여러 뷰 표시"문서를 참조 하세요.To learn how to do this, see the article "show multiple views for an app".

이 작업을 완료 하면 주석이 추가 된 연락처에 대 한 연락처 패널에 응용 프로그램이 표시 됩니다.When you’ve done this, your application will appear in the contact panel for annotated contacts.

계약에 대 한 지원 선언Declaring support for the contract

내 사용자 계약에 대 한 지원을 선언 하려면 Visual Studio에서 응용 프로그램을 엽니다.To declare support for the My People contract, open your application in Visual Studio. 솔루션 탐색기에서 appxmanifest.xml 을 마우스 오른쪽 단추로 클릭 하 고 연결 프로그램을 선택 합니다.From the Solution Explorer, right click Package.appxmanifest and select Open With. 메뉴에서 XML (텍스트) 편집기) 를 선택 하 고 확인을 클릭 합니다.From the menu, select XML (Text) Editor) and click OK. 매니페스트를 다음과 같이 변경 합니다.Make the following changes to the manifest:

이전Before

<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10">

    <Applications>
        <Application Id="MyApp"
          Executable="$targetnametoken$.exe"
          EntryPoint="My.App">
        </Application>
    </Applications>

이후After

<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:uap4="http://schemas.microsoft.com/appx/manifest/uap/windows10/4">

    <Applications>
        <Application Id="MyApp"
          Executable="$targetnametoken$.exe"
          EntryPoint="My.App">
          <Extensions>
            <uap4:Extension Category="windows.contactPanel" />
          </Extensions>
        </Application>
    </Applications>

이 외에도 이제 windows를 통해 응용 프로그램을 시작할 수 있습니다 **. ** 연락처 패널과 상호 작용할 수 있게 해 주는 연락처 패널 계약입니다.With this addition, your application can now be launched through the windows.ContactPanel contract, which allows you to interact with contact panels.

연락처에 주석 달기Annotating contacts

응용 프로그램의 연락처를 내 사용자 창에서 작업 표시줄에 표시 하도록 허용 하려면 Windows 연락처 저장소에 기록해 야 합니다.To allow contacts from your application to appear in the taskbar via the My People pane, you need to write them to the Windows contact store. 연락처를 작성 하는 방법에 대 한 자세한 내용은 Contact Card 샘플을 참조 하세요.To learn how to write contacts, see the Contact Card sample.

또한 응용 프로그램은 각 연락처에 주석을 써야 합니다.Your application must also write an annotation to each contact. 주석은 응용 프로그램에서 연락처와 연결 된 데이터의 일부입니다.Annotations are pieces of data from your application that are associated with a contact. 주석은 해당 Providerproperties 멤버에서 원하는 뷰에 해당 하는 활성화 가능한 클래스를 포함 해야 하며, 동료 프로필 작업에 대 한 지원을 선언 해야 합니다.The annotation must contain the activatable class corresponding to your desired view in its ProviderProperties member, and declare support for the ContactProfile operation.

앱이 실행 되는 동안 언제 든 지 연락처에 주석을 추가할 수 있지만, 일반적으로 Windows 연락처 저장소에 추가 되는 즉시 연락처에 주석을 추가 해야 합니다.You can annotate contacts at any point while your app is running, but generally you should annotate contacts as soon as they are added to the Windows contact store.

if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5))
{
    // Create a new contact annotation
    ContactAnnotation annotation = new ContactAnnotation();
    annotation.ContactId = myContact.Id;

    // Add appId and contact panel support to the annotation
    String appId = "MyApp_vqvv5s4y3scbg!App";
    annotation.ProviderProperties.Add("ContactPanelAppID", appId);
    annotation.SupportedOperations = ContactAnnotationOperations.ContactProfile;

    // Save annotation to contact annotation list
    // Windows.ApplicationModel.Contacts.ContactAnnotationList 
    await contactAnnotationList.TrySaveAnnotationAsync(annotation));
}

"AppId"는 패키지 제품군 이름 뒤에 '! '가 옵니다.The “appId” is the Package Family Name, followed by ‘!’ 및 활성화 가능한 클래스 ID입니다.and the activatable class ID. 패키지 제품군 이름을 찾으려면 기본 편집기를 사용 하 여 appxmanifest.xml 를 열고 "패키징" 탭을 확인 합니다. 여기서 "App"은 응용 프로그램 시작 뷰에 해당 하는 활성화 가능한 클래스입니다.To find your Package Family Name, open Package.appxmanifest using the default editor, and look in the “Packaging” tab. Here, “App” is the activatable class corresponding to the application startup view.

연락처에 새 잠재적 사용자 초대 허용Allow contacts to invite new potential users

기본적으로 응용 프로그램은 특별히 주석이 추가 된 연락처에 대 한 연락처 패널에만 표시 됩니다.By default, your application will only appear in the contact panel for contacts that you have specifically annotated. 이는 앱을 통해 상호 작용할 수 없는 연락처와 혼동 하지 않도록 하기 위한 것입니다.This is to avoid confusion with contacts that can’t be interacted with through your app. 응용 프로그램에서 알지 못하는 연락처에 대해 응용 프로그램을 표시 하려면 (예: 사용자에 게 해당 사용자를 계정에 추가 하도록 초대 하는 경우) 다음을 매니페스트에 추가 하면 됩니다.If you want your application to appear for contacts that your application doesn’t know about (to invite users to add that contact to their account, for instance), you can add the following to your manifest:

이전Before

<Applications>
    <Application Id="MyApp"
      Executable="$targetnametoken$.exe"
      EntryPoint="My.App">
      <Extensions>
        <uap4:Extension Category="windows.contactPanel" />
      </Extensions>
    </Application>
</Applications>

이후After

<Applications>
    <Application Id="MyApp"
      Executable="$targetnametoken$.exe"
      EntryPoint="My.App">
      <Extensions>
        <uap4:Extension Category="windows.contactPanel">
            <uap4:ContactPanel SupportsUnknownContacts="true" />
        </uap4:Extension>
      </Extensions>
    </Application>
</Applications>

이 변경으로 응용 프로그램은 사용자가 고정 한 모든 연락처에 대 한 연락처 패널에 사용할 수 있는 옵션으로 표시 됩니다.With this change, your application will appear as an available option in the contact panel for all contacts that the user has pinned. 연락처 패널 계약을 사용 하 여 응용 프로그램을 활성화 한 경우에는 응용 프로그램에서 알고 있는 연락처 인지 확인 해야 합니다.When your application is activated using the contact panel contract, you should check to see if the contact is one your application knows about. 그렇지 않은 경우 앱의 새 사용자 환경을 표시 해야 합니다.If not, you should show your app’s new user experience.

내 피플 연락처 패널

전자 메일 앱에 대 한 지원Support for email apps

전자 메일 앱을 작성 하는 경우 모든 연락처에 수동으로 주석을 추가할 필요가 없습니다.If you are writing an email app, you don’t need to annotate every contact manually. 연락처 창과 mailto: 프로토콜에 대 한 지원을 선언 하면 응용 프로그램이 전자 메일 주소를 가진 사용자에 대해 자동으로 표시 됩니다.If you declare support for the contact pane and for the mailto: protocol, your application will automatically appear for users with an email address.

연락처 패널에서 실행Running in the contact panel

이제 응용 프로그램이 일부 또는 모든 사용자에 대 한 연락처 패널에 표시 되었으므로 연락처 패널 계약을 사용 하 여 정품 인증을 처리 해야 합니다.Now that your application appears in the contact panel for some or all users, you need to handle activation with the contact panel contract.

override protected void OnActivated(IActivatedEventArgs e)
{
    if (e.Kind == ActivationKind.ContactPanel)
    {
        // Create a Frame to act as the navigation context and navigate to the first page
        var rootFrame = new Frame();

        // Place the frame in the current Window
        Window.Current.Content = rootFrame;

        // Navigate to the page that shows the Contact UI.
        rootFrame.Navigate(typeof(ContactPage), e);

        // Ensure the current window is active
        Window.Current.Activate();
    }
}

이 계약을 사용 하 여 응용 프로그램이 활성화 되 면 ContactPanelActivatedEventArgs 개체가수신 됩니다.When your application is activated with this contract, it will receive a ContactPanelActivatedEventArgs object. 여기에는 시작 시 응용 프로그램에서 상호 작용을 시도 하는 연락처의 ID와 지 수 패널 개체가 포함 됩니다.This contains the ID of the Contact that your application is trying to interact with on launch, and a ContactPanel object. 패널과 상호 작용할 수 있게 해 주는이 교류 패널 개체에 대 한 참조를 유지 해야 합니다.You should keep a reference to this ContactPanel object, which will allow you to interact with the panel.

연락처 패널 개체에는 응용 프로그램에서 수신 해야 하는 두 개의 이벤트가 있습니다.The ContactPanel object has two events your application should listen for:

  • 사용자가 전체 응용 프로그램을 자체 창에서 시작 하도록 요청 하는 UI 요소를 호출 하면 Launchfullapprequested 이벤트가 전송 됩니다.The LaunchFullAppRequested event is sent when the user has invoked the UI element that requests that your full application be launched in its own window. 응용 프로그램은 자체를 시작 하 여 필요한 모든 컨텍스트를 전달 합니다.Your application is responsible for launching itself, passing along all necessary context. 이 작업은 무료로 수행할 수 있지만 (예: 프로토콜 시작을 통해)You are free to do this however you’d like (for example, via protocol launch).
  • 닫기 이벤트 는 응용 프로그램이 닫힐 때 전송 되므로 모든 컨텍스트를 저장할 수 있습니다.The Closing event is sent when your application is about to be closed, allowing you to save any context.

또한 연락처 패널 개체를 사용 하 여 연락처 패널 헤더의 배경색을 설정 (설정 되지 않은 경우 기본값은 시스템 테마) 하 고 프로그래밍 방식으로 연락처 패널을 닫을 수 있습니다.The ContactPanel object also allows you to set the background color of the contact panel header (if not set, it will default to the system theme) and to programmatically close the contact panel.

알림 배지 지원Supporting notification badging

앱에서 새 알림이 도착할 때 작업 표시줄에 고정 된 연락처를 직장 배지가 달린 하려면 알림 메시지힌트- person 매개 변수를 포함 하 고 내 사용자 알림을표현 해야 합니다.If you want contacts pinned to the taskbar to be badged when new notifications arrive from your app that are related to that person, then you must include the hint-people parameter in your toast notifications and expressive My People notifications.

사용자 알림 배지

연락처를 배지 하려면 최상위 알림 노드에 전송 또는 관련 연락처를 나타내는 hint 매개 변수를 포함 해야 합니다.To badge a contact, the top-level toast node must include the hint-people parameter to indicate the sending or related contact. 이 매개 변수는 다음 값 중 하나를 가질 수 있습니다.This parameter can have any of the following values:

  • 메일 주소Email address
    • 예를 들어E.g. mailto:johndoe@mydomain.commailto:johndoe@mydomain.com
  • 전화 번호Telephone number
    • 예를 들어E.g. tel: 888-888-8888tel:888-888-8888
  • 원격 IDRemote ID
    • 예를 들어E.g. remoteid: 1234remoteid:1234

다음은 특정 사용자와 관련 된 알림 메시지를 식별 하는 방법의 예입니다.Here is an example of how to identify a toast notification is related to a specific person:

<toast hint-people="mailto:johndoe@mydomain.com">
    <visual lang="en-US">
        <binding template="ToastText01">
            <text>John Doe posted a comment.</text>
        </binding>
    </visual>
</toast>

참고

앱이 지 속성 저장소 api 를 사용 하 고 StoredContact 속성을 사용 하 여 PC에 저장 된 연락처를 원격으로 저장 된 연락처와 연결 하는 경우 RemoteId 속성의 값을 안정적이 고 고유 하 게 설정 하는 것이 중요 합니다.If your app uses the ContactStore APIs and uses the StoredContact.RemoteId property to link contacts stored on the PC with contacts stored remotely, it is essential that the value for the RemoteId property is both stable and unique. 즉, 원격 ID는 단일 사용자 계정을 일관 되 게 식별 해야 하며 다른 앱에서 소유 하는 연락처를 비롯 하 여 PC의 다른 연락처에 대 한 원격 Id와 충돌 하지 않도록 보장 하는 고유한 태그를 포함 해야 합니다.This means that the remote ID must consistently identify a single user account and should contain a unique tag to guarantee that it does not conflict with the remote IDs of other contacts on the PC, including contacts that are owned by other apps. 앱에서 사용 하는 원격 Id가 안정적이 고 고유 하지 않을 수 있는 경우이 항목의 뒷부분에 나와 있는 RemoteIdHelper 클래스를 사용 하 여 시스템에 추가 하기 전에 모든 원격 Id에 고유한 태그를 추가할 수 있습니다.If the remote IDs used by your app are not guaranteed to be stable and unique, you can use the RemoteIdHelper class shown later in this topic in order to add a unique tag to all of your remote IDs before you add them to the system. 또는 RemoteId 속성을 전혀 사용 하지 않도록 선택 하 고 대신 연락처에 대 한 원격 Id를 저장할 사용자 지정 확장 속성을 만들 수 있습니다.Or you can choose to not use the RemoteId property at all and instead you create a custom extended property in which to store remote IDs for your contacts.

Pinne6stcmanager 클래스The PinnedContactManager class

고정 된 연락처 관리자 는 작업 표시줄에 고정 된 연락처를 관리 하는 데 사용 됩니다.The PinnedContactManager is used to manage which contacts are pinned to the taskbar. 이 클래스를 사용 하 여 연락처를 고정 및 고정 해제 하 고, 연락처가 고정 되는지 여부를 확인 하 고, 응용 프로그램이 현재 실행 중인 시스템에서 특정 화면에 대 한 고정이 지원 되는지 여부를 결정할 수 있습니다.This class lets you pin and unpin contacts, determine whether a contact is pinned, and determine if pinning on a particular surface is supported by the system your application is currently running on.

Getdefault 메서드를 사용 하 여 Pinnewstcmanager 개체를 검색할 수 있습니다.You can retrieve the PinnedContactManager object using the GetDefault method:

PinnedContactManager pinnedContactManager = PinnedContactManager.GetDefault();

연락처 고정 및 고정 해제Pinning and unpinning contacts

이제 방금 만든 PinnedContactManager를 사용 하 여 연락처를 고정 및 고정 해제할 수 있습니다.You can now pin and unpin contacts using the PinnedContactManager you just created. RequestPinContactAsyncRequestUnpinContactAsync 메서드는 사용자에 게 확인 대화 상자를 제공 하므로 응용 프로그램의 단일 스레드 아파트 (ASTA 또는 UI) 스레드에서 호출 해야 합니다.The RequestPinContactAsync and RequestUnpinContactAsync methods provide the user with confirmation dialogs, so they must be called from your Application Single-Threaded Apartment (ASTA, or UI) thread.

async void PinContact (Contact contact)
{
    await pinnedContactManager.RequestPinContactAsync(contact,
                                                      PinnedContactSurface.Taskbar);
}

async void UnpinContact (Contact contact)
{
    await pinnedContactManager.RequestUnpinContactAsync(contact,
                                                        PinnedContactSurface.Taskbar);
}

동시에 여러 연락처를 고정할 수도 있습니다.You can also pin multiple contacts at the same time:

async Task PinMultipleContacts(Contact[] contacts)
{
    await pinnedContactManager.RequestPinContactsAsync(
        contacts, PinnedContactSurface.Taskbar);
}

참고

현재 연락처를 고정 해제 하기 위한 일괄 처리 작업이 없습니다.There is currently no batch operation for unpinning contacts.

참고:Note:

참고 항목See also