Trabalhando com notificações de impressão em um aplicativo de dispositivo UWP
No Windows 8.1, os aplicativos de dispositivo UWP podem responder a eventos de comunicação bidirecional enviados de um driver de impressão v4. Este tópico apresenta notificações de impressão e mostra como a versão de C# do exemplo Configurações de impressão e 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 Conhecer os aplicativos de dispositivo UWP.
A versão de C# do exemplo Configurações de impressão e notificações de impressão demonstra a parte em segundo plano do aplicativo (a tarefa em segundo plano) no projeto BackgroundTask. O código para a tarefa em segundo plano está no arquivo PrintBackgroundTask.cs. O aplicativo em primeiro plano, o aplicativo de tela inteira que pode ser iniciado em Início, 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ões de impressora no projeto PrinterExtensionLibrary. A biblioteca de extensão de impressora fornece uma maneira conveniente de acessar as interfaces de extensão de impressora do driver de impressão v4. Para obter mais informações, consulte Visão geral da biblioteca de extensões de impressora.
Os exemplos de código mostrados neste tópico são baseados na versão C# do exemplo Configurações de impressão e 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 de C++ do exemplo não inclui projetos de biblioteca de códigos. Baixe os exemplos para ver as versões mais recentes do código.
Notificações de impressão
As notificações de impressão permitem que o aplicativo de dispositivo UWP informe o usuário sobre eventos importantes da impressora durante a impressão, como uma obstrução de papel, porta de impressora aberta, baixos níveis de tinta ou erros de impressão sem papel. 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. Ao salvar detalhes da notificação, seu aplicativo pode fornecer uma experiência que ajuda os usuários a entender e corrigir os problemas da impressora.
Os fabricantes de impressora devem implementar a comunicação bidirecional 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ção bidirecional.
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 detalhes sobre o fluxo que leva à inicialização da tarefa, consulte Suporte de driver para interface do usuário personalizada.
A tarefa em segundo plano pode escolher:
Não fazer nada
Salvar os detalhes da notificação no repositório de dados do aplicativo local
Atualizar uma notificação de bloco de aplicativo UWP
Atualizar um selo de notificação de aplicativo UWP
Enviar uma notificação do sistema do aplicativo UWP
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.
Pré-requisitos
Antes de começar:
Verifique se a impressora está instalada usando um driver de impressão v4. Para obter mais informações, consulte Desenvolvendo drivers de impressão v4.
Obtenha a configuração de seu computador de desenvolvimento. Consulte Introdução para obter informações sobre como baixar as ferramentas e criar uma conta de desenvolvedor.
Associar seu aplicativo à loja. Consulte Criar um aplicativo de dispositivo UWP para obter informações sobre isso.
Crie metadados de dispositivo para sua impressora que os associem ao seu aplicativo. Consulte Criar metadados do dispositivo para saber mais sobre isso.
Crie a interface do usuário para a página principal do seu aplicativo. Todos os aplicativos de dispositivo UWP podem ser iniciados pelo menu Início, em que serão exibidos em tela inteira. Use a experiência de Início para destacar seu produto ou serviços de uma maneira que corresponda à identidade visual 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 de tela inteira, consulte os princípios de design da Microsoft Store.
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 Configurações de impressão e notificações de impressão.
Como o C++ pode acessar o COM diretamente, os aplicativos C++ não requerem uma biblioteca separada para trabalhar com o contexto do dispositivo de impressora baseado em COM.
Etapa 1: Registrar a 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 oferece suporte aos 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 XML de manifesto do pacote de aplicativos manualmente, usando o Editor XML (Texto). Clique com o botão direito do mouse no arquivo Package.appxmanifest no Gerenciador de Soluções para editar as opções.
Este exemplo mostra a extensão de tarefa em segundo plano no elemento Extension
, como aparece no arquivo de manifesto do pacote de aplicativos, 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
Quando estiver usando o Assistente de Criação de Metadados de Dispositivo para associar seu aplicativo ao dispositivo, preencha a caixa 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 seu 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 Testes.
Etapa 3: Criar a interface do usuário
Antes de criar o 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 o aplicativo forneça uma experiência intuitiva consistente com outros aplicativos UWP.
Para a página principal do aplicativo, tenha em mente que o Windows 8.1 pode exibir múltiplos aplicativos de vários tamanhos em um único monitor. Consulte as diretrizes a seguir para saber mais sobre como o aplicativo pode refluir normalmente entre tamanhos de tela, tamanhos de janela e orientações.
Diretrizes para tamanhos de janela e dimensionamento para telas
Diretrizes para redimensionar janelas para layouts altos e estreitos
Práticas recomendadas
Não incluir palavras de ação nas notificações. Na mensagem de notificação, não use texto que diga aos usuários para enviar por push, pressionar ou clicar em notificação. Os usuários já entendem que podem pressionar uma notificação do sistema para descobrir 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ção 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. Ela não deve conter links para experiências não relacionadas, como 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 o dispositivo.
Mantenha os usuários no contexto do seu aplicativo. Ao fornecer informações sobre um problema, não vincule a materiais de suporte online ou outros materiais. 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, deverá fornecer um manipulador para a ativação da tarefa em segundo plano. No exemplo Configurações de impressão e notificações de impressão, a classe PrintBackgroundTask
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 estiver completamente sem tinta, o aplicativo poderá mostrar uma notificação do sistema.
Salvando detalhes da notificação
A tarefa em segundo plano não pode iniciar o aplicativo em primeiro plano diretamente, somente o usuário pode: 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 salvará 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 método Run
. 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 propriedades PrinterName
e EventData
desse objeto carregam o nome da impressora e a mensagem bidirecional, 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 saber mais sobre blocos, consulte Visão geral de bloco e notificação de bloco.
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 método UpdateBadge
mostra como usar a classe BadgeNotification para atualizar um selo. Para saber mais sobre blocos, consulte 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 Visão geral da notificação do sistema.
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 true.
Importante
Não recomendamos sempre mostrar uma notificação do sistema, principalmente para eventos não acionáveis. Isso pode se tornar irritante para os usuários e fazer com que eles desativem todas as notificações do sistema de um aplicativo. Para eventos que não exigem atenção imediata do usuário, recomendamos atualizar apenas o bloco e o selo e não mostrar uma notificação do sistema.
Este exemplo mostra o atributo ToastCapable
no elemento VisualElements
, pois ele aparece no arquivo de manifesto do pacote de 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>
Esse exemplo é do método ShowToast
do arquivo PrintBackgroundTask.cs. Ele mostra como gerar uma notificação do sistema com base em duas cadeias de caracteres, denominadas 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 qualquer uma, um parâmetro será passado para o aplicativo por meio da propriedade LaunchActivatedEventArgs.arguments
. Para obter mais informações sobre a ativação e o ciclo de vida do aplicativo da Microsoft Store, consulte Ciclo de vida do aplicativo.
Para determinar se seu aplicativo foi ativado em um desses casos, manipule o evento OnLaunched
e examine os argumentos de evento que são passados para o manipulador de eventos. Se os argumentos de evento forem nulos, o aplicativo foi ativado pelo usuário em Início. Se os argumentos de evento não forem nulos, o aplicativo foi iniciado de uma notificação do sistema ou um bloco.
Este exemplo é do método OnLaunched
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: Acessar detalhes da notificação
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 bidirecional são recuperados das configurações do aplicativo no exemplo Configurações de impressão e notificações de impressão. O código é do método DisplayBackgroundTaskTriggerDetails
do arquivo InkLevel.xaml.cs. Observe que os valores de índice de chave, keyPrinterName
e keyAsyncUIXML
, são as mesmas constantes de cadeia de caracteres 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;
}
Testando
Para que você possa testar seu aplicativo de dispositivo UWP, ele deve estar vinculado à impressora usando metadados do dispositivo.
Você precisa de uma cópia do pacote de metadados do dispositivo para sua impressora, a fim de adicionar as informações do aplicativo do dispositivo a ele. Se você não tiver metadados de dispositivo, poderá criá-los usando o Assistente de Criação de Metadados de Dispositivo, conforme descrito no tópico Criar metadados de dispositivo para seu aplicativo de dispositivo UWP.
Para usar o Assistente de Criação de Metadados de 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 tópico. 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.
Habilite a assinatura para teste.
Inicie o Assistente de Criação de Metadados de Dispositivo em %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86, clicando duas vezes DeviceMetadataWizard.exe
No menu Ferramentas, selecione Habilitar Assinatura para Teste.
Reinicialize o computador
Crie a solução abrindo o arquivo de solução (.sln). Pressione F7 ou vá para Criar->Criar Solução no menu superior depois que o exemplo foi carregado.
Desconecte e desinstale a impressora. Esta etapa será requerida para que o Windows leia os metadados de dispositivo atualizados na próxima vez que o dispositivo for detectado.
Edite e salve o metadados do dispositivo. Para vincular o aplicativo de dispositivo ao seu dispositivo, você deve associá-lo ao seu dispositivo.
Se você ainda não criou os metadados do dispositivo, consulte Criar metadados de dispositivo para seu aplicativo de dispositivo UWP.
Se o Assistente de Criação de Metadados de Dispositivo ainda não estiver aberto, inicie-o em %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86, clicando duas vezes em DeviceMetadataWizard.exe.
Clique em Editar metadados do dispositivo. Isso permitirá que você edite o pacote de metadados do dispositivo existente.
Na caixa de diálogo Abrir, localize o pacote de metadados do dispositivo associado ao seu aplicativo de dispositivo UWP. (Ele tem uma extensão de arquivo devicemetadata-ms.)
Na página Especificar informações do aplicativo de dispositivo UWP, insira as informações do aplicativo da Microsoft Store na caixa Aplicativo de dispositivo UWP. Clique em Importar arquivo de manifesto do aplicativo UWP para inserir automaticamente o Nome do pacote, o Nome do editor e a ID de aplicativo UWP.
Se seu aplicativo estiver registrado para receber notificações de impressora, preencha a caixa Manipuladores de notificação. Em ID do evento, insira o nome do manipulador de eventos de impressão. Em Ativo de Evento, insira o nome do arquivo em que esse código reside.
Quando terminar, clique em Avançar até chegar à página Concluir.
Na página Revisar o pacote de metadados do dispositivo, verifique se todas as configurações estão corretas e marque a caixa de seleção Copiar o pacote de metadados de dispositivo para o repositório de metadados no computador local. Em seguida, clique em Salvar.
Reconecte a impressora para que o Windows leia os metadados atualizados do dispositivo quando ele está conectado.
Solução de problemas
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 Depuração neste tópico para obter informações sobre como ativá-la.
Causa possível: as políticas de domínio desabilitaram as notificações do sistema. Saia do domínio e tente novamente.
Causa possível: a impressora não implementou DriverEvents. Verifique se o driver v4 tem suporte para Bidirecional e DriverEvents. Para obter mais informações, consulte Suporte de driver para interface do usuário personalizada.
Causa possível: a máquina não tem nenhum trabalho recente na fila da impressora. Verifique se o ícone da impressora é exibido 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á no mesmo projeto que seu aplicativo em primeiro plano. Isso não é permitido. Separe uma classe totalmente nova para o manipulador de tarefas em segundo plano.Causa possível: a classe que é o ponto de entrada para notificações em seu aplicativo é fornecida incorretamente em seu manifesto ou metadados do dispositivo, fazendo com que o aplicativo falhe no backgroundhost e não mostre nenhuma notificação do sistema. Confira o seguinte:
Verifique se o ponto de entrada é fornecido 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() depois de concluído.
A classe C# tem que implementar Windows.ApplicationModel.Background.IBackgroundTask e tem que ter um método public void
Run(Windows.ApplicationModel.Background.IBackgroundTaskInstance taskInstance)
.A classe C++ tem que implementar Windows::ApplicationModel::Background::IBackgroundTask e tem que ter um método
virtual void Run(Windows::ApplicationModel::Background::IBackgroundTaskInstance^ taskInstance)
.
Tópicos relacionados
Visão geral do selo (aplicativos UWP)
Visão geral de bloco e notificação de bloco (aplicativos UWP)
Diretrizes e lista de verificação para blocos e selos (aplicativos UWP)
Visão geral da notificação do sistema (aplicativos UWP)
Diretrizes e lista de verificação para notificações do sistema (aplicativos UWP)
Suporte de driver para interface do usuário personalizada
Desenvolvendo drivers de impressão v4
Interfaces de extensão de impressora (driver de impressão v4)
Introdução aos aplicativos UWP
Criar um aplicativo de dispositivo UWP (guia passo a passo)
Criar metadados de dispositivo para um aplicativo de dispositivo UWP (guia passo a passo)