UWP 디바이스 앱에서 인쇄 알림 작업

Windows 8.1에서 UWP 디바이스 앱은 v4 인쇄 드라이버에서 전송되는 양방향 통신(Bidi) 이벤트에 응답할 수 있습니다. 이 항목에서는 인쇄 알림을 소개하고 인쇄 설정 및 인쇄 알림 샘플의 C# 버전에서 백그라운드 작업을 사용하여 인쇄 알림에 응답하는 방법을 보여 줍니다. 백그라운드 작업은 로컬 앱 데이터 저장소에 알림 세부 정보를 저장하고, 알림을 보내고, 타일 및 배지를 업데이트하는 방법을 보여 줍니다. 일반적으로 UWP 디바이스 앱에 대한 자세한 내용은 UWP 디바이스 앱 모임을 참조 하세요.

인쇄 설정 및 인쇄 알림 샘플의 C# 버전은 BackgroundTask 프로젝트에서 앱의 백그라운드 부분(백그라운드 작업)을 보여 줍니다. 백그라운드 작업에 대한 코드는 PrintBackgroundTask.cs 파일에 있습니다. 시작에서 시작할 수 있는 전체 화면 앱인 포그라운드 앱DeviceAppForPrinters 프로젝트에 있습니다. InkLevel.xaml.cs 파일은 포그라운드 앱에서 알림 세부 정보에 액세스할 수 있는 한 가지 방법을 보여줍니다. 인쇄 알림을 사용하기 위해 샘플에서는 PrinterExtensionLibrary 프로젝트의 프린터 확장 라이브러리를 사용합니다. 프린터 확장 라이브러리는 v4 인쇄 드라이버의 프린터 확장 인터페이스에 액세스하는 편리한 방법을 제공합니다. 자세한 내용은 프린터 확장 라이브러리 개요참조하세요.

이 항목에 표시된 코드 예제는 인쇄 설정 및 인쇄 알림 샘플의 C# 버전을 기반으로 합니다 . 이 샘플은 JavaScript 및 C++에서도 사용할 수 있습니다. C++는 COM에 직접 액세스할 수 있으므로 샘플의 C++ 버전에는 코드 라이브러리 프로젝트가 포함되지 않습니다. 샘플을 다운로드하여 최신 버전의 코드를 확인합니다.

인쇄 알림을 통해 UWP 디바이스 앱은 용지 걸림, 프린터 문 열기, 낮은 잉크 수준 또는 프린터 출력 오류와 같이 인쇄하는 동안 중요한 프린터 이벤트를 사용자에게 알릴 수 있습니다. 프린터에서 알림을 트리거하면 시스템 이벤트 브로커가 앱의 백그라운드 작업을 실행합니다. 여기에서 백그라운드 작업은 알림 세부 정보를 저장하거나, 알림을 보내거나, 타일을 업데이트하거나, 배지를 업데이트하거나, 아무 작업도 수행하지 않을 수 있습니다. 알림 세부 정보를 저장하면 앱에서 사용자가 프린터 문제를 이해하고 해결하는 데 도움이 되는 환경을 제공할 수 있습니다.

프린터 제조업체는 UWP 디바이스 앱에서 인쇄 알림을 사용하려면 v4 인쇄 드라이버에서 Bidi 및 DriverEvent XML 파일을 구현해야 합니다. 자세한 내용은 양방향 통신을 참조 하세요.

DriverEvent가 발생하고 UWP 디바이스 앱의 백그라운드 작업이 시작되면 앱에 진행 방법에 대한 몇 가지 옵션이 있습니다. 작업 시작으로 이어지는 흐름에 대한 자세한 내용은 사용자 지정된 UI에 대한 드라이버 지원을 참조하세요.

백그라운드 작업은 다음을 선택할 수 있습니다.

타일 알림 또는 알림 메시지를 사용하면 사용자가 포그라운드 앱을 편리하게 시작할 수 있습니다. 포그라운드 앱이 시작되면 App.xaml.cs 메서드를 사용하여 OnLaunched 타일 또는 알림에 의해 시작된 경우 검사 수 있습니다. 이 경우 포그라운드 앱은 로컬 앱 데이터 저장소인쇄 알림 세부 정보에 액세스할 수 있습니다.

필수 조건

