Compartir a través de


Trabajar con notificaciones de impresión en una aplicación de dispositivo para UWP

Important

Los metadatos de dispositivo están obsoletos y se eliminarán en una futura versión de Windows. Para obtener información sobre el reemplazo de esta funcionalidad, vea Driver Package Container Metadata.

Las aplicaciones de dispositivos para UWP pueden responder a eventos de comunicación bidireccional (Bidi) que se envían desde un controlador de impresión v4. En este artículo se presentan las notificaciones de impresión y se muestra cómo la versión de C# de la configuración de impresión y el ejemplo de notificaciones de impresión usa una tarea en segundo plano para responder a la notificación de impresión. La tarea en segundo plano muestra cómo guardar los detalles de las notificaciones en el almacén de datos de la aplicación local, enviar brindis y actualizar un mosaico y un distintivo. Para obtener más información sobre las aplicaciones de dispositivos para UWP en general, consulta Meet UWP device apps (Conocer aplicaciones de dispositivos para UWP).

La versión de C# del ejemplo Configuración de impresión e notificaciones de impresión muestra la parte en segundo plano de la aplicación (la tarea en segundo plano) del proyecto BackgroundTask . The code for the background task is in the PrintBackgroundTask.cs file. The foreground app, the full-screen app that can be launched from Start, is in the DeviceAppForPrinters project. The InkLevel.xaml.cs file shows one way that notification details can be accessed from the foreground app. To work with print notifications, the sample uses the printer extension library in the PrinterExtensionLibrary project. La biblioteca de extensiones de impresora proporciona una manera cómoda de acceder a las interfaces de extensión de impresora del controlador de impresión v4. Para obtener más información, consulte introducción a la biblioteca de extensiones de impresora.

Los ejemplos de código que se muestran en este artículo se basan en la versión de C# del ejemplo De configuración de impresión e notificaciones de impresión . Este ejemplo también está disponible en JavaScript y C++. Dado que C++ puede acceder directamente a COM, la versión de C++ del ejemplo no incluye proyectos de biblioteca de código. Descargue los ejemplos para ver las versiones más recientes del código.

Las notificaciones de impresión permiten que la aplicación de dispositivo para UWP informe al usuario de eventos importantes de impresora durante la impresión, como un atasco de papel, una puerta de impresora abierta, niveles de tinta bajos o errores de impresión fuera de papel. Cuando una impresora desencadena una notificación, el agente de eventos del sistema ejecuta la tarea en segundo plano de la aplicación. Desde allí, la tarea en segundo plano puede guardar los detalles de la notificación, enviar una notificación del sistema, actualizar un icono, actualizar un distintivo o no hacer nada. Al guardar los detalles de la notificación, la aplicación puede proporcionar una experiencia que ayude a los usuarios a comprender y corregir sus problemas de impresora.

Los fabricantes de impresoras deben implementar Bidi y el archivo XML DriverEvent en su controlador de impresión v4 para usar las notificaciones de impresión con sus aplicaciones de dispositivo para UWP. For more information, see Bidirectional Communications.

Cuando se produce un DriverEvent y la tarea en segundo plano de una aplicación de dispositivo para UWP se inicia, la aplicación tiene varias opciones sobre cómo puede continuar. Para obtener más información sobre el flujo que conduce al inicio de la tarea, consulte Compatibilidad con controladores para la interfaz de usuario personalizada.

La tarea en segundo plano puede elegir:

La notificación del icono o la notificación del sistema pueden permitir al usuario iniciar convenientemente la aplicación en primer plano. When the foreground app is launched, it can use the OnLaunched method in App.xaml.cs to check if it was launched by a tile or toast. Si es así, la aplicación en primer plano puede acceder a cualquier detalle de notificación de impresión en el almacén de datos de la aplicación local.

Prerequisites

Antes de comenzar:

  1. Asegúrese de que la impresora está instalada mediante un controlador de impresión v4. Para más información, consulte Desarrollo de controladores de impresión v4.

  2. Configure tu PC de desarrollo. See Getting started for information about downloading the tools and creating a developer account.

  3. Asocie la aplicación a la tienda. Para obtener más información, consulta Crear una aplicación de dispositivo para UWP.

  4. Cree metadatos de dispositivo para la impresora que la asocie a la aplicación. Para obtener más información, consulte Creación de metadatos de dispositivo.

  5. Compile la interfaz de usuario para la página principal de la aplicación. Todas las aplicaciones de dispositivos para UWP se pueden iniciar desde Inicio, donde se muestran en pantalla completa. Utiliza la experiencia de inicio para resaltar tus productos o servicios de una manera que coincida con la imagen de marca y las características específicas de tus dispositivos. No hay restricciones especiales en el tipo de controles de interfaz de usuario que puede usar. Para empezar a trabajar con el diseño de la experiencia de pantalla completa, consulta los principios de diseño de Microsoft Store.

  6. If you're writing your app with C# or JavaScript, add the PrinterExtensionLibrary and DeviceAppForPrintersLibrary projects to your UWP device app solution. Puede encontrar cada uno de estos proyectos en el ejemplo Configuración de impresión e notificaciones de impresión .

