Windows phone 8推送通知空通道uri

本文关键字:通道 uri 通知 phone Windows | 更新日期: 2023-09-27 18:26:44

我知道这个问题已经提过很多次了,但找不到答案。

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

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

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

在一个Lumia 920上,它设法获得了一个频道uri,但我再次卸载并安装了该应用程序,从那以后就无法获得任何频道uri。

以下是我的场景:

1-安装在3G上的Lumia 920 Black运行良好,卸载/重新安装在任何连接上都停止工作(3G-工作WiFi-家庭WiFi)2-Lumia 920黄色安装在3G上-工作WiFi-家庭WiFi从未设法获得频道uri3-HTC 8X在3G上-工作WiFi-家庭WiFi在所有3个网络上都很好4-Lumia 820与HTC 8X一样工作伟大的

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

我非常感谢对通道空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()));
        }
    }

Windows phone 8推送通知空通道uri

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

ChannelUri为空,因为我正在开发的新手机无法正确设置日期和时间。一旦我将时间切换为手动设置,然后固定了时间、日期和地区,然后将其切换回自动,一切都很好,比如ssl证书、windows手机更新,最重要的是ChannelUri;)

尝试进入设置>"电话+SIM"并关闭"数据连接"选项,这有时会奏效吗?

您是否尝试更改"设置">"数据感知"中的选项?是否有限制背景数据的选项?

是否已启用电池节能器?这限制了电池电量不足等情况下的使用。

同样如上所述,你检查过设备上的日期和时间吗?也许是由于日期和时间的自动设置造成的。您可以手动修复此问题,然后切换回自动。它有效。

尝试使用本地wifi连接,而不是手机数据连接。根据此处的一条评论禁用手机的"数据连接"将实现此结果。尽管我尝试过,但失败了,这让我注意到我的手机没有连接到我们的wifi路由器。

注意:在我的情况下,我们的手机覆盖率非常差,所以我们使用一个特殊的vodafone路由器,通过我们的固定线路互联网连接重定向我们所有的手机数据、通话等。当我绕过那个路由器时,我收到了一个ChannelUri。我还在工作中尝试了使用不同手机塔的手机/应用程序,这很好。

我尝试手动设置日期,但没有效果。对我来说,最终起作用的是在没有SIM卡的情况下启动手机,关机,重新插入SIM卡,然后重新启动。这使我能够再次获得ChannelUri。

怀疑这可能与TripVoltage的建议有关,TripVoltage建议切换SIM卡的数据连接。