시작하기 전에 다음을 수행합니다.

  1. v4 인쇄 드라이버를 사용하여 프린터가 설치되어 있는지 확인합니다. 자세한 내용은 v4 인쇄 드라이버 개발을 참조 하세요.

  2. 개발 PC를 설정합니다. 도구 다운로드 및 개발자 계정 만들기에 대한 자세한 내용은 시작 정보를 참조하세요.

  3. 스토어와 앱을 연결합니다. 자세한 내용은 UWP 디바이스 앱 만들기를 참조하세요.

  4. 프린터를 앱과 연결하는 디바이스 메타데이터를 만듭니다. 자세한 내용은 디바이스 메타데이터 만들기를 참조하세요.

  5. 앱의 기본 페이지에 대한 UI를 빌드합니다. 모든 UWP 디바이스 앱은 시작에서 시작할 수 있으며 여기에서 전체 화면으로 표시됩니다. 시작 환경을 사용하여 디바이스의 특정 브랜딩 및 기능과 일치하는 방식으로 제품 또는 서비스를 강조 표시합니다. 사용할 수 있는 UI 컨트롤 유형에는 특별한 제한이 없습니다. 전체 화면 환경의 디자인을 시작하려면 Microsoft Store 디자인 원칙을 참조하세요.

  6. C# 또는 JavaScript를 사용하여 앱을 작성하는 경우 PrinterExtensionLibraryDeviceAppForPrintersLibrary 프로젝트를 UWP 디바이스 앱 솔루션에 추가합니다. 인쇄 설정 및 인쇄 알림 샘플에서 이러한 각 프로젝트를 찾을 수 있습니다 .

C++는 COM에 직접 액세스할 수 있으므로 C++ 앱은 COM 기반 프린터 디바이스 컨텍스트를 사용하기 위해 별도의 라이브러리가 필요하지 않습니다.

1단계: 백그라운드 작업 등록

Windows에서 앱이 인쇄 알림을 처리할 수 있음을 인식하려면 인쇄 알림에 대한 백그라운드 작업 확장을 등록해야 합니다. 이 확장은 요소에서 Extension 선언되며 특성이 설정 windows.backgroundTasks 되고 특성이 EntryPoint 로 설정됩니다BackgroundTask.PrintBackgroundTask.Category 확장에는 작업 유형을 지원함을 나타내는 요소도 포함되어 Task 있습니다 systemEvent .

Microsoft Visual Studio에서 매니페스트 디자이너의 선언 탭에 인쇄 배경 작업 확장을 추가할 수 있습니다. XML(텍스트) 편집기를 사용하여 앱 패키지 매니페스트 XML을 수동으로 편집할 수도 있습니다. 편집 옵션을 보려면 솔루션 탐색기 Package.appxmanifest 파일을 마우스 오른쪽 단추로 클릭합니다.

이 예제에서는 앱 패키지 매니페스트 파일 Package.appxmanifest에 표시되는 요소의 백그라운드 작업 확장을 Extension 보여 줍니다.

<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest">
  <Identity Name="Microsoft.SDKSamples.DeviceAppForPrinters.CS" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" Version="1.0.0.0" />
  <Properties>
    <DisplayName>Device App For Printers C# sample</DisplayName>
    <PublisherDisplayName>Microsoft Corporation</PublisherDisplayName>
    <Logo>Assets\storeLogo-sdk.png</Logo>
  </Properties>
  <Prerequisites>
    <OSMinVersion>6.3.0</OSMinVersion>
    <OSMaxVersionTested>6.3.0</OSMaxVersionTested>
  </Prerequisites>
  <Resources>
    <Resource Language="x-generate" />
  </Resources>
  <Applications>
    <Application Id="DeviceAppForPrinters" Executable="$targetnametoken$.exe" EntryPoint="DeviceAppForPrinters.App">
      <VisualElements DisplayName="Device App For Printers C# sample" Logo="Assets\squareTile-sdk.png"
                      SmallLogo="Assets\smallTile-sdk.png" Description="DeviceAppForPrinters C# sample"
                      ForegroundText="light" BackgroundColor="#00b2f0" ToastCapable="true">
        <DefaultTile ShowName="allLogos" ShortName="App4PrinterCS" WideLogo="Assets\tile-sdk.png" />
        <SplashScreen Image="Assets\splash-sdk.png" BackgroundColor="#00b2f0" />
      </VisualElements>
      <Extensions>
        <Extension Category="windows.backgroundTasks" EntryPoint="BackgroundTask.PrintBackgroundTask">
          <BackgroundTasks>
            <Task Type="systemEvent" />
          </BackgroundTasks>
        </Extension>
        <Extension Category="windows.printTaskSettings" Executable="$targetnametoken$.exe" EntryPoint="DeviceAppForPrinters.App" />
      </Extensions>
    </Application>
  </Applications>
