Windows phone 8推送通知空通道uri

时间:2013-08-07 21:47:29

标签: c# push-notification windows-phone mpns

我知道这已经多次提出,但无法找到答案。

我正在尝试使用以下代码在我的应用中设置推送通知,但是我遇到了通道uri null问题。

我已经在4个不同的设备+模拟器上尝试了所有在相同的网络条件下工作(工作WiFi - 家庭WiFi - 3G)2个设备是Lumia 920都无法获得通道uri,而其他2个设备HTC 8X和Lumia 820可以成功获得通道uri并注册推送。

模拟器也可以成功获取通道uri。

在其中一个Lumia 920上它设法获得了一个频道uri,但我重新安装并再次安装了应用程序,从那时起就无法获得任何频道uri。

以下是我的情景:

安装在3G上的1- Lumia 920 Black工作正常,卸载/重新安装停止在任何连接上工作(3G - 工作WiFi - 家庭WiFi) 2-Lumia 920 Yellow安装在3G上 - 工作WiFi - 首页WIfi从未设法获得通道uri 3G上的HTC 8X - 工作WiFi - 家庭WiFi在所有3个网络上都运行良好 4- Lumia 820与HTC 8X相同效果很好

请注意,其他应用上的推送通知在所有4台设备上都能正常运行。

我非常感谢有关频道null uri的任何反馈/建议

以下是我使用的代码,它与MSDN提供的代码相同

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

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

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

            // Register for this notification only if you need to receive the notifications while your application is running.
            pushChannel.ShellToastNotificationReceived += new EventHandler<NotificationEventArgs>(PushChannel_ShellToastNotificationReceived);

            pushChannel.Open();

            // Bind this new channel for toast events.
            pushChannel.BindToShellToast();

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

            // Register for this notification only if you need to receive the notifications while your application is running.
            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()));

        }
    }

5 个答案:

答案 0 :(得分:1)

我也经历过同样的问题。通过设置我的HTC windows phone正确的日期和时间来解决它。一旦我自动设置了日期和时间,我的混合应用程序wp8成功注册了pushplugin并收到了MPNS Channeluri。

答案 1 :(得分:0)

ChannelUri为空,因为我正在开发的新手机无法正确设置日期和时间。一旦我手动设置了时间,然后修改它的时间,日期和区域,然后将其切换回自动,一切正常,如ssl证书,Windows手机更新,最重要的是ChannelUri;)

答案 2 :(得分:0)

尝试进入设置&gt; “手机+ SIM卡”并关闭“数据连接”选项这有时可以解决问题吗?

您是否尝试更改设置中的选项&gt;数据感?那里有选项限制背景数据吗?

是否启用了省电功能?这限制了电池电量低时的使用等。

同样如上所述,您是否检查过设备上的日期和时间?也许这是由日期和时间的自动设置引起的。您可以手动修复此设置,然后切换回自动。它有效。

答案 3 :(得分:0)

尝试使用本地wifi连接而不是手机数据连接。禁用手机&#34;数据连接&#34;根据这里的评论之一将实现这一结果。虽然我试过这个并且失败了但它让我注意到我的手机没有连接到我们的wifi路由器。

注意:在我的情况下,我们的小区覆盖非常糟糕,所以我们使用一个特殊的沃达丰路由器,通过我们的固定线路互联网连接重定向所有手机数据,电话等。一旦我绕过该路由器,我收到了一个ChannelUri。我也尝试过使用不同蜂窝塔的手机/应用程序,这很好。

答案 4 :(得分:-1)

我尝试手动设置日期但没有效果。最终为我工作的是在没有SIM卡的情况下启动手机,关闭,重新插入SIM卡并重新开始。这让我再次获得了一个ChannelUri。

怀疑这可能与TripVoltage建议toggling the SIM's data connection的建议有关。