1

WindowsPhoneにプッシュ通知ベースのアプリを実装しようとしています。エミュレーターでチャネルURIを取得し、サーバーを介してエミュレーターにプッシュ通知を送信することができました。

一方、同じソリューションをデバイスに展開する際に問題が発生します。Uriを使用すると、NullReferenceExceptionが返されます。ChannelUriが「式を評価できません」と表示している間。

これがページコンストラクターに配置された私のコードです。_pushChannelNameも変更してみました。

private static string _pushChannelName = "TestApp";

    // Constructor
    public MainPage()
    {
        HttpNotificationChannel pushChannel;

        InitializeComponent();

        pushChannel = HttpNotificationChannel.Find(_pushChannelName);

        if (pushChannel == null) 
        {
            MessageBox.Show("NULL");
            pushChannel = new HttpNotificationChannel(_pushChannelName);

            pushChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(pushChannel_ChannelUriUpdated);
            pushChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(pushChannel_ErrorOccurred);

            pushChannel.ShellToastNotificationReceived +=new EventHandler<NotificationEventArgs>(pushChannel_ShellToastNotificationReceived);

            pushChannel.Open();

            pushChannel.BindToShellToast();
        }
        else
        {

            pushChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(pushChannel_ChannelUriUpdated);
            pushChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(pushChannel_ErrorOccurred);

            pushChannel.ShellToastNotificationReceived += new EventHandler<NotificationEventArgs>(pushChannel_ShellToastNotificationReceived);

            //System.Diagnostics.Debug.WriteLine(pushChannel.ChannelUri.ToString());
            textBox1.Text = pushChannel.ChannelUri.ToString();

        }

        MessageBox.Show(String.Format("Channel Uri is {0}", pushChannel.ChannelUri.ToString()));
    }

また、ChangeUriイベントからUriをチェックしてみました。プッシュアプ​​リが正常に動作している間、イベントはデバイスでトリガーされません。チャネル制限さえ満たされていません。

private void pushChannel_ChannelUriUpdated(Object sender, NotificationChannelUriEventArgs e)
    {
        Dispatcher.BeginInvoke(() =>
        {

            MessageBox.Show(String.Format("Channel Uri is {0}",
                e.ChannelUri.ToString()));

        });
    }
4

1 に答える 1

1

多くのユーザーがこの問題に直面しています。解決策は2つです。

  1. 最初の解決策は、マーケットプレイスアカウントに接続しているすべてのアプリケーション、ゲーム、およびその他のソフトウェアを停止し、通知を削除または停止することです。電話を再起動し(電源オフ/オン)、24時間待ちます。

  2. 2番目の解決策は、Marketplaceに支払い、アプリケーションを登録し、Marketplaceから証明書を取得して、アプリケーションに挿入することです。次に、新しいチャネルを開くときに、静的クラス「HttpNotificationChannel」の2番目のオーバーロードコンストラクターを使用する必要があります。

    [SecuritySafeCritical] public HttpNotificationChannel(string channelName、string serviceName);

于 2012-10-05T10:26:00.117 に答える