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是因为推送链接失效了吧, --------------------编程问答-------------------- 不是,我的应用也关掉了啊,在主界面上一点反应也没有。。 --------------------编程问答--------------------
通道名字改一下,重新获取一个地址再试试 --------------------编程问答-------------------- 有时候会失败,重新拉一下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