0

我正在使用以下示例在 Windows 8 Phone 上开发应用程序。

using System;
using System.Windows;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Notification;


namespace sdkRawNotificationCS
{
    public partial class MainPage : PhoneApplicationPage
    {

        // MainPage constructor
        public MainPage()
        {
           /// Holds the push channel that is created or found.
           HttpNotificationChannel pushChannel;

           // The name of our push channel.
           string channelName = "RawSampleChannel";

           InitializeComponent();

           // 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);

             // Display the URI for testing purposes.
             System.Diagnostics.Debug.WriteLine(pushChannel.ChannelUri.ToString());
             MessageBox.Show(String.Format("Channel Uri is {0}",
                pushChannel.ChannelUri.ToString()));

           }
       }

       // Event handler for when the push channel Uri is updated.
       void PushChannel_ChannelUriUpdated(object sender, NotificationChannelUriEventArgs e)
       {

          Dispatcher.BeginInvoke(() =>
          {
             // Display the new URI for testing purposes.
             System.Diagnostics.Debug.WriteLine(e.ChannelUri.ToString());
             MessageBox.Show(String.Format("Channel Uri is {0}",
                e.ChannelUri.ToString()));

         });
     }


     // Event handler for when a push notification error occurs.
     void PushChannel_ErrorOccurred(object sender, NotificationChannelErrorEventArgs e)
     {
        // Error handling logic for your particular application would be here.
        Dispatcher.BeginInvoke(() =>
            MessageBox.Show(String.Format("A push notification {0} error occurred.  {1} ({2}) {3}",
                e.ErrorType, e.Message, e.ErrorCode, e.ErrorAdditionalData))
                );
     }

     // Event handler for when a raw notification arrives.  For this sample, the raw 
     // data is simply displayed in a MessageBox.
     void PushChannel_HttpNotificationReceived(object sender, HttpNotificationEventArgs e)
     {
        string message;

        using (System.IO.StreamReader reader = new System.IO.StreamReader(e.Notification.Body))
        {
            message = reader.ReadToEnd();
        }


        Dispatcher.BeginInvoke(() =>
            MessageBox.Show(String.Format("Received Notification {0}:\n{1}",
                DateTime.Now.ToShortTimeString(), message))
                );
     }
 }
}

我面临的问题是,当我运行应用程序时,我无法在事件处理程序PushChannel_ChannelUriUpdated中获取任何ChannelURI。运行代码时没有给出错误。此外,不会调用事件处理程序PushChannel_ErrorOccurred

请提出问题所在?

4

0 回答 0