Trabalhando com notificações de impressão em um aplicativo de dispositivo UWP

Important

Os metadados do dispositivo foram preteridos e serão removidos numa versão futura do Windows. Para obter informações sobre a substituição dessa funcionalidade, consulte Metadados de Contêiner do Pacote de Driver.

Os aplicativos de dispositivo UWP podem responder a eventos Bidi (comunicação bidirecional) enviados de um driver de impressão v4. Este artigo apresenta notificações de impressão e mostra como a versão C# das configurações de impressão e o exemplo de notificações de impressão usa uma tarefa em segundo plano para responder à notificação de impressão. A tarefa em segundo plano demonstra como salvar detalhes de notificação no repositório de dados do aplicativo local, enviar notificações do sistema e atualizar um bloco e um selo. Para saber mais sobre aplicativos de dispositivo UWP em geral, consulte Conheça os aplicativos de dispositivo UWP.

A versão em C# das configurações de impressão e do exemplo de notificações de impressão demonstra a parte em segundo plano do aplicativo (a tarefa em segundo plano) no projeto BackgroundTask . O código da tarefa em segundo plano está no arquivo PrintBackgroundTask.cs . O aplicativo de primeiro plano, o aplicativo de tela inteira que pode ser iniciado pela tela Iniciar, está no projeto DeviceAppForPrinters. O arquivo InkLevel.xaml.cs mostra uma maneira pela qual os detalhes da notificação podem ser acessados no aplicativo em primeiro plano. Para trabalhar com notificações de impressão, o exemplo usa a biblioteca de extensão da impressora no projeto PrinterExtensionLibrary . A biblioteca de extensão da impressora fornece uma maneira conveniente de acessar as interfaces de extensão da impressora do driver de impressão v4. Para obter mais informações, consulte a visão geral da biblioteca de extensão da impressora.

Os exemplos de código mostrados neste artigo baseiam-se na versão C# das configurações de impressão e no exemplo de notificações de impressão . Este exemplo também está disponível em JavaScript e C++. Como o C++ pode acessar o COM diretamente, a versão C++ do exemplo não inclui projetos de biblioteca de código. Baixe os exemplos para ver as versões mais recentes do código.

As notificações de impressão permitem que seu aplicativo de dispositivo UWP informe ao usuário sobre eventos importantes da impressora durante a impressão, como um congestionamento de papel, porta da impressora aberta, níveis baixos de tinta ou erro de falta de papel na impressora. Quando uma impressora dispara uma notificação, o agente de eventos do sistema executa a tarefa em segundo plano do seu aplicativo. A partir daí, a tarefa em segundo plano pode salvar os detalhes da notificação, enviar uma notificação do sistema, atualizar um bloco, atualizar um selo ou não fazer nada. Salvando detalhes de notificação, seu aplicativo pode fornecer uma experiência que ajuda os usuários a entender e corrigir seus problemas de impressora.

Os fabricantes de impressora devem implementar Bidi e o arquivo XML DriverEvent em seu driver de impressão v4 para usar notificações de impressão com seus aplicativos de dispositivo UWP. Para obter mais informações, consulte Comunicações Bidirecionais.

Quando um DriverEvent ocorre e a tarefa em segundo plano de um aplicativo de dispositivo UWP é iniciada, o aplicativo tem várias opções sobre como ele pode continuar. Para obter mais informações sobre o fluxo que leva ao início da tarefa, consulte Suporte ao Driver para interface do usuário personalizada.

A tarefa em segundo plano pode optar por:

A notificação de bloco ou notificação do sistema pode permitir que o usuário inicie convenientemente seu aplicativo em primeiro plano. Quando o aplicativo em primeiro plano é iniciado, ele pode usar o método OnLaunched em App.xaml.cs para verificar se ele foi iniciado por um bloco ou uma notificação do sistema. Se estiver, o aplicativo em primeiro plano pode acessar qualquer detalhe de notificação de impressão no repositório de dados do aplicativo local.

Prerequisites

