我正在Windows Phone 8.1(不是silverlight)中開發一個應用程序,它使用WNS來接收原始推送通知。當我通過Visual Studio運行我的應用程序(通過物理設備,而不是在模擬器)時,我總是收到推送通知(前臺應用程序,後臺,手機鎖定...),所以我認爲我的代碼接收推送是正確的。在Windows Phone 8.1中沒有收到WNS
我的問題是當我運行我的應用程序沒有使用Visual Studio。如果我按下設備上的「應用程序圖標」來初始化應用程序並將其保留在前臺,我會收到推送通知。但是,如果我轉到電話菜單或鎖定設備(不殺死應用程序),我不會收到推送通知,但服務器說WNS已成功發送。如果我再次將應用程序放到前臺,我再次收到推送通知...
因此,總結:通過Visual Studio的Init應用程序,我總是收到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);
}
任何人都知道發生了什麼或什麼,我做錯了什麼? 我認爲這可能是一個配置問題......但我一直在挖掘財產和配置文件沒有成功。
非常感謝! 豪爾赫。
謝謝!這是問題所在。我不知道如何使用生命週期事件框,它非常有用! – kemmitorz