UWP デバイス アプリでの印刷通知の操作

Windows 8.1 では、UWP デバイス アプリで、v4 印刷ドライバーから送信される双方向通信 (Bidi) イベントに応答できます。 このトピックでは、印刷通知について説明し、C# バージョンの印刷設定と印刷通知のサンプルでバックグラウンド タスクを使用して印刷通知に応答する方法について説明します。 このバックグラウンド タスクは、通知の詳細をローカル アプリ データ ストアに保存し、トーストを送信して、タイルとバッジを更新する方法を示します。 UWP デバイス アプリ全般の詳細については、「UWP デバイス アプリの概要」を参照してください。

C# バージョンの印刷設定と印刷通知のサンプルでは、BackgroundTask プロジェクトのアプリのバックグラウンド部分 (バックグラウンド タスク) を示します。 バックグラウンド タスクのコードは、PrintBackgroundTask.cs ファイル内にあります。 [開始] から起動できる全画面表示アプリであるフォアグラウンド アプリは、DeviceAppForPrinters プロジェクト内にあります。 InkLevel.xaml.cs ファイルは、フォアグラウンド アプリから通知の詳細にアクセスできる 1 つの方法を示しています。 印刷通知を操作するために、このサンプルでは PrinterExtensionLibrary プロジェクトのプリンター拡張機能ライブラリを使用します。 プリンター拡張機能ライブラリは、v4 印刷ドライバーのプリンター拡張機能インターフェイスにアクセスするための便利な方法を提供します。 詳細については、「プリンター拡張機能ライブラリの概要」を参照してください。

このトピックに示すコード例は、C# バージョンの印刷設定と印刷通知のサンプルに基づいています。 このサンプルは、JavaScript と C++ でも使用できます。 C++ は COM に直接アクセスできるため、C++ バージョンのサンプルにはコード ライブラリ プロジェクトが含まれていないことにご注意ください。 サンプルをダウンロードして、最新バージョンのコードを確認してください。

印刷通知を使用すると、UWP デバイス アプリは、紙詰まり、プリンターの扉の閉め忘れ、インク レベルの低下、プリンターの用紙切れエラーなど、印刷中に重要なプリンター イベントをユーザーに通知できます。 プリンターが通知をトリガーすると、システム イベント ブローカーがアプリのバックグラウンド タスクを実行されます。 そこから、バックグラウンド タスクは、通知の詳細の保存、トーストの送信、タイルの更新、バッジの更新、または何もしないなどを行えます。 通知の詳細を保存することで、アプリはユーザーがプリンターの問題を理解して修正するのに役立つエクスペリエンスを提供できます。

プリンターの製造元は、UWP デバイス アプリで印刷通知を使用するために、v4 印刷ドライバーに Bidi と DriverEvent XML ファイルを実装する必要があります。 詳細については、「双方向通信」を参照してください。

DriverEvent が発生し、UWP デバイス アプリのバックグラウンド タスクが開始されると、アプリには続行方法に関するオプションがいくつか用意されます。 タスクの起動につながるフローの詳細については、「カスタマイズされた UI のドライバー サポート」を参照してください。

バックグラウンド タスクでは、次の実行を選べます。

タイル通知またはトースト通知を使用すると、ユーザーはフォアグラウンド アプリを簡単に起動できます。 フォアグラウンド アプリは起動時に、OnLaunchedApp.xaml.cs メソッドを使用して、タイルまたはトーストによって起動されたかどうかを確認できます。 どちらかによって起動された場合、フォアグラウンド アプリはローカル アプリ データ ストア内の印刷通知の詳細にアクセスできます。

前提条件

開始する前に、以下の操作を行います。

  1. v4 プリンター ドライバーを使用してプリンターがインストールされていることを確認します。 詳しくは、「v4 プリンター ドライバーの開発」をご覧ください。

  2. 開発マシンを設定します。 ツールのダウンロードと開発者アカウントの作成については、「概要」を参照してください。

  3. ストアにアプリを関連付けます。 詳細については、「UWP デバイス アプリを作成する」を参照してください。

  4. プリンターをアプリに関連付けるプリンターのデバイス メタデータを作成します。 詳細については、「デバイス メタデータを作成する」を参照してください。

  5. アプリのメイン ページの UI を構築します。 すべての UWP デバイス アプリは [開始] から起動でき、全画面表示で表示されます。 開始エクスペリエンスを使用すると、デバイスの固有のブランドと機能に一致する方法で製品またはサービスを強調できます。 使用できる UI コントロールの種類に特別な制限はありません。 全画面表示エクスペリエンスの設計を開始するには、Microsoft Store 設計原則を参照してください。

  6. C# または JavaScript を使用してアプリを作成する場合は、PrinterExtensionLibrary プロジェクトと DeviceAppForPrintersLibrary プロジェクトを UWP デバイス アプリ ソリューションに追加します。 これらの各プロジェクトは、印刷設定と印刷通知のサンプルで確認できます。