Antes de começar:

  1. Verifique se a impressora está instalada usando um driver de impressão v4. Para obter mais informações, consulte Desenvolvimento de drivers de impressão v4.

  2. Configure seu computador de desenvolvimento. Consulte Introdução para obter informações sobre como baixar as ferramentas e criar uma conta de desenvolvedor.

  3. Associe seu aplicativo à loja. Para obter mais informações, consulte Criar um aplicativo de dispositivo UWP.

  4. Crie metadados de dispositivo para sua impressora que a associe ao seu aplicativo. Para obter mais informações, consulte Criar metadados do dispositivo.

  5. Crie a interface do usuário para a página principal do aplicativo. Todos os aplicativos de dispositivo UWP podem ser iniciados desde o início, onde são exibidos em tela inteira. Utilize a experiência de início para realçar seus produtos ou serviços de uma maneira que corresponda à marca e aos recursos específicos de seus dispositivos. Não há restrições especiais sobre o tipo de controles de interface do usuário que ele pode usar. Para começar a usar o design da experiência em tela inteira, consulte os princípios de design da Microsoft Store.

  6. Se você estiver escrevendo seu aplicativo com C# ou JavaScript, adicione os projetos PrinterExtensionLibrary e DeviceAppForPrintersLibrary à sua solução de aplicativo de dispositivo UWP. Você pode encontrar cada um desses projetos no exemplo de configurações de impressão e notificações de impressão.

Como o C++ pode acessar o COM diretamente, os aplicativos C++ não exigem uma biblioteca separada para trabalhar com o contexto do dispositivo de impressora baseado em COM.

Etapa 1: Registrar tarefa em segundo plano

Para que o Windows reconheça que o aplicativo pode lidar com notificações de impressão, ele deve registrar uma extensão de tarefas em segundo plano para notificações de impressão. Essa extensão é declarada em um elemento Extension, com um atributo Category definido como windows.backgroundTasks e um atributo EntryPoint definido como BackgroundTask.PrintBackgroundTask. A extensão também inclui um elemento Task para indicar que suporta tipos de tarefa systemEvent.

Você pode adicionar a extensão de tarefa em segundo plano na guia Declarações do Designer de Manifesto no Microsoft Visual Studio. Você também pode editar o manifesto do pacote do aplicativo XML manualmente, usando o Editor XML (Texto). Clique com o botão direito do mouse no arquivo Package.appxmanifest em Gerenciador de Soluções para opções de edição.

Este exemplo mostra a extensão de tarefa em segundo plano no elemento Extension, conforme aparece no arquivo de manifesto do pacote do aplicativo, Package.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>

Etapa 2: Configurar metadados do dispositivo

Ao usar o Assistente de Criação de Metadados do Dispositivo para associar seu aplicativo ao seu dispositivo, certifique-se de preencher a caixa de Manipuladores de notificação na página Especificar informações do aplicativo de dispositivo UWP. Isso ajuda a garantir que a tarefa em segundo plano do aplicativo seja chamada durante uma notificação de impressão.

Para obter instruções passo a passo sobre como editar os metadados do dispositivo, consulte a seção Teste .

Etapa 3: Criar a interface do usuário

Antes de criar seu aplicativo, você deve trabalhar com seus designers e sua equipe de marketing para projetar a experiência do usuário. A experiência do usuário deve projetar os aspectos de identidade visual da sua empresa e ajudá-lo a criar uma conexão com seus usuários.

Diretrizes de design

É importante revisar as diretrizes de aplicativos da Microsoft Store antes de criar sua experiência de bloco e selo. As diretrizes ajudam a garantir que seu aplicativo forneça uma experiência intuitiva que seja consistente com outros aplicativos UWP.

Para a página principal do seu aplicativo, tenha em mente que o Windows 8.1 pode exibir vários aplicativos em vários tamanhos em um único monitor. Confira as diretrizes a seguir para saber mais sobre como seu aplicativo pode se refluxar normalmente entre tamanhos de tela, tamanhos de janela e orientações.