</Package>

2단계: 디바이스 메타데이터 구성

디바이스 메타데이터 작성 마법사를 사용하여 앱을 디바이스와 연결하는 경우 UWP 디바이스 앱 정보 지정 페이지에서 알림 처리기 상자를 완료해야 합니다. 이렇게 하면 인쇄 알림 중에 앱의 백그라운드 작업이 호출됩니다.

디바이스 메타데이터를 편집하는 방법에 대한 단계별 지침은 테스트 섹션을 참조하세요.

3단계: UI 빌드

앱을 빌드하기 전에 디자이너 및 마케팅 팀과 협력하여 사용자 환경을 디자인해야 합니다. 사용자 환경은 회사의 브랜딩 측면을 투영하고 사용자와의 연결을 구축하는 데 도움이 되어야 합니다.

디자인 지침

타일 및 배지 환경을 디자인하기 전에 Microsoft Store 앱 지침을 검토해야 합니다. 이 지침은 앱이 다른 UWP 앱과 일치하는 직관적인 환경을 제공하는 데 도움이 됩니다.

앱의 기본 페이지에서 Windows 8.1은 여러 앱을 단일 모니터에 다양한 크기로 표시할 수 있습니다. 화면 크기, 창 크기 및 방향 간에 앱이 정상적으로 재배치되는 방법에 대한 자세한 내용은 다음 지침을 참조하세요.

모범 사례

  • 알림에 작업 단어를 포함하지 마세요. 알림 메시지에서 사용자에게 푸시, 누르기 또는 클릭 알림을 지시하는 텍스트를 사용하지 마세요. 사용자는 알림을 눌러 자세한 정보를 확인할 수 있다는 것을 이미 알고 있습니다. 예를 들어 "프린터가 잉크가 부족합니다"가 아니라 "프린터가 잉크가 부족합니다"를 쓰기만 하면 됩니다. 문제 해결을 위해 누릅니다."라고 말했습니다.

  • 상호 작용을 단순하게 유지합니다. 알림 환경에 표시되는 모든 항목은 알림과 관련이 있어야 합니다. 예를 들어 용지 걸림에 대한 알림 페이지에는 해당 문제 해결에 대한 링크 및 정보만 포함되어야 합니다. 잉크 구매 또는 기타 지원 정보와 같은 관련 없는 환경에 대한 링크를 포함해서는 안 됩니다.

  • 멀티미디어를 사용합니다. 디바이스의 실제 사진, 비디오 또는 일러스트레이션을 사용하여 사용자가 디바이스 문제를 신속하게 해결할 수 있도록 지원합니다.

  • 앱의 컨텍스트 내에서 사용자를 유지합니다. 문제에 대한 정보를 제공하는 경우 온라인 또는 기타 지원 자료에 연결하지 마세요. 사용자를 앱의 컨텍스트에 유지합니다.

4단계: 백그라운드 작업 만들기

앱이 인쇄 알림에 대한 백그라운드 작업을 등록하는 경우 백그라운드 작업 활성화에 대한 처리기를 제공해야 합니다. 인쇄 설정 및 인쇄 알림 샘플에서 클래스는 PrintBackgroundTask 인쇄 알림을 처리합니다.

프린터 상태 즉각적인 사용자 개입이 필요하지 않은 경우 알림이 표시되지 않고 타일을 업데이트합니다. 예를 들어 잉크 상태가 낮을 경우 타일 업데이트로 충분합니다. 그러나 프린터가 잉크에서 완전히 없으면 앱에 알림 메시지가 표시 될 수 있습니다.

알림 세부 정보 저장