C++ は COM に直接アクセスできるため、C++ アプリには、COM ベースのプリンター デバイス コンテキストを操作するための別のライブラリは必要ありません。

手順 1: バックグラウンド タスクを登録する

Windows にアプリが印刷通知を処理できることを認識させるため、印刷通知のバックグラウンド タスク拡張機能を登録する必要があります。 この拡張機能は Extension 要素内で宣言され、Category 属性が windows.backgroundTasks に設定され、EntryPoint 属性が BackgroundTask.PrintBackgroundTask に設定されます。 拡張機能には、Task タスクの種類をサポートすることを示す systemEvent 要素も含まれています。

印刷バックグラウンド タスク拡張機能は、Microsoft Visual Studio のマニフェスト デザイナーの [宣言] タブに追加できます。 XML (テキスト) エディターを使用して、アプリ パッケージ マニフェストの XML を手動で編集することもできます。 オプションを編集するには、ソリューション エクスプローラーで、Package.appxmanifest ファイルを右クリックします。

この例は、アプリ パッケージ マニフェスト ファイル ExtensionPackage.appxmanifest に表示される、 要素内のバックグラウンド タスク拡張機能を示します。

<?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 で複数のアプリをさまざまなサイズで 1 つのモニターに表示できることを念頭に置いてください。 画面サイズ、ウィンドウ サイズ、向きの間でアプリをスムーズにリフローする方法の詳細については、次のガイドラインを参照してください。

ベスト プラクティス

  • 通知にアクション ワードを含めないでください。 通知メッセージでは、ユーザーに通知をプッシュする、押す、またはクリックするように指示するテキストを使用しないでください。 ユーザーは、トーストを押せば詳しい情報を確認できることを既に理解しています。 たとえば、「プリンターのインク残量が少しです」とだけ書き、「プリンターのインク残量が少しです。 トラブルシューティングを行うには押してください」とは書かないでください。

  • 操作をシンプルに保ちます。 通知エクスペリエンスに表示されるものはすべて、通知に関連している必要があります。 たとえば、紙詰まりに関する通知ページには、その問題の解決方法に関するリンクと情報のみを含むようにする必要があります。 インクの購入やその他のサポート情報など、関連のないエクスペリエンスへのリンクを含めてはなりません。

  • マルチメディアを使用します。 デバイスの実際の写真、ビデオ、またはイラストを使用して、ユーザーがデバイスの問題をすばやく解決できるようにします。

  • ユーザーをアプリのコンテキスト内に留めます。 問題に関する情報を提供する場合は、オンライン資料またはその他のサポート資料にリンクしないでください。 ユーザーをアプリのコンテキスト内に留めておきます。

手順 4: バックグラウンド タスクを作成する

アプリで印刷通知のバックグラウンド タスクを登録する場合は、バックグラウンド タスクのアクティブ化のハンドラーを提供する必要があります。 印刷設定と印刷通知のサンプルでは、PrintBackgroundTask クラスが印刷通知を処理します。

プリンターの状態がユーザーの介入をすぐに必要するものではない場合は、トーストを表示するのではなく、タイルを更新します。 たとえば、インク残量が少ない状態では、タイルの更新で十分です。 しかし、プリンターのインクが完全に切れている場合は、アプリでトースト通知を表示できます。

通知の詳細の保存

バックグラウンド タスクはフォアグラウンド アプリを直接起動できません。ユーザーのみがタイル、トースト、または [開始] から起動できます。 そのため、フォアグラウンド アプリが印刷通知の詳細に確実にアクセスできるように、バックグラウンド タスクではローカル ストレージに詳細が保存されます。 ローカル ストレージの使用方法の詳細については、「クイック スタート: ローカル アプリ データ」を参照してください。

印刷通知がトリガーされると、Windows はバックグラウンド タスクを実行するために、その Run メソッドを呼び出します。 通知データは、Windows.Devices.Printers.Extensions.PrintNotificationEventDetails 型にキャストする必要があるメソッド パラメーターを使用してバックグラウンド タスクに渡されます。 そのオブジェクトの PrinterName プロパティと EventData プロパティには、それぞれプリンター名と Bidi メッセージが含まれます。

この例は、RunPrintBackgroundTask.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 メソッドに送信されると、サンプルのバックグラウンド タスクはタイルに詳細を表示する方法を示します。 タイルの詳細については、「タイルとタイル通知の概要」を参照してください。