Práticas recomendadas

  • Não inclua palavras de ação em notificações. Na mensagem de notificação, não use texto que indique aos usuários para enviar por push, pressionar ou selecionar uma notificação. Os usuários já entendem que podem pressionar uma notificação do sistema para localizar mais informações. Por exemplo, basta escrever "Sua impressora está com pouca tinta" em vez de "Sua impressora está com pouca tinta. Pressione para solucionar problemas".

  • Mantenha as interações simples. Tudo o que é mostrado na experiência de notificações deve estar relacionado à notificação. Por exemplo, uma página de notificação sobre uma obstrução de papel deve conter apenas links e informações sobre como resolver esse problema. Ele não deve conter links para experiências não relacionadas, como por exemplo compra de tinta ou outras informações de suporte.

  • Use multimídia. Use fotos, vídeos ou ilustrações reais do dispositivo para ajudar os usuários a resolver rapidamente um problema com seu dispositivo.

  • Mantenha os usuários dentro do contexto do seu aplicativo. Ao fornecer informações sobre um problema, não vincule a materiais de suporte online ou outros. Mantenha o usuário no contexto do aplicativo.

Etapa 4: Criar tarefa em segundo plano

Se o aplicativo registrar uma tarefa em segundo plano para notificações de impressão, ele deverá fornecer um manipulador para a ativação da tarefa em segundo plano. No exemplo de notificações de impressão e configurações de impressão , a PrintBackgroundTask classe manipula as notificações de impressão.

Se o status da impressora não exigir intervenção imediata do usuário, atualize um bloco, em vez de mostrar uma notificação do sistema. Por exemplo, para uma condição de pouca tinta, uma atualização de bloco será suficiente. Mas, se a impressora está sem tinta, o aplicativo pode mostrar uma notificação do sistema.

Salvando detalhes da notificação

A tarefa em segundo plano não pode iniciar diretamente o aplicativo em primeiro plano; apenas o usuário pode fazer isso: de um bloco, notificação do sistema ou Início. Portanto, para garantir que o aplicativo em primeiro plano possa acessar os detalhes da notificação de impressão, a tarefa em segundo plano os salva no armazenamento local. Para obter mais informações sobre como usar o armazenamento local, consulte Início Rápido: dados do aplicativo local.

Quando uma notificação de impressão é disparada, o Windows executa a tarefa em segundo plano chamando seu Run método. Os dados de notificação são passados para a tarefa em segundo plano por meio de um parâmetro de método que deve ser convertido no tipo Windows.Devices.Printers.Extensions.PrintNotificationEventDetails. As PrinterName e EventData propriedades desse objeto carregam o nome da impressora e a mensagem Bidi, respectivamente.

Este exemplo mostra o método da Run da tarefa em segundo plano, no arquivo PrintBackgroundTask.cs, em que os detalhes da notificação de impressão são salvos nas configurações do aplicativo antes que os métodos de notificação do sistema, bloco e selo sejam chamados.

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

Atualizando um bloco

Quando os detalhes da notificação de impressão são enviados para o método UpdateTile, a tarefa em segundo plano do exemplo demonstra como exibi-los em um bloco. Para obter mais informações sobre tiles, consulte Visão geral de tiles e notificações de tiles.

Este exemplo mostra o método UpdateTile da tarefa em segundo plano, no arquivo PrintBackgroundTask.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);
}

Atualizando um selo

O UpdateBadge método mostra como usar a classe BadgeNotification para atualizar um selo. Para obter mais informações sobre blocos, confira Visão geral do selo.

Este exemplo mostra o método UpdateBadge da tarefa em segundo plano, no arquivo PrintBackgroundTask.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);
}

Gerando uma notificação do sistema

Uma notificação do sistema é uma mensagem transitória para o usuário que contém informações relevantes e sensíveis ao tempo e fornece acesso rápido ao conteúdo relacionado em um aplicativo. As notificações do sistema devem ser exibidas para os usuários como um convite para retornar ao seu aplicativo para acompanhar algo de interesse. Para obter mais informações, consulte a visão geral da notificação do Toast.

Para habilitar notificações do sistema, o aplicativo precisa registrar que é compatível com a notificação do sistema no manifesto do pacote de aplicativo. No elemento VisualElements, defina o atributo ToastCapable como verdadeiro.

Important