Dado que C++ puede acceder directamente a COM, las aplicaciones de C++ no requieren una biblioteca independiente para trabajar con el contexto del dispositivo de impresora basado en COM.

Paso 1: Registrar tarea en segundo plano

Para que Windows reconozca que la aplicación puede controlar las notificaciones de impresión, debe registrar una extensión de tareas en segundo plano para las notificaciones de impresión. Esta extensión se declara en un Extension elemento, con un Category atributo establecido windows.backgroundTasks en y un EntryPoint atributo establecido BackgroundTask.PrintBackgroundTasken . La extensión también incluye un Task elemento para indicar que admite systemEvent tipos de tareas.

You can add the print background task extension on the Declarations tab of the Manifest Designer in Microsoft Visual Studio. También puede editar manualmente el xml del manifiesto del paquete de la aplicación mediante el Editor XML (texto). Right-click the Package.appxmanifest file in Solution Explorer for editing options.

This example shows the background task extension in the Extension element, as it appears in the app package manifest file, 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>

Paso 2: Configuración de metadatos de dispositivo

Cuando uses el Asistente para crear metadatos de dispositivo para asociar tu aplicación al dispositivo, asegúrate de completar el cuadro Controladores de notificaciones en la página Especificar información de la aplicación de dispositivo para UWP . Esto ayuda a garantizar que se llama a la tarea en segundo plano de la aplicación durante una notificación de impresión.

For step-by-step instructions on how to edit your device metadata, see the Testing section.

Paso 3: Compilación de la interfaz de usuario

Antes de compilar la aplicación, debe trabajar con los diseñadores y el equipo de marketing para diseñar la experiencia del usuario. La experiencia del usuario debe proyectar los aspectos de personalización de marca de su empresa y ayudarle a crear una conexión con los usuarios.

Design guidelines

Es importante revisar las directrices de la aplicación de Microsoft Store antes de diseñar la experiencia de icono y distintivo. Las directrices ayudan a garantizar que la aplicación proporciona una experiencia intuitiva que es coherente con otras aplicaciones para UWP.

Para la página principal de la aplicación, tenga en cuenta que Windows 8.1 puede mostrar varias aplicaciones en varios tamaños en un solo monitor. Consulta las instrucciones siguientes para obtener más información sobre cómo la aplicación puede volver a conectarse correctamente entre tamaños de pantalla, tamaños de ventana y orientaciones.

Best practices

  • No incluya palabras de acción en las notificaciones. En el mensaje de notificación, no use texto que indique a los usuarios que inserte, presione o seleccione la notificación. Los usuarios ya saben que pueden presionar una notificación del sistema para encontrar más información. Por ejemplo, simplemente escriba "Su impresora está baja en la entrada de lápiz" en lugar de "Su impresora está baja en la entrada de lápiz. Presione para solucionar problemas".

  • Mantenga las interacciones sencillas. Todo lo que se muestra en la experiencia de notificaciones debe estar relacionado con la notificación. Por ejemplo, una página de notificación sobre un atasco de papel solo debe contener vínculos e información sobre cómo resolver ese problema. No debe contener vínculos a experiencias no relacionadas, como la entrada de lápiz de compra u otra información de soporte técnico.

  • Use multimedia. Use fotos, vídeos o ilustraciones reales del dispositivo para ayudar a los usuarios a resolver rápidamente un problema con su dispositivo.

  • Mantenga a los usuarios dentro del contexto de la aplicación. Al proporcionar información sobre un problema, no vincule a los materiales de soporte técnico en línea ni a otros materiales de soporte técnico. Mantenga al usuario en el contexto de la aplicación.

Paso 4: Crear tarea en segundo plano

Si la aplicación registra una tarea en segundo plano para las notificaciones de impresión, debe proporcionar un controlador para la activación de la tarea en segundo plano. En el ejemplo Configuración de impresión e notificaciones de impresión , la PrintBackgroundTask clase controla las notificaciones de impresión.

Si el estado de la impresora no requiere intervención inmediata del usuario, actualice un icono en lugar de mostrar una notificación del sistema. Por ejemplo, para una condición de entrada de lápiz baja, una actualización de icono es suficiente. Pero si la impresora está fuera de entrada de lápiz, la aplicación podría mostrar una notificación del sistema.

Guardar los detalles de la notificación