백그라운드 작업은 포그라운드 앱을 직접 시작할 수 없으며 타일, 알림 또는 시작에서 사용자만 실행할 수 있습니다. 따라서 포그라운드 앱이 인쇄 알림 세부 정보에 액세스할 수 있도록 백그라운드 작업은 로컬 스토리지에 저장합니다. 로컬 스토리지 사용에 대한 자세한 내용은 빠른 시작: 로컬 앱 데이터를 참조 하세요.

인쇄 알림이 트리거되면 Windows는 해당 메서드를 호출하여 백그라운드 작업을 실행합니다 Run . 알림 데이터는 Windows.Devices.Printers.Extensions.PrintNotificationEventDetails 형식으로 캐스팅해야 하는 메서드 매개 변수를 통해 백그라운드 작업에 전달됩니다. PrinterName 해당 개체의 속성은 EventData 각각 프린터 이름과 Bidi 메시지를 전달합니다.

이 예제에서는 알림 메시지, 타일 및 배지 메서드가 호출되기 전에 인쇄 알림 세부 정보가 앱 설정에 저장되는 백그라운드 작업의 Run 메서드를 PrintBackgroundTask.cs 파일에 보여 줍니다.

public void Run(Windows.ApplicationModel.Background.IBackgroundTaskInstance taskInstance)
{
    // Save notification details to local storage
    PrintNotificationEventDetails details = (PrintNotificationEventDetails)taskInstance.TriggerDetails;
    settings.Values[keyPrinterName] = details.PrinterName;
    settings.Values[keyAsyncUIXML] = details.EventData;

    // Demonstrate possible actions
    ShowToast(details.PrinterName, details.EventData);
    UpdateTile(details.PrinterName, details.EventData);
    UpdateBadge();
}

타일 업데이트

인쇄 알림 세부 정보가 메서드로 UpdateTile 전송되면 샘플의 백그라운드 작업은 타일에 표시하는 방법을 보여 줍니다. 타일에 대한 자세한 내용은 타일 및 타일 알림 개요를 참조하세요.

이 예제에서는 PrintBackgroundTask.cs 파일에 백그라운드 작업의 UpdateTile 메서드를 보여줍니다.

void UpdateTile(string printerName, string bidiMessage)
{
    TileUpdater tileUpdater = TileUpdateManager.CreateTileUpdaterForApplication();
    tileUpdater.Clear();

    XmlDocument tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWide310x150Text09);
    XmlNodeList tileTextAttributes = tileXml.GetElementsByTagName("text");
    tileTextAttributes[0].InnerText = printerName;
    tileTextAttributes[1].InnerText = bidiMessage;

    TileNotification tileNotification = new TileNotification(tileXml);
    tileNotification.Tag = "tag01";
    tileUpdater.Update(tileNotification);
}

배지 업데이트

이 메서드는 UpdateBadge BadgeNotification 클래스를 사용하여 배지를 업데이트하는 방법을 보여줍니다. 타일에 대한 자세한 내용은 배지 개요를 참조하세요.

이 예제에서는 PrintBackgroundTask.cs 파일에 백그라운드 작업의 UpdateBadge 메서드를 보여줍니다.

void UpdateBadge()
{
    XmlDocument badgeXml = BadgeUpdateManager.GetTemplateContent(BadgeTemplateType.BadgeGlyph);
    XmlElement badgeElement = (XmlElement)badgeXml.SelectSingleNode("/badge");
    badgeElement.SetAttribute("value", "error");

    var badgeNotification = new BadgeNotification(badgeXml);
    BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(badgeNotification);
}

토스트 올리기

알림 메시지는 사용자에게 시간이 중요한 관련 정보를 포함하고 앱의 관련 콘텐츠에 빠르게 액세스할 수 있는 일시적인 메시지입니다. 알림 메시지는 관심 있는 항목에 대한 후속 조치를 위해 앱으로 돌아가도록 사용자에게 초대로 표시되어야 합니다. 자세한 내용은 알림 메시지 개요를 참조 하세요.

알림 메시지를 사용하도록 설정하려면 앱이 앱 패키지 매니페스트에서 알림이 가능하도록 등록해야 합니다. 요소에서 VisualElements 특성을 true로 설정합니다 ToastCapable .

Important

특히 실행 불가능한 이벤트의 경우 항상 알림을 표시하지 않는 것이 좋습니다. 이로 인해 사용자에게 짜증이 날 수 있으며 앱에서 모든 알림을 끌 수 있습니다. 사용자의 즉각적인 주의가 필요하지 않은 이벤트의 경우 타일과 배지만 업데이트하고 알림을 표시하지 않는 것이 좋습니다.