Não é recomendável sempre mostrar uma notificação do sistema, especialmente para eventos não acionáveis. Isso pode se tornar incômodo para usuários e levá-los a desativar todas as notificações do sistema de um aplicativo. Para eventos que não exigem atenção imediata do usuário, é recomendável atualizar somente o bloco e o selo, e não mostrar uma notificação do sistema.

Este exemplo mostra o ToastCapable atributo no VisualElements elemento, como ele aparece no arquivo de manifesto do pacote do aplicativo, Package.appxmanifest.

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

Este exemplo é do ShowToast método do arquivo PrintBackgroundTask.cs . Ele mostra como fazer um brinde com base em duas cadeias de caracteres, nomeadas title e 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);
}

Etapa 5: Manipular a ativação

Depois que uma notificação de impressão dispara a tarefa em segundo plano, o aplicativo pode ser iniciado tocando em uma notificação do sistema ou em um bloco. Se seu aplicativo for ativado de uma dessas formas, um parâmetro será passado para o aplicativo usando a propriedade LaunchActivatedEventArgs.arguments. Para obter mais informações sobre a ativação e o ciclo de vida do aplicativo Microsoft Store, consulte o ciclo de vida do aplicativo.

Para determinar se o aplicativo foi ativado em um desses casos, trate o OnLaunched evento e examine os argumentos do evento que são passados para o manipulador de eventos. Se os argumentos de evento forem nulos, o aplicativo será ativado pelo usuário desde o início. Se os argumentos de evento não forem nulos, significa que o aplicativo foi iniciado de uma notificação do sistema ou de um bloco.

Este exemplo é do OnLaunched método do arquivo App.xaml.cs . Ele mostra como lidar com a ativação a partir de notificação do sistema ou blocos.

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

Etapa 6: Detalhes da notificação do Access

Como a tarefa em segundo plano não pode iniciar diretamente o aplicativo em primeiro plano, os detalhes da notificação de impressão precisam ser salvos nas configurações do aplicativo para que o aplicativo em primeiro plano possa acessá-los. Para obter mais informações sobre como usar o armazenamento local, consulte Início Rápido: dados do aplicativo local.

Este exemplo mostra como o nome da impressora e a mensagem Bidi são recuperados das configurações do aplicativo nas configurações de Impressão e no exemplo de notificações de impressão . O código é do DisplayBackgroundTaskTriggerDetails método do arquivo InkLevel.xaml.cs . Os principais valores de índice, keyPrinterNamee keyAsyncUIXML, são as mesmas constantes de cadeia de caracteres que são usadas na tarefa em segundo plano, 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;
}

Testing

Antes de testar seu aplicativo de dispositivo UWP, ele deve estar vinculado à sua impressora usando metadados do dispositivo.

Você precisa de uma cópia do pacote de metadados do dispositivo para sua impressora, para adicionar as informações do aplicativo de dispositivo a ele. Se você não tiver metadados de dispositivo, poderá criá-lo usando o Assistente de Criação de Metadados do Dispositivo , conforme descrito no artigo Criar metadados de dispositivo para seu aplicativo de dispositivo UWP.

Para usar o Assistente de Criação de Metadados do Dispositivo, você deve instalar o Microsoft Visual Studio Professional, o Microsoft Visual Studio Ultimate ou o SDK autônomo para Windows 8.1, antes de concluir as etapas neste artigo. A instalação do Microsoft Visual Studio Express para Windows instala uma versão do SDK que não inclui o assistente.

