5

Un URI del canal de notificación almacenado puede quedarse obsoleto mientras mi aplicación está inactiva, es decir, detenida, desechada o inactiva. ¿Cuál es la mejor práctica para actualizar el URI del canal con mi servicio web después de un período de inactividad?Cómo actualizar el URI del canal MPNS después de la inactividad de la aplicación

Varios artículos en la web mencionan "recuperar" el URI para enviarlo al servicio web. Pero, por lo que puedo decir, la única forma de que mi aplicación aprenda el URI del canal es a través del evento ChannelUriUpdated en HttpNotificationChannel, y no se puede controlar ese evento. MPNS puede haber cambiado el URI mientras mi aplicación estaba inactiva. Si la aplicación no puede responder al ChannelUriUpdated, el URI sería obsoleto tanto en mi aplicación como en mi servicio web.

Tal vez un canal devuelto por HttpNotificationChannel.Find siempre tiene un URI de canal actualizado?

+0

Para aclarar, no estoy preguntando cómo rastrear el URI del canal en general. Estoy preguntando cómo _asegurar_ que el URI del canal esté actualizado inmediatamente _después_ la aplicación se despierta de un período de inactividad (p. Ej., Tombstoning). – lencharest

+0

Cuando su aplicación se despierta de tombstoning, si su canal actual no es válido, obtendrá NotificationChannel.ChannelUri nulo. En ese caso, simplemente notifíquelo a su servicio web y espere para obtener un nuevo enlace de ChannelUriUpdated. No hay forma de extraer un nuevo URI de canal de MPNS. –

Respuesta

0

La mejor práctica general es solicitar el Uri del canal actual cada vez que se inicia la aplicación. Dentro de la aplicación debe realizar un seguimiento del último valor devuelto (a través de las invocaciones de la aplicación) y si se ha modificado para cargarlo en su servicio web.

+0

¿Cómo solicita el URI del canal? El evento ChannelUriUpdated permite que MPNS agregue un nuevo valor a la aplicación, pero ¿cómo "extraigo" el URI actual de MPNS? No veo una API para eso. – lencharest

+0

En una reflexión más profunda, me pregunto si quiere decir que simplemente debería obtener la propiedad Http.NotificationChannel.ChannelUri. – lencharest

+0

@lencharest Supongo que tendrás que almacenar en memoria aislada el nuevo URI cada vez que te despidan del evento ChannelUriUpdated. Luego, como un ciclo interminable, su último canal guardado Uri es el "actual" y el nuevo canal reflejado en el evento de notificación es el nuevo. Compare, y si son diferentes, notifique a su servicio web. –

0

Por favor, siga este documento actualizado here. lo que hace es ejecutar una secuencia de comandos en la inserción del canal uri, comprueba si el URI del canal sale, si existe, no inserta el registro, de lo contrario, inserta el registro. entonces, una vez que caduca el canal uri para un dispositivo, se le asigna un nuevo canal uri al dispositivo, en ese caso, se insertan los desajustes de comparación y el nuevo canal uri. Al hacerlo, el dispositivo siempre recibe la notificación.

Nota: para aprovechar esa funcionalidad, debe enviar una inserción cada vez que se inicie la aplicación. espero que esto ayude.

Cuestiones relacionadas