Configurar la aplicación para notificaciones de inserción dirigidas

Puedes usar la página Notificaciones push del Centro de partners para interactuar directamente con los clientes mediante el envío de notificaciones push dirigidas a los dispositivos en los que está instalada tu aplicación de Plataforma universal de Windows (UWP). Por ejemplo, puedes usar las notificaciones push dirigidas para sugerir a los clientes que realicen una determinada acción, como valorar tu aplicación o probar una nueva característica. Puedes enviar diferentes tipos de notificaciones de inserción, incluidas notificaciones del sistema, notificaciones de icono y notificaciones XML sin formato. También puedes supervisar la tasa de inicios de la aplicación que se derivan de las notificaciones de inserción. Para obtener más información acerca de esta característica, consulta Enviar notificaciones de inserción a los clientes de la aplicación.

Para poder enviar notificaciones push dirigidas a los clientes desde el Centro de partners, debes usar un método de la clase StoreServicesEngagementManager en el Microsoft Store Services SDK para registrar la aplicación para recibir notificaciones. Puedes usar métodos adicionales de esta clase para notificar al Centro de partners que tu aplicación se inició en respuesta a una notificación push dirigida (si quieres realizar un seguimiento de la tasa de inicios de la aplicación resultantes de las notificaciones) y dejar de recibir notificaciones.

Configurar el proyecto

Antes de escribir código, sigue estos pasos para agregar una referencia al Microsoft Store Services SDK en tu proyecto:

  1. Si aún no lo has hecho, instala el Microsoft Store Services SDK en el equipo de desarrollo.
  2. Abra el proyecto en Visual Studio.
  3. En el Explorador de soluciones, haz clic con el botón secundario en el nodo Referencias del proyecto y haz clic en Agregar referencia.
  4. En el cuadro de diálogo Administrador de referencias, expande Windows Universal y haz clic en Extensiones.
  5. En la lista de los SDK, haz clic en la casilla junto a Microsoft Engagement Framework y haz clic en Aceptar.

Registro de notificaciones push

Para registrar la aplicación para recibir notificaciones push dirigidas desde el Centro de partners:

  1. En el proyecto, busque una sección de código que se ejecute durante el inicio en el que puede registrar la aplicación para recibir notificaciones.

  2. Agrega esta instrucción en la parte superior del archivo de código.

    using Microsoft.Services.Store.Engagement;
    
  3. Obtén un objeto StoreServicesEngagementManager y llama a una de las sobrecargas RegisterNotificationChannelAsync del código de inicio que identificaste anteriormente. Se llamará a este método cada vez que se inicie la aplicación.

  • Si quieres que el Centro de partners cree su propio URI de canal para las notificaciones, llama a la sobrecarga RegisterNotificationChannelAsync().

    StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault();
    await engagementManager.RegisterNotificationChannelAsync();
    

    Importante

    Si la aplicación también llama a CreatePushNotificationChannelForApplicationAsync para crear un canal de notificación para WNS, asegúrese de que el código no llama a CreatePushNotificationChannelForApplicationAsync y la sobrecarga RegisterNotificationChannelAsync() simultáneamente. Si necesitas llamar a estos dos métodos, llámalos secuencialmente y espera la devolución de un método antes de llamar al otro.

  • Si quieres especificar el URI del canal que se usará para las notificaciones push dirigidas del Centro de partners, llama a la sobrecarga RegisterNotificationChannelAsync(StoreServicesNotificationChannelParameters). Por ejemplo, es posible que quieras hacer esto si tu aplicación ya usa Servicios de notificaciones de inserción de Windows (WNS) y quieres usar el mismo URI de canal. Primero debes crear un objeto StoreServicesNotificationChannelParameters y asignar la propiedad CustomNotificationChannelUri al URI de tu canal.

    StoreServicesNotificationChannelParameters parameters =
        new StoreServicesNotificationChannelParameters();
    parameters.CustomNotificationChannelUri = "Assign your channel URI here";
    
    StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault();
    await engagementManager.RegisterNotificationChannelAsync(parameters);
    

Nota

Al llamar al método RegisterNotificationChannelAsync , se crea un archivo denominado MicrosoftStoreEngagementSDKId.txt en el almacén de datos de la aplicación local para la aplicación (la carpeta devuelta por la propiedad ApplicationData.LocalFolder ). Este archivo contiene un identificador que usa la infraestructura de notificaciones push de destino. Asegúrate de que la aplicación no modifique ni elimine este archivo. De lo contrario, los usuarios pueden recibir varias instancias de notificaciones o es posible que las notificaciones no se comporten correctamente de otras maneras.

Cómo se enrutan las notificaciones push dirigidas a los clientes

Cuando la aplicación llama a RegisterNotificationChannelAsync, este método recopila la cuenta Microsoft del cliente que ha iniciado sesión actualmente en el dispositivo. Más adelante, cuando envías una notificación push dirigida a un segmento que incluye este cliente, el Centro de partners envía la notificación a los dispositivos asociados a la cuenta Microsoft de este cliente.