As etapas a seguir criam seu aplicativo e instalam os metadados do dispositivo.

  1. Habilite a assinatura para teste.

    1. Inicie o Assistente de Criação de Metadados do Dispositivo%ProgramFiles(x86)%\Windows Kits\8.1\bin\x86 clicando duas vezes DeviceMetadataWizard.exe

    2. No menu Ferramentas, selecione Ativar assinatura de teste.

  2. Reinicializar o computador

  3. Crie a solução abrindo o arquivo de solução (.sln). Pressione F7 ou acesse Criar->Criar Solução no menu superior após o carregamento do exemplo.

  4. Desconecte e desinstale a impressora. Essa etapa é necessária para que o Windows leia os metadados do dispositivo atualizados na próxima vez que o dispositivo for detectado.

  5. Editar e salvar metadados do dispositivo. Para vincular o aplicativo de dispositivo ao seu dispositivo, você deve associar o aplicativo de dispositivo ao seu dispositivo.

    Se os metadados do dispositivo ainda não forem criados, consulte Criar metadados de dispositivo para seu aplicativo de dispositivo UWP.

    1. Se o Assistente de Criação de Metadados do Dispositivo ainda não estiver aberto, inicie-o de %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86, clicando duas vezes emDeviceMetadataWizard.exe.

    2. Selecione Editar Metadados do Dispositivo. Essa opção permite editar o pacote de metadados do dispositivo existente.

    3. Na caixa de diálogo Abrir , localize o pacote de metadados do dispositivo associado ao seu aplicativo de dispositivo UWP. (Ele tem a extensão de arquivo devicemetadata-ms.)

    4. Na página Especificar informações do aplicativo de dispositivo UWP , insira as informações do aplicativo da Microsoft Store na caixa de aplicativo do dispositivo UWP . Selecione Importar arquivo de manifesto do aplicativo UWP para inserir automaticamente o nome do pacote, o nome do Publicador e a ID do aplicativo UWP.

    5. Se o aplicativo estiver se registrando para notificações de impressora, preencha a caixa Manipuladores de notificação . Na ID do Evento, insira o nome do manipulador de eventos de impressão. No Ativo de Evento, insira o nome do arquivo no qual esse código reside.

    6. Quando terminar, selecione Avançar até chegar à página Concluir .

    7. Na página Revisar o pacote de metadados do dispositivo , verifique se todas as configurações estão corretas e selecione Copiar o pacote de metadados do dispositivo para o repositório de metadados na caixa de seleção do computador local . Em seguida, selecione Salvar.

  6. Reconecte sua impressora para que o Windows leia os metadados do dispositivo atualizados quando o dispositivo estiver conectado.

Troubleshooting

Problema: nenhuma notificação do sistema padrão é exibida

Se nenhuma notificação de impressão padrão for exibida quando esperado...

  • Causa possível: A assinatura de teste não está ativada. Consulte a seção de Depuração neste artigo para saber como ativá-la.

  • Possível causa: As notificações toast estão desabilitadas devido a políticas de domínio. Deixe o domínio e tente novamente.

  • Causa possível: A impressora não implementou DriverEvents. Verifique se o driver v4 dá suporte a Bidi e DriverEvents. Para obter mais informações, consulte Suporte ao driver para interface do usuário personalizada.

  • Causa possível: O computador não tem nenhum trabalho recente na fila da impressora. Verifique se o ícone da impressora é mostrado no canto inferior direito da tela. Caso contrário, envie outro trabalho de impressão.

  • Causa possível: Seu ponto de entrada para a tarefa em segundo plano (IBackgroundTask) está dentro do mesmo projeto que seu aplicativo em primeiro plano. Esse cenário não é permitido. Separe uma classe totalmente nova para o manipulador de tarefas em segundo plano.

  • Possível causa: a classe que é o ponto de entrada para notificações em seu aplicativo é fornecida incorretamente em seu manifesto ou metadados do dispositivo, levando à falha do aplicativo no host em segundo plano, sem apresentar notificação do sistema. Verifique os seguintes problemas:

    • Verifique se o ponto de entrada é dado corretamente na guia Declarações do Designer de Manifesto. Ele deve estar na forma de Namespace.ClassName para C# e C++. Para JavaScript, deve ser o caminho de diretório relativo para o arquivo .js.

    • Um aplicativo JavaScript deve chamar close() após sua conclusão.

    • A classe C# precisa implementar Windows.ApplicationModel.Background.IBackgroundTask e precisa ter um método public void Run(Windows.ApplicationModel.Background.IBackgroundTaskInstance taskInstance) .

    • A classe C++ precisa implementar Windows::ApplicationModel::Background::IBackgroundTask e precisa ter um virtual void Run(Windows::ApplicationModel::Background::IBackgroundTaskInstance^ taskInstance) método.