La tarea en segundo plano no puede iniciar la aplicación en primer plano directamente, solo el usuario puede: desde un icono, notificación del sistema o Inicio. Por lo tanto, para asegurarse de que la aplicación en primer plano pueda acceder a los detalles de la notificación de impresión, la tarea en segundo plano las guarda en el almacenamiento local. Para obtener más información sobre el uso del almacenamiento local, consulte Inicio rápido: datos de la aplicación local.

Cuando se desencadena una notificación de impresión, Windows ejecuta la tarea en segundo plano llamando a su Run método. Los datos de notificación se pasan a la tarea en segundo plano a través de un parámetro de método que se debe convertir al tipo Windows.Devices.Printers.Extensions.PrintNotificationEventDetails. Las PrinterName propiedades y EventData de ese objeto llevan el nombre de la impresora y el mensaje Bidi, respectivamente.

This example shows the background task's Run method, in the PrintBackgroundTask.cs file, where the print notification details are saved to app settings before the toast, tile, and badge methods are called.

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

Actualización de un icono

Cuando los detalles de la notificación de impresión se envían al UpdateTile método , la tarea en segundo plano del ejemplo muestra cómo mostrarlos en un icono. Para obtener más información sobre los iconos, consulte Información general sobre las notificaciones de iconos y iconos.

This example shows the background task's UpdateTile method, in the PrintBackgroundTask.cs file.

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

Actualización de un distintivo

El UpdateBadge método muestra cómo usar la clase BadgeNotification para actualizar un distintivo. For more information about tiles, see Badge overview.

This example shows the background task's UpdateBadge method, in the PrintBackgroundTask.cs file.

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

Generar una notificación del sistema

Una notificación del sistema es un mensaje transitorio para el usuario que contiene información relevante, sensible al tiempo y proporciona acceso rápido al contenido relacionado de una aplicación. Las notificaciones del sistema deben verse a los usuarios como una invitación para volver a la aplicación para realizar un seguimiento de algo de interés. Para obtener más información, consulte Introducción a las notificaciones del sistema.

Para habilitar las notificaciones del sistema, la aplicación debe registrar que es compatible con la notificación del sistema en el manifiesto del paquete de la aplicación. En el VisualElements elemento , establezca el ToastCapable atributo en true.

Important

No se recomienda mostrar siempre una notificación del sistema, especialmente para eventos que no son de acción. Esto podría resultar molesto para los usuarios y hacer que desactiven todas las notificaciones del sistema de una aplicación. En el caso de los eventos que no requieren la atención inmediata del usuario, se recomienda actualizar solo el icono y el distintivo, y no mostrar una notificación del sistema.

This example shows the ToastCapable attribute in the VisualElements element, as it appears in the app package manifest file, 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>

This example is from the ShowToast method of the PrintBackgroundTask.cs file. Muestra cómo generar una notificación del sistema basada en dos cadenas, denominadas title y 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);
}

Paso 5: Controlar la activación

Después de que una notificación de impresión desencadene la tarea en segundo plano, la aplicación se puede iniciar pulsando una notificación del sistema o un icono. Si la aplicación se activa desde cualquiera de las dos, se pasa un parámetro a la aplicación a través LaunchActivatedEventArgs.arguments de la propiedad . For more information about activation and the Microsoft Store app lifecycle, see Application lifecycle.

Para determinar si la aplicación se activó en uno de estos casos, controla el OnLaunched evento y examina los argumentos de evento que se pasan al controlador de eventos. Si los argumentos de evento son NULL, el usuario activó la aplicación desde Inicio. Si los argumentos del evento no son NULL, la aplicación se inició desde una notificación del sistema o un icono.

This example is from the OnLaunched method of the App.xaml.cs file. Muestra cómo controlar la activación desde la notificación del sistema o los iconos.

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

Paso 6: Obtener acceso a los detalles de la notificación

Dado que la tarea en segundo plano no puede iniciar directamente la aplicación en primer plano, los detalles de la notificación de impresión deben guardarse en la configuración de la aplicación para que la aplicación en primer plano pueda acceder a ellos. Para obtener más información sobre el uso del almacenamiento local, consulte Inicio rápido: datos de la aplicación local.

En este ejemplo se muestra cómo se recuperan el nombre de la impresora y el mensaje Bidi de la configuración de la aplicación en el ejemplo Configuración de impresión e notificaciones de impresión . The code is from the DisplayBackgroundTaskTriggerDetails method of the InkLevel.xaml.cs file. The key index values, keyPrinterName, and keyAsyncUIXML, are the same string constants that are used in the background task, 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

Para poder probar la aplicación de dispositivo para UWP, debe estar vinculada a la impresora mediante metadatos del dispositivo.

Necesita una copia del paquete de metadatos del dispositivo para la impresora para agregarle la información de la aplicación de dispositivo. Si no tiene metadatos de dispositivo, puede compilarlos mediante el Asistente para creación de metadatos de dispositivo, tal como se describe en el artículo Creación de metadatos de dispositivo para la aplicación de dispositivo para UWP.

