Push-уведомление для Windows Phone 8 для получения URI

Я разработал приложение для Windows Phone 8 и внедрил в него службу push-уведомлений. Когда я запускаю приложение в эмуляторе Windows Phone, оно создает URI (получение из MPNS) и отправляет его в базу данных для отправки уведомления в следующий раз, но проблема в том, что когда я перезапускаю свой эмулятор, URI изменяется, Я хочу сохранить тот же URI для устройства или эмулятора, как я могу это сделать?

Мой код для генерации URI

HttpNotificationChannel pushChannel;
        string channelName = "TileSampleChannel";
        InitializeComponent();
        pushChannel = HttpNotificationChannel.Find(channelName);
        if (pushChannel == null)
        {
            pushChannel = new HttpNotificationChannel(channelName);
            pushChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(PushChannel_ChannelUriUpdated);
            pushChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(PushChannel_ErrorOccurred);
            pushChannel.Open();
            pushChannel.BindToShellTile();
        }
        else
        {
            pushChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(PushChannel_ChannelUriUpdated);
            pushChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(PushChannel_ErrorOccurred);
            //System.Diagnostics.Debug.WriteLine(pushChannel.ChannelUri.ToString());
           // MessageBox.Show(String.Format("Channel Uri is {0}", pushChannel.ChannelUri.ToString()));
            string strURI = pushChannel.ChannelUri.ToString();
            (App.Current as App).phoneURI = strURI;
        }

Я выбрал этот (App.Current as App).phoneURI и отправил в базу данных, но он изменится, когда я перезапущу эмулятор?

И иногда он дает URI, а иногда выдает исключение Исключение типа «System.NullReferenceException» возникло в TileNotificationClient.DLL, но не было обработано в пользовательском коде в этой строке string strURI = pushChannel.ChannelUri.ToString();


person Charan Ghate    schedule 20.12.2014    source источник
comment
Что касается вашего исключения NullReferenceException: можете ли вы проверить, действительно ли у вашего канала есть channelUri? Не уверен, но если он не был открыт полностью, иногда он еще не имеет канала uri.   -  person Kai Brummund    schedule 20.12.2014


Ответы (1)


Хорошая (имхо) сторона эмулятора заключается в том, что у вас есть свежая, чистая система каждый раз, когда вы ее перезапускаете.

Не гарантируется согласованность uri уведомлений и на реальных устройствах. Вы должны включить изменение канала Uris в дизайн вашего приложения.

person Kai Brummund    schedule 20.12.2014