Windows Phone应用程序未收到推送通知:解析

时间:2014-03-21 06:09:27

标签: windows-phone-8 push-notification parse-platform mpns

我已按照文档中给出的所有步骤注册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,应用程序不会收到通知。

有一点需要提及的是这种行为并不一致。有时应用确实会收到通知。任何人都可以提到这个或我错过的任何其他观点的原因吗?

Number of recipients = 1 Number of recipients became 0

2 个答案:

答案 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");
      });

  }

如果您的应用未运行,操作系统将正确处理通知,您无需执行任何操作。