Si el cliente que inició la aplicación proporciona su dispositivo a otra persona para usarlo mientras sigue iniciando sesión en el dispositivo con su cuenta Microsoft, tenga en cuenta que la otra persona puede ver la notificación dirigida al cliente original. Esto puede tener consecuencias imprevistas, especialmente para las aplicaciones que ofrecen servicios que los clientes pueden iniciar sesión para usarlos. Para evitar que otros usuarios vean las notificaciones de destino en este escenario, llame al método UnregisterNotificationChannelAsync cuando los clientes cierren la sesión de la aplicación. Para obtener más información, vea Anular el registro de las notificaciones push más adelante en este artículo.

Cómo responde la aplicación cuando el usuario inicia la aplicación

Una vez registrada la aplicación para recibir notificaciones y enviar una notificación push a los clientes de la aplicación desde el Centro de partners, se llamará a uno de los siguientes puntos de entrada de la aplicación cuando el usuario inicie la aplicación en respuesta a la notificación push. Si tienes código que quieres que se ejecute cuando el usuario inicie la aplicación, puedes agregar el código a uno de estos puntos de entrada de tu aplicación.

  • Si la notificación de inserción tiene un tipo de activación en primer plano, anula el método OnActivated de la clase App de tu proyecto y agrega el código a este método.

  • Si la notificación de inserción tiene un tipo de activación en segundo plano, agrega el código al método Run para la tarea en segundo plano.

Por ejemplo, es posible que quieras recompensar a los usuarios de la aplicación que hayan adquirido complementos de pago en la aplicación regalándoles un complemento gratuito. En este caso, puedes enviar una notificación de inserción a un segmento de clientes que esté dirigida específicamente a esos usuarios. A continuación, puedes agregar código para regalarles una compra desde la aplicación gratuita en uno de los puntos de entrada señalados anteriormente.

Notificar al Centro de partners el inicio de la aplicación

Si seleccionas la opción Track app launch rate for your targeted push notification in Partner Center ,llama al método ParseArgumentsAndTrackAppLaunch desde el punto de entrada adecuado de la aplicación para notificar al Centro de partners que la aplicación se inició en respuesta a una notificación push.

Este método devuelve también los argumentos de inicio originales de la aplicación. Al elegir realizar un seguimiento de la velocidad de inicio de la aplicación para la notificación de inserción, se agrega un identificador de seguimiento opaco a los argumentos de inicio para ayudar a realizar el seguimiento del inicio de la aplicación en el Centro de partners. Debes pasar los argumentos de inicio de la aplicación al método ParseArgumentsAndTrackAppLaunch y este método envía el identificador de seguimiento al Centro de partners, quita el identificador de seguimiento de los argumentos de inicio y devuelve los argumentos de inicio originales al código.

La forma de llamar a este método depende del tipo de activación de la notificación push:

  • Si la notificación de inserción tiene un tipo de activación en primer plano, llama a este método desde la invalidación del método OnActivated y pasa los argumentos que están disponibles en el objeto ToastNotificationActivatedEventArgs que se pasa a este método. En el ejemplo de código siguiente se supone que el archivo de código tiene instrucciones using para los espacios de nombres Microsoft.Services.Store.Engagement y Windows.ApplicationModel.Activation .

    protected override void OnActivated(IActivatedEventArgs args)
    {
        base.OnActivated(args);
    
        if (args is ToastNotificationActivatedEventArgs)
        {
            var toastActivationArgs = args as ToastNotificationActivatedEventArgs;
    
            StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault();
            string originalArgs = engagementManager.ParseArgumentsAndTrackAppLaunch(
                toastActivationArgs.Argument);
    
            // Use the originalArgs variable to access the original arguments
            // that were passed to the app.
        }
    }
    
  • Si la notificación de inserción tiene un tipo de activación en segundo plano, llama a este método desde el método Run para tu tarea en segundo plano y pasa los argumentos que están disponibles en el objeto ToastNotificationActionTriggerDetail que se pasa a este método. El siguiente ejemplo de código da por hecho que el archivo de código tiene instrucciones using para los espacios de nombres Microsoft.Services.Store.Engagement, Windows.ApplicationModel.Background y Windows.UI.Notifications.

    public void Run(IBackgroundTaskInstance taskInstance)
    {
        var details = taskInstance.TriggerDetails as ToastNotificationActionTriggerDetail;
    
        if (details != null)
        {
            StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault();
            string originalArgs = engagementManager.ParseArgumentsAndTrackAppLaunch(details.Argument);
    
            // Use the originalArgs variable to access the original arguments
            // that were passed to the app.
        }
    }
    

Anular el registro para notificaciones de inserción

Si quieres que tu aplicación deje de recibir notificaciones push dirigidas desde el Centro de partners, llama al método UnregisterNotificationChannelAsync .

StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault();
await engagementManager.UnregisterNotificationChannelAsync();

Ten en cuenta que este método invalida el canal que se esté utilizando para las notificaciones, de manera que la aplicación ya no recibirá notificaciones de inserción de ningún servicio. Una vez cerrado, el canal no se puede volver a usar para ningún servicio, incluidas las notificaciones push dirigidas del Centro de partners y otras notificaciones mediante WNS. Para reanudar el envío de notificaciones de inserción a esta aplicación, la aplicación debe solicitar un nuevo canal.