El canal push de notificación de Windows Phone 8 siempre crea un nuevo canal uri

Quería comprobar que la implementación de mi notificación push es correcta.

Cada vez que abro mi aplicación (de hecho, registro el canal de inserción solo en una página específica, así que cada vez que voy y vengo de esa página) se crea un nuevo URI de canal de inserción que almaceno en mi base de datos de servicios móviles para enviar Notificaciones push a. Esto no me parece correcto, ya que cada vez que se abre la aplicación / página, se genera un nuevo URI de canal de inserción y, por lo tanto, la lista de URI de canal solo crece y crece para cada dispositivo que usa mi aplicación. Supongo que creas un canal de inserción, almacenas el URI del canal y lo presionas según sea necesario. Anotaré aquí que estoy usando notificaciones push sin procesar.

Entiendo que los canales de inserción caducarán de vez en cuando, pero para mí está ocurriendo cada vez que salgo de la aplicación / página y, por lo tanto, cuando se llama onNavigateTo, encuentro el canal de inserción que existe y siempre se crea un nuevo URI de canal. ¿Es esto correcto?

Mi código es el siguiente:

anulación protegida void OnNavigatedTo (NavigationEventArgs e) {registerPushChannel (); }

private void registerPushChannel()
    {
        // The name of our push channel.
        string channelName = "RawSampleChannel";

        // Try to find the push channel.
        pushChannel = HttpNotificationChannel.Find(channelName);

        // If the channel was not found, then create a new connection to the push service.
        if (pushChannel == null)
        {
            pushChannel = new HttpNotificationChannel(channelName);

            // Register for all the events before attempting to open the channel.
            pushChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(PushChannel_ChannelUriUpdated);
            pushChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(PushChannel_ErrorOccurred);
            pushChannel.HttpNotificationReceived += new EventHandler<HttpNotificationEventArgs>(PushChannel_HttpNotificationReceived);

            pushChannel.Open();

        }
        else
        {
            // The channel was already open, so just register for all the events.
            pushChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(PushChannel_ChannelUriUpdated);
            pushChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(PushChannel_ErrorOccurred);
            pushChannel.HttpNotificationReceived += new EventHandler<HttpNotificationEventArgs>(PushChannel_HttpNotificationReceived);

            // code which passes the new channel URI back to my web service               

        }

    }

protected override void OnNavigatedFrom(NavigationEventArgs e)
    {
        pushChannel.Close();
    }

Entonces, para aclarar, la aplicación se abre y el canal de inserción se registra y el canal uri se guarda en mi servicio web. El servicio web luego envía notificaciones al canal uri. Cuando salgo de la aplicación o la página y vuelvo a ella, se encuentra el canal de inserción, pero se crea un nuevo canal uri, que nuevamente guardo en mi servicio web. Mi tabla de canales en efecto sigue creciendo y creciendo.

¿Entonces esta es la forma en que debería funcionar con los nuevos URI de canal generados continuamente? No tiene sentido para mí. No estoy seguro de cómo funcionan las notificaciones de tostado y mosaico, pero asumo que el URI del canal debe ser estático cuando la aplicación se cierra para seguir recibiendo notificaciones mientras la aplicación está cerrada, pero quizás esa sea una funcionalidad de bindtotoast y bindtotile Lo que estoy haciendo es correcto porque tiene que ver con notificaciones sin procesar.

Respuestas a la pregunta(1)

Su respuesta a la pregunta