Kanał push powiadomień push Windows Phone 8 zawsze tworzy nowy uri kanału

Chciałem sprawdzić, czy moja implementacja powiadomień wypychanych jest poprawna.

Za każdym razem, gdy otwieram aplikację (w rzeczywistości rejestruję kanał push tylko na określonej stronie, więc za każdym razem, gdy przechodzę tam iz powrotem), tworzony jest nowy URI kanału push, który przechowuję w mojej bazie danych usług mobilnych, aby wysłać powiadomienia push do. Nie wydaje mi się to poprawne, ponieważ za każdym razem, gdy aplikacja / strona jest otwierana, generowany jest nowy identyfikator URI kanału push, więc lista identyfikatorów URI kanału po prostu rośnie i rośnie dla każdego urządzenia korzystającego z mojej aplikacji. Zakładam, że tworzysz kanał push, przechowujesz URI kanału i przesuwasz do niego w razie potrzeby. Zanotuję tutaj, że używam surowych powiadomień push.

Rozumiem, że kanały push wygasają co jakiś czas, ale dla mnie występuje za każdym razem, gdy wycofuję się z aplikacji / strony i dlatego, gdy wywoływana jest funkcja onNavigateTo, znajduję kanał push, który istnieje i zawsze tworzony jest nowy URI kanału. Czy to jest poprawne?

Mój kod jest następujący:

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

Aby wyjaśnić, aplikacja jest otwierana, a kanał push jest rejestrowany, a uri kanału jest zapisywany w mojej usłudze internetowej. Serwis internetowy wysyła następnie powiadomienia do uri kanału. Kiedy wychodzę z aplikacji lub strony i wracam do niej, kanał push zostaje znaleziony, ale tworzony jest nowy kanał uri, który ponownie zapisuję w mojej usłudze internetowej. Tabela moich kanałów w rzeczywistości stale rośnie i rośnie.

Czy tak powinno działać z ciągle generowanymi nowymi URI kanałów? To nie ma dla mnie sensu. Nie jestem pewien, jak działają powiadomienia toastowe i kafelkowe, ale zakładam, że identyfikator URI kanału musi być statyczny, gdy aplikacja zamyka się, aby otrzymywać powiadomienia, gdy aplikacja jest zamknięta, ale może to być funkcja bindtotoast i bindtotile to co robię jest poprawne, ponieważ ma to związek z surowymi powiadomieniami.

questionAnswers(1)

yourAnswerToTheQuestion