この例は、UpdateTilePrintBackgroundTask.cs ファイル内のバックグラウンド タスクの メソッドを示します。

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 クラスを使用してバッジを更新する方法を示します。 タイルについて詳しくは、「バッジの概要」を参照してください。

この例は、UpdateBadgePrintBackgroundTask.cs ファイル内のバックグラウンド タスクの メソッドを示します。

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 要素で、ToastCapable 属性を true に設定します。

重要

トーストを常に表示することは、特に対応不可能なイベントの場合はお勧めしません。 これは、ユーザーにとって迷惑になる場合があり、アプリからのトーストをすべてオフにしてしまう可能性があります。 ユーザーがすぐに注意を払う必要のないイベントについては、タイルとバッジのみを更新し、トーストを表示しないことをお勧めします。

この例は、アプリ パッケージ マニフェスト ファイルの ToastCapablePackage.appxmanifestVisualElements に表示される、 要素の 属性を示します。

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

この例は、ShowToastPrintBackgroundTask.cs ファイルの メソッドのものです。 titlebody という名前の付いた 2 つの文字列に基づいて、トーストを表示する方法を示します。

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 でない場合は、トーストまたはタイルからアプリが起動されたということです。

この例は、OnLaunchedApp.xaml.cs ファイル内の メソッドのものです。 トーストまたはタイルからのアクティブ化を処理する方法を示します。

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 メッセージを取得する方法を示します。 コードは、DisplayBackgroundTaskTriggerDetailsInkLevel.xaml.cs ファイルの メソッドからのものです。 キー インデックスの値である keyPrinterNamekeyAsyncUIXML は、バックグラウンド タスクの PrintBackgroundTask.cs で使用されるものと同じ文字列定数であることにご注意ください。

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、またはスタンドアロン SDK for Windows 8.1 をインストールする必要があります。 Microsoft Visual Studio Express for Windows をインストールすると、ウィザードを含まないバージョンの SDK がインストールされます。

次の手順に沿ってアプリを作成し、デバイス メタデータをインストールします。

  1. テスト署名を有効にします。

    1. DeviceMetadataWizard.exe をダブルクリックして、%ProgramFiles(x86)%\Windows Kits\8.1\bin\x86 からデバイス メタデータ作成ウィザードを開始します。

    2. [ツール] メニューの [テスト署名を有効にする] を選択します。

  2. コンピューターを再起動します

  3. ソリューション (.sln) ファイルを開いてソリューションを構築します。 サンプルが読み込まれた後、F7 キーを押すか、上部のメニューから [Build] -> [ソリューションの構築] に移動します。

  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. [デバイス メタデータ パッケージの確認] ページで、すべての設定が正しいことを確認し、[ローカル コンピューターのメタデータ ストアにデバイス メタデータ パッケージをコピーする] チェック ボックスを選択します。 [保存] をクリックします。

  6. デバイスが接続されている場合は、プリンターを再接続して、Windows が更新されたデバイス メタデータを読み取れるようにします。

トラブルシューティング

問題: 既定のトースト通知が表示されない

既定の印刷通知が想定通りに表示されない場合...

  • 考えられる原因: テスト署名が有効になっていません。 有効にする方法については、このトピックの「デバッグ」セクションを参照してください。

  • 考えられる原因: ドメイン ポリシーでトースト通知が無効になっています。 ドメインをそのままにして、もう一度やり直してください。

  • 考えられる原因: プリンターに DriverEvent が実装されていません。 v4 ドライバーが Bidi および DriverEvents をサポートしていることを確認してください。 詳細については、「カスタマイズされた UI のドライバー サポート」を参照してください。

  • 考えられる原因: コンピューターのプリンター キューに最新のジョブがありません。 画面の右下隅にプリンター アイコンが表示されていることを確認します。 表示されていない場合は、別の印刷ジョブを送信してください。

  • 考えられる原因: バックグラウンド タスク (IBackgroundTask) のエントリ ポイントが、フォアグラウンド アプリと同じプロジェクト内にあります。 これは認められていません。 バックグラウンド タスク ハンドラー用にまったく新しいクラスを分離します。

  • 考えられる原因: アプリ内の通知のエントリ ポイントであるクラスがマニフェストまたはデバイス メタデータで正しく指定されていないため、バックグラウンド ホスト内でアプリがクラッシュし、トーストが表示されません。 以下を確認してください:

    • マニフェスト デザイナーの [宣言] タブでエントリ ポイントが正しく指定されていることを確認してください。 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 デバイス アプリのデバイス メタデータを作成する (ステップ バイ ステップ ガイド)