我已按照文档中给出的所有步骤注册Parse网站的推送通知。 (我在下载默认项目并添加了事件处理程序以处理传入的Toast通知的意义上的所有步骤。)
ParseClient.Initialize("x0uNa3Q164SVGKbH4mxZJaxWxsuYtslB5tVPj893",
"cXFv9RQAoray9xFdwdcZCHXrrkrM6KNd0WyN194H");
this.Startup += async (sender, args) =>
{
// This optional line tracks statistics around app opens, including push effectiveness:
ParseAnalytics.TrackAppOpens(RootFrame);
// By convention, the empty string is considered a "Broadcast" channel
// Note that we had to add "async" to the definition to use the await keyword
await ParsePush.SubscribeAsync("");
};
ParsePush.ToastNotificationReceived += ParsePushOnToastNotificationReceived;
和处理程序
private void ParsePushOnToastNotificationReceived(object sender,
NotificationEventArgs notificationEventArgs)
{
var s = new ShellToast();
s.Content = notificationEventArgs.Collection.Values.First();
s.Title = "My Toast";
s.Show();
}
private async void Application_Launching(object sender, LaunchingEventArgs e)
{
await ParseAnalytics.TrackAppOpenedAsync();
}
当我在模拟器中运行应用程序时,它会注册应用程序,我可以在仪表板中对其进行验证。但是,一旦我从网站发送推送通知,注册设备的数量将显示为0,应用程序不会收到通知。
有一点需要提及的是这种行为并不一致。有时应用确实会收到通知。任何人都可以提到这个或我错过的任何其他观点的原因吗?
答案 0 :(得分:1)
需要注意的一点是,ShellToast.Show()只能在后台任务中使用。如果您在应用程序位于前台时调用它,则不会显示Toast。 http://msdn.microsoft.com/en-US/library/windowsphone/develop/microsoft.phone.shell.shelltoast.show(v=vs.105).aspx 因此,当您希望看到吐司通知时,请确保您的应用不在前台。
答案 1 :(得分:1)
首先,只有前台应用程序未运行时,才会显示Toast通知。
如果您的应用在收到推送通知时正在运行,则必须执行以下操作:
void ParsePushOnToastNotificationReceived(object sender,
NotificationEventArgs notificationEventArgs)
{
Deployment.Current.Dispatcher.BeginInvoke(()=>{
// do anything
MessageBox.Show("got notification");
});
}
如果您的应用未运行,操作系统将正确处理通知,您无需执行任何操作。