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 enviando notificaciones push dirigidas a los dispositivos en los que está instalada la aplicación de Plataforma universal de Windows (UWP). Por ejemplo, puedes usar notificaciones push dirigidas para animar a los clientes a realizar una acción, como clasificar la aplicación o probar una nueva característica. Puede enviar varios tipos diferentes de notificaciones push, incluidas las notificaciones del sistema, las notificaciones de icono y las notificaciones XML sin procesar. También puede realizar un seguimiento de la tasa de inicios de la aplicación resultantes de las notificaciones push. Para obtener más información sobre esta característica, consulta Enviar notificaciones push 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 SDK de Servicios de Microsoft Store para registrar la aplicación para recibir notificaciones. Puedes usar métodos adicionales de esta clase para notificar al Centro de partners que la 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 cualquier código, siga estos pasos para agregar una referencia al SDK de Servicios de Microsoft Store en el proyecto:
- Si aún no lo ha hecho, instale el SDK de Servicios de Microsoft Store en el equipo de desarrollo.
- Abra el proyecto en Visual Studio.
- En Explorador de soluciones, haga clic con el botón derecho en el nodo Referencias del proyecto y haga clic en Agregar referencia.
- En el Administrador de referencias, expanda Windows universal y haga clic en Extensiones.
- En la lista de SDK, haga clic en la casilla situada junto a Microsoft Engagement Framework y haga clic en Aceptar.
Registro de notificaciones push
Para registrar la aplicación para recibir notificaciones push dirigidas desde el Centro de partners:
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.
Agregue la siguiente instrucción a la parte superior del archivo de código.
using Microsoft.Services.Store.Engagement;
Obtenga un objeto StoreServicesEngagementManager y llame a una de las sobrecargas RegisterNotificationChannelAsync en el código de inicio que identificó anteriormente. Se debe 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 necesita llamar a ambos métodos, asegúrese de llamarlos secuencialmente y espere 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, puede que quieras hacerlo si la aplicación ya usa Servicios de notificaciones push de Windows (WNS) y quieres usar el mismo URI de canal. Primero debes crear un objeto StoreServicesNotificationChannelParameters y asignar la propiedad CustomNotificationChannelUri al URI del 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úrese 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 se envía 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 que lo use mientras todavía ha iniciado 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 dirigidas 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 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 tiene algún código que quiera ejecutar cuando el usuario inicie la aplicación, puede agregar el código a uno de estos puntos de entrada en la aplicación.
Si la notificación de inserción tiene un tipo de activación en primer plano, invalide el método OnActivated de la clase App del proyecto y agregue el código a este método.
Si la notificación de inserción tiene un tipo de activación en segundo plano, agregue el código al método Run para la tarea en segundo plano.
Por ejemplo, es posible que quiera recompensar a los usuarios de la aplicación que han comprado los complementos de pago de la aplicación concediéndoles un complemento gratuito. En este caso, puede enviar una notificación push a un segmento de cliente destinado a estos usuarios. A continuación, puede agregar código para concederles una compra gratuita desde la aplicación en uno de los puntos de entrada enumerados 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 también devuelve 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 de inserción:
Si la notificación de inserción tiene un tipo de activación en primer plano, llame a este método desde la invalidación del método OnActivated en la aplicación y pase los argumentos 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, llame a este método desde el método Run para la tarea en segundo plano y pase los argumentos disponibles en el objeto ToastNotificationActionTriggerDetail 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, 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. } }
Anulación del registro de las notificaciones push
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();
Tenga en cuenta que este método invalida el canal que se usa para las notificaciones para que la aplicación ya no reciba notificaciones push de ningún servicio. Una vez cerrado, el canal no se puede volver a usar para ningún servicio, incluidas las notificaciones push dirigidas desde el Centro de partners y otras notificaciones mediante WNS. Para reanudar el envío de notificaciones push a esta aplicación, la aplicación debe solicitar un nuevo canal.