Para usar el Asistente para creación de metadatos de dispositivo, debe instalar Microsoft Visual Studio Professional, Microsoft Visual Studio Ultimate o el SDK independiente para Windows 8.1, antes de completar los pasos de este artículo. La instalación de Microsoft Visual Studio Express para Windows instala una versión del SDK que no incluye el asistente.

Los pasos siguientes compilan la aplicación e instalan los metadatos del dispositivo.

  1. Habilite la firma de prueba.

    1. Inicie el Asistente para creación de metadatos de dispositivo desde %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86 haciendo doble clic enDeviceMetadataWizard.exe

    2. From the Tools menu, select Enable Test Signing.

  2. Reiniciar el equipo

  3. Compile la solución abriendo el archivo de solución (.sln). Presione F7 o vaya a Build-Build> Solution en el menú superior después de cargar el ejemplo.

  4. Desconecte y desinstale la impresora. Este paso es necesario para que Windows lea los metadatos del dispositivo actualizado la próxima vez que se detecte el dispositivo.

  5. Edite y guarde los metadatos del dispositivo. Para conectar la aplicación al dispositivo, debe asociarla con su equipo.

    Si aún no se han creado los metadatos del dispositivo, consulta Crear metadatos de dispositivo para tu aplicación de dispositivo para UWP.

    1. Si el Asistente para creación de metadatos de dispositivo aún no está abierto, inícielo desde %ProgramFiles(x86)%\Windows Kits\8.1\bin\x86, haciendo doble clic enDeviceMetadataWizard.exe.

    2. Seleccione Editar metadatos del dispositivo. Esta opción le permite editar el paquete de metadatos del dispositivo existente.

    3. In the Open dialog box, locate the device metadata package associated with your UWP device app. (It has a devicemetadata-ms file extension.)

    4. En la página Especificar información de la aplicación de dispositivo para UWP , escriba la información de la aplicación de Microsoft Store en el cuadro Aplicación de dispositivo para UWP . Seleccione Importar archivo de manifiesto de aplicación para UWP para escribir automáticamente el nombre del paquete, el nombre del publicador y el identificador de la aplicación para UWP.

    5. If your app is registering for printer notifications, fill out the Notification handlers box. In Event ID, enter the name of the print event handler. In Event Asset, enter the name of the file where that code resides.

    6. When you're done, select Next until you get to the Finish page.

    7. En la página Revisar el paquete de metadatos del dispositivo , asegúrese de que toda la configuración es correcta y active la casilla Copiar el paquete de metadatos del dispositivo en el almacén de metadatos del equipo local . Then select Save.

  6. Vuelva a conectar la impresora para que Windows lea los metadatos del dispositivo actualizados cuando el dispositivo esté conectado.

Troubleshooting

Problema: No aparece ninguna notificación del sistema predeterminada

Si no aparece ninguna notificación de impresión predeterminada cuando se espera...

  • Possible cause: Test signing isn't turned on. Consulte la sección Depuración de este artículo para obtener información sobre cómo activarla.

  • Possible cause: Toast notifications are disabled by domain policies. Deje el dominio e inténtelo de nuevo.

  • Possible cause: The printer hasn't implemented DriverEvents. Compruebe que el controlador v4 admite Bidi y DriverEvents. Para obtener más información, consulte Compatibilidad con controladores para la interfaz de usuario personalizada.

  • Possible cause: The machine has no recent job in the printer queue. Asegúrese de que el icono de la impresora se muestra en la esquina inferior derecha de la pantalla. Si no es así, envíe otro trabajo de impresión.

  • Possible cause: Your entry point for the background task (IBackgroundTask) is within the same project as your foreground app. No se permite este escenario. Separe una clase completamente nueva para el controlador de tareas en segundo plano.

  • Possible cause: The class that is the entry point for notifications in your app is incorrectly given in your manifest or device metadata, causing the app to crash within the background host and not showing any toast. Compruebe si se dan los problemas siguientes:

    • Make sure the entry point is given correctly in the Declarations tab of the Manifest Designer. Debe estar en forma de Namespace.ClassName para C# y C++. Para JavaScript, debe ser la ruta de acceso del directorio relativa al archivo .js.

    • Una aplicación de JavaScript debe llamar a close() una vez finalizada.

    • La clase de C# tiene que implementar Windows.ApplicationModel.Background.IBackgroundTask y tiene que tener un método void Run(Windows.ApplicationModel.Background.IBackgroundTaskInstance taskInstance) público.

    • La clase C++ tiene que implementar Windows::ApplicationModel::Background::IBackgroundTask y tiene que tener un virtual void Run(Windows::ApplicationModel::Background::IBackgroundTaskInstance^ taskInstance) método .