Push-уведомление Windows Phone 7

Я разрабатываю приложение, которое поддерживает push-уведомления. У меня есть веб-служба, которая отправляет мне уведомление. Я написал следующий код, чтобы реализовать push-уведомление в своем приложении WP7.

  1. Создал Uri из приведенного ниже кода

            channel = new HttpNotificationChannel("Diary");
            channel.ShellToastNotificationReceived += channel_ShellToastNotificationReceived;
            channel.ChannelUriUpdated += channel_ChannelUriUpdated;
            channel.ErrorOccurred += channel_ErrorOccurred;
    
            channel.Open();
            channel.BindToShellToast();
            channel.BindToShellTile();
    

Вызвав вышеуказанный метод, я получил uri http://dm2.notify.live.net/throttledThirdParty/01.00/AQHhBKglq-YiSoltOFnZwEWxAgAAAAAADBwAAAAQUZm52OkJCMjg1QTg1QkZDMkUxREQFBlVTU0MwMQ

Это Uri, который я должен дать своей команде веб-сервиса.

Но каждый раз, когда я открываю свое приложение, uri моего канала меняется. Почему это динамично? Пожалуйста, направьте меня, иду ли я в правильном направлении или мне нужно где-то зарегистрировать свое приложение, чтобы получить uri?


person Shafiq Abbas    schedule 18.11.2013    source источник
comment
Вы отлаживаете эмулятор или исходное устройство, когда пытаетесь получить этот URL-адрес?   -  person pazcal    schedule 18.11.2013
comment
Я пробовал на своем устройстве WP7..   -  person Shafiq Abbas    schedule 18.11.2013
comment
Я нашел это. Я всегда закрывал канал, когда запускаю приложение, и поэтому он создает новый uri канала. Но у меня есть вторая проблема. Я дал uri веб-сервису. они прислали уведомление. Но channel_ShellToastNotificationReceived не срабатывает.   -  person Shafiq Abbas    schedule 18.11.2013
comment
Есть ли у вас дополнительный код, которым можно поделиться, например шаблон XML и класс, в котором определен ShellToastNotificationReceived?   -  person pazcal    schedule 18.11.2013
comment
Он не сработает, если ваше приложение находится в фоновом режиме.   -  person Swapnika    schedule 19.11.2013


Ответы (1)


Если ваше приложение находится на переднем плане и вы отправляете уведомление, запускается только событие channel_ShellToastNotificationReceived. Если ваше приложение не работает на переднем плане, это событие не запускается, вместо этого приложение переходит на страницу (если вы предоставили это), которую вы упомянули в полезной нагрузке уведомления "<wp:Param>/Home.xaml</wp:Param>" (Home.xaml здесь).

Если вы ничего не передали в <wp:Param>, тогда запускается код, написанный ниже:

 // 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);
                pushChannel.ShellToastNotificationReceived += new EventHandler<NotificationEventArgs>(PushChannel_ShellToastNotificationReceived);

                // Display the URI for testing purposes. Normally, the URI would be passed back to your web service at this point.
                System.Diagnostics.Debug.WriteLine(pushChannel.ChannelUri.ToString());
                MessageBox.Show(String.Format("Channel Uri is {0}",
                    pushChannel.ChannelUri.ToString()));

Этот код должен быть в остальной части кода, который вы написали. Мы можем помочь в дальнейшем, если вы предоставите дополнительный код, например, полезную нагрузку и код, написанный для получения уведомлений.

person Nitika    schedule 22.11.2013