我正在 Windows Phone 8.1(不是 silverlight)中开发一个应用程序,它使用 WNS 来接收原始推送通知。
当我通过 Visual Studio 运行我的应用程序时(通过物理设备,而不是在模拟器中),我总是收到推送通知(应用程序在前台,在后台,手机锁定......)所以我认为我的代码可以接收推是正确的。
我的问题是当我在不使用 Visual Studio 的情况下运行我的应用程序时。如果我按下设备上的“应用程序图标”来启动应用程序并将其保持在前台,我会收到推送通知。但是如果我进入手机菜单,或者锁定设备(没有杀死应用程序),我不会收到推送通知,但服务器说 WNS 已发送成功。如果我再次将应用程序置于前台,我会再次收到推送通知......
所以,总结一下:通过 Visual Studio 初始化应用程序,我总是收到 WNS 通知。通过设备初始化应用程序,仅在前台应用程序接收 WNS。服务器总是成功发送 WNS。
这是我接收 WNS 的代码:
public static void OnPushNotificationReceived(PushNotificationChannel channel, PushNotificationReceivedEventArgs e)
{
Debug.WriteLine("Received WNS notification");
string notificationContent = String.Empty;
switch (e.NotificationType)
{
case PushNotificationType.Badge:
Debug.WriteLine("Badge notifications not allowed");
return;
case PushNotificationType.Tile:
Debug.WriteLine("Tile notifications not allowed");
return;
case PushNotificationType.Toast:
Debug.WriteLine("Toast notifications not allowed");
return;
case PushNotificationType.Raw:
notificationContent = e.RawNotification.Content;
break;
}
processWnsNotification(notificationContent);
}
//Show local toast notification
private static void processWnsNotification(string notification)
{
ToastTemplateType toastTemplateXml = ToastTemplateType.ToastText01;
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplateXml);
XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");
toastTextElements[0].AppendChild(toastXml.CreateTextNode("New message"));
ToastNotification toast = new ToastNotification(toastXml);
if(toastNotifier == null)
{
toastNotifier = ToastNotificationManager.CreateToastNotifier();
}
toastNotifier.Show(toast);
}
任何人都知道发生了什么或我做错了什么?我认为这可能是一个配置问题......但我一直在研究属性和配置文件,但没有成功。
非常感谢!!乔治。