当前位置:编程学习 > wap >>

wp8推送通知模拟器收不到求解。。

我照着msdn上的推送通知例子复制了下,asp.net一个网页为发送通知的,然后wp虚拟机为接收端,打开接收端应用可以注册到一个uri 然后我就关掉那个应用退出到主界面,然后我把那个uri复制给发送端,点一次发送,第一次会显示发送成功,然后我看虚拟机上一点反应也没。。然后我再按一次网页上的发送按钮,但这次却失败了显示“Exception caught sending update: System.Net.WebException: 远程服务器返回错误: (404) 未找到。   在 System.Net.HttpWebRequest.GetResponse()   在 WebApplication1.WebForm1.Button1_Click(Object sender, EventArgs e) 位置 e:\C#\WpfApplicationToast\WebApplication1\WebForm1.aspx.cs:行号 69”

我不能理解的是首先为何我的虚拟机收不到通知,还有第二次点发送网页上的按钮时我没点虚拟机里的程序也没换uri,为何也会发送失败?

这些问题纠结了好久了。。 --------------------编程问答-------------------- 是不是我功能没开还是电脑设置或者虚拟机设置不对啊。。? --------------------编程问答-------------------- 检查推送发送后的返回状态
三个X-xxxxxx --------------------编程问答-------------------- 是这三个吧?
我那儿第一次点击按钮文本框显示“Received | Connected | Active”应该是成功的吧,
第二次按就显示“Exception caught sending update: System.Net.WebException: 远程服务器返回错误: (404) 未找到。   在 System.Net.HttpWebRequest.GetResponse()   在 WebApplication1.WebForm1.Button1_Click(Object sender, EventArgs e) 位置 e:\C#\WpfApplicationToast\WebApplication1\WebForm1.aspx.cs:行号 69”
主要是期间我也没对wp虚拟器进行操作啊为何第二次会失败,,最主要的是为何一次通知都没收到
--------------------编程问答-------------------- 应用处于关闭时才会弹出系统的通知框
如果你想在开启状态接受,需要注册下ShellToastNotificationReceived事件

第二次返回404是因为推送链接失效了吧, --------------------编程问答-------------------- 不是,我的应用也关掉了啊,在主界面上一点反应也没有。。 --------------------编程问答--------------------
引用 5 楼 qytmqytm 的回复:
不是,我的应用也关掉了啊,在主界面上一点反应也没有。。


通道名字改一下,重新获取一个地址再试试 --------------------编程问答-------------------- 有时候会失败,重新拉一下URI,重新发送就可以了 --------------------编程问答-------------------- 有可能是因为微软服务器分配的问题 --------------------编程问答-------------------- wp的推送。。。不想多说了。 --------------------编程问答-------------------- 模拟器收不到推送消息:先确定物理机网络访问是否正常,再确定模拟器是否能够正常访问网络(我公司的网络被限制,也收不到),再确定推送通道注册是否正常,然后确定推送通道注册后是否正常绑定Tile或者Toast。

第二次点击发送失败的情况:你的代码开启的新通道,之前的通道失效。
try
            {
                httpChannel = HttpNotificationChannel.Find(channelName);
                if (httpChannel != null)
                {
                    httpChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(httpChannel_ChannelUriUpdated);
                    httpChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(httpChannel_ErrorOccurred);
                    if (!httpChannel.IsShellTileBound)
                    {
                        httpChannel.BindToShellTile();
                    }
                    if (httpChannel.ChannelUri != null)
                    {
                        string url = httpChannel.ChannelUri.AbsoluteUri;
                        //保存通道地址
                    }
                }
                else
                {
                    httpChannel = new HttpNotificationChannel(channelName, "NotificationService");
                    httpChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(httpChannel_ChannelUriUpdated);
                    httpChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(httpChannel_ErrorOccurred);
                    httpChannel.Open();
                    if (!httpChannel.IsShellTileBound)
                    {
                        httpChannel.BindToShellTile();
                    }
                    //这里的通道地址要在ChannelUriUpdated事件里去保存
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
补充:移动开发 ,  Windows Phone
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,