이 예제에서는 앱 패키지 매니페스트 파일 Package.appxmanifest에 나타나는 요소의 특성을 VisualElements 보여 ToastCapable 줍니다.

<VisualElements DisplayName="Device App For Printers C# sample" Logo="Assets\squareTile-sdk.png"
                SmallLogo="Assets\smallTile-sdk.png" Description="DeviceAppForPrinters C# sample"
                ForegroundText="light" BackgroundColor="#00b2f0" ToastCapable="true">
  <DefaultTile ShowName="allLogos" ShortName="App4PrinterCS" WideLogo="Assets\tile-sdk.png" />
  <SplashScreen Image="Assets\splash-sdk.png" BackgroundColor="#00b2f0" />
</VisualElements>

이 예제는 PrintBackgroundTask.cs 파일의 메서드에서 ShowToast 가져옵니다. 명명 title 된 두 문자열을 body기반으로 알림을 발생시키고 .

void ShowToast(string title, string body)
{
    //
    // Get Toast template
    //
    XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02);

    //
    // Pass to app as eventArgs.detail.arguments
    //
    ((XmlElement)toastXml.SelectSingleNode("/toast")).SetAttribute("launch", title);

    //
    // The ToastText02 template has 2 text nodes (a header and a body)
    // Assign title to the first one, and body to the second one
    //
    XmlNodeList textList = toastXml.GetElementsByTagName("text");
    textList[0].AppendChild(toastXml.CreateTextNode(title));
    textList[1].AppendChild(toastXml.CreateTextNode(body));

    //
    // Show the Toast
    //
    ToastNotification toast = new ToastNotification(toastXml);
    ToastNotificationManager.CreateToastNotifier().Show(toast);
}

5단계: 활성화 처리

인쇄 알림이 백그라운드 작업을 트리거한 후 알림 메시지 또는 타일을 탭하여 앱을 시작할 수 있습니다. 둘 중 하나에서 앱이 활성화되면 매개 변수가 속성을 통해 LaunchActivatedEventArgs.arguments 앱에 전달됩니다. 활성화 및 Microsoft Store 앱 수명 주기에 대한 자세한 내용은 애플리케이션 수명 주기를 참조 하세요.

이러한 경우 중 하나에서 앱이 활성화되었는지 확인하려면 이벤트를 처리 OnLaunched 하고 이벤트 처리기에 전달되는 이벤트 인수를 검사합니다. 이벤트 인수가 null이면 시작부터 사용자가 앱을 활성화했습니다. 이벤트 인수가 null이 아니면 알림 또는 타일에서 앱이 시작되었습니다.

이 예제는 App.xaml.cs 파일의 메서드에서 OnLaunched 가져옵니다. 알림 또는 타일에서 활성화를 처리하는 방법을 보여줍니다.

protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
    Frame rootFrame = Window.Current.Content as Frame;

    // Do not repeat app initialization when the Window already has content,
    // just ensure that the window is active

    if (rootFrame == null)
    {
        // Create a Frame to act as the navigation context and navigate to the first page
        rootFrame = new Frame();
        // Associate the frame with a SuspensionManager key
        SuspensionManager.RegisterFrame(rootFrame, "AppFrame");

        if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
        {
            // Restore the saved session state only when appropriate
            try
            {
                await SuspensionManager.RestoreAsync();
            }
            catch (SuspensionManagerException)
            {
                //Something went wrong restoring state.
                //Assume there is no state and continue
            }
        }

        // Place the frame in the current Window
        Window.Current.Content = rootFrame;
    }
    if (rootFrame.Content == null || !String.IsNullOrEmpty(args.Arguments))
    {
        // When the navigation stack isn't restored or there are launch arguments
        // indicating an alternate launch (e.g.: via toast or secondary tile),
        // navigate to the appropriate page, configuring the new page by passing required
        // information as a navigation parameter
        if (!rootFrame.Navigate(typeof(MainPage), args.Arguments))
        {
            throw new Exception("Failed to create initial page");
        }
    }
    // Ensure the current window is active
    Window.Current.Activate();
}

6단계: 액세스 알림 세부 정보

백그라운드 작업은 포그라운드 앱을 직접 시작할 수 없으므로 포그라운드 앱이 액세스할 수 있도록 인쇄 알림 세부 정보를 앱의 설정에 저장해야 합니다. 로컬 스토리지 사용에 대한 자세한 내용은 빠른 시작: 로컬 앱 데이터를 참조 하세요.

이 예제에서는 인쇄 설정 및 인쇄 알림 샘플의 앱 설정에서 프린터 이름 및 Bidi 메시지를 검색하는 방법을 보여 줍니다 . 코드는 InkLevel.xaml.cs 파일의 메서드에서 DisplayBackgroundTaskTriggerDetails가져옵니다. 키 인덱스 값과 이 값 keyPrinterName 은 백그라운드 작업에서 사용되는 것과 동일한 문자열 상수이며 PrintBackgroundTask.cs.keyAsyncUIXML

void DisplayBackgroundTaskTriggerDetails()
{
    String outputText = "\r\n";

    try
    {
        string printerName = settings.Values[keyPrinterName].ToString();
        outputText += ("Printer name from background task triggerDetails: " + printerName);
    }
    catch (Exception)
    {
        outputText += ("No printer name retrieved from background task triggerDetails ");
    }

    outputText += "\r\n";
    try
    {
        string asyncUIXML = settings.Values[keyAsyncUIXML].ToString();
        outputText += ("AsyncUI xml from background task triggerDetails: " + asyncUIXML);
    }
    catch (Exception)
    {
        outputText += ("No asyncUI xml retrieved from background task triggerDetails ");
    }

    ToastOutput.Text += outputText;
}

테스팅

UWP 디바이스 앱을 테스트하려면 먼저 디바이스 메타데이터를 사용하여 프린터에 연결해야 합니다.

디바이스 앱 정보를 추가하려면 프린터에 대한 디바이스 메타데이터 패키지의 복사본이 필요합니다. 디바이스 메타데이터가 없는 경우 UWP 디바이스 앱에 대한 디바이스 메타데이터 만들기 항목에 설명된 대로 디바이스 메타데이터 작성 마법사를 사용하여 빌드할 수 있습니다.

디바이스 메타데이터 작성 마법사를 사용하려면 이 항목의 단계를 완료하기 전에 Microsoft Visual Studio Professional, Microsoft Visual Studio Ultimate 또는 Windows 8.1용 독립 실행형 SDK를 설치해야 합니다. Windows용 Microsoft Visual Studio Express를 설치하면 마법사를 포함하지 않는 SDK 버전이 설치됩니다.

다음 단계에서는 앱을 빌드하고 디바이스 메타데이터를 설치합니다.

  1. 테스트 서명을 사용하도록 설정합니다.

    1. DeviceMetadataWizard.exe 두 번 클릭하여 %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86에서 디바이스 메타데이터 제작 마법사시작합니다.

    2. 도구 메뉴에서 테스트 서명 사용을 선택합니다.

  2. 컴퓨터를 다시 부팅

  3. 솔루션(.sln) 파일을 열어 솔루션을 빌드합니다. F7 키를 누르거나 샘플이 로드된 후 상단 메뉴에서 빌드> 솔루션으로 이동합니다.

  4. 프린터 연결을 끊고 제거합니다. 이 단계는 다음에 디바이스가 검색될 때 Windows에서 업데이트된 디바이스 메타데이터를 읽도록 하는 데 필요합니다.

  5. 디바이스 메타데이터를 편집하고 저장합니다. 디바이스 앱을 디바이스에 연결하려면 디바이스 앱을 디바이스와 연결해야 합니다.

    디바이스 메타데이터를 아직 만들지 않은 경우 UWP 디바이스 앱에 대한 디바이스 메타데이터 만들기를 참조하세요.

    1. 디바이스 메타데이터 작성 마법사가 아직 열려 있지 않으면 DeviceMetadataWizard.exe 두 번 클릭하여 %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86에서 시작합니다.

    2. 디바이스 메타데이터 편집을 클릭합니다. 이렇게 하면 기존 디바이스 메타데이터 패키지를 편집할 수 있습니다.

    3. 열기 대화 상자에서 UWP 디바이스 앱과 연결된 디바이스 메타데이터 패키지를 찾습니다. (devicemetadata-ms 파일 확장명입니다.)

    4. UWP 디바이스 앱 정보 지정 페이지의 UWP 디바이스 앱 상자에 Microsoft Store 앱 정보를 입력합니다. UWP 앱 매니페스트 파일 가져오기를 클릭하여 패키지 이름, 게시자 이름UWP 앱 ID를 자동으로 입력합니다.

    5. 앱이 프린터 알림을 등록하는 경우 알림 처리기 상자를 입력 합니다 . 이벤트 ID에서 인쇄 이벤트 처리기의 이름을 입력합니다. 이벤트 자산에서 해당 코드가 있는 파일의 이름을 입력합니다.

    6. 완료되면 마침 페이지에 도착할 때까지 다음클릭합니다.

    7. 디바이스 메타데이터 패키지 검토 페이지에서 모든 설정이 올바른지 확인하고 로컬 컴퓨터 검사 상자의 메타데이터 저장소에 디바이스 메타데이터 패키지 복사를 선택합니다. 그런 다음 Save를 클릭합니다.

  6. 디바이스가 연결될 때 Windows에서 업데이트된 디바이스 메타데이터를 읽도록 프린터를 다시 연결합니다.

문제 해결

문제: 기본 알림 메시지가 표시되지 않음

예상한 경우 기본 인쇄 알림이 표시되지 않는 경우...

  • 가능한 원인: 테스트 서명이 켜져 있지 않습니다. 설정에 대한 자세한 내용은 이 항목의 디버깅 섹션을 참조하세요.

  • 가능한 원인: Do기본 정책에서 알림 메시지를 사용하지 않도록 설정했습니다. 할 일기본 두고 다시 시도하십시오.

  • 가능한 원인: 프린터에서 DriverEvents를 구현하지 않았습니다. v4 드라이버가 Bidi 및 DriverEvents를 지원하는지 확인합니다. 자세한 내용은 사용자 지정된 UI에 대한 드라이버 지원을 참조하세요.

  • 가능한 원인: 컴퓨터에 프린터 큐에 최근 작업이 없습니다. 프린터 아이콘이 화면의 오른쪽 아래 모서리에 표시되는지 확인합니다. 그렇지 않은 경우 다른 인쇄 작업을 보냅니다.

  • 가능한 원인: 백그라운드 작업(IBackgroundTask)의 진입점이 포그라운드 앱과 동일한 프로젝트 내에 있습니다. 이것은 허용되지 않습니다. 백그라운드 작업 처리기에 대한 완전히 새로운 클래스를 분리합니다.

  • 가능한 원인: 앱에서 알림의 진입점인 클래스가 매니페스트 또는 디바이스 메타데이터에 잘못 제공되어 앱이 backgroundhost 내에서 충돌하고 알림을 표시하지 않습니다. 다음을 확인하십시오.

    • 매니페스트 디자이너의 선언 탭에서 진입점이 올바르게 지정되었는지 확인합니다 . C# 및 C++용 Namespace.ClassName 형식이어야 합니다. JavaScript의 경우 .js 파일에 대한 상대 디렉터리 경로여야 합니다.

    • JavaScript 앱이 완료되면 close()를 호출해야 합니다.

    • C# 클래스는 Windows.ApplicationModel.Background.IBackgroundTask를 구현해야 하며 public void Run(Windows.ApplicationModel.Background.IBackgroundTaskInstance taskInstance) 메서드가 있어야 합니다.

    • C++ 클래스는 Windows::ApplicationModel::Background::IBackgroundTask를 구현해야 하며 메서드가 virtual void Run(Windows::ApplicationModel::Background::IBackgroundTaskInstance^ taskInstance) 있어야 합니다.

배지 개요(UWP 앱)

타일 및 타일 알림 개요(UWP 앱)

타일 및 배지에 대한 지침 및 검사 목록(UWP 앱)

알림 메시지 개요(UWP 앱)

알림 메시지 지침 및 검사 목록(UWP 앱)

사용자 지정된 UI에 대한 드라이버 지원

v4 인쇄 드라이버 개발

프린터 확장 인터페이스(v4 인쇄 드라이버)

양방향 통신

UWP 앱 시작

UWP 디바이스 앱 만들기(단계별 가이드)

UWP 디바이스 앱에 대한 디바이스 메타데이터 만들기(단계별 가이드)