2

我有一个 Phonegap 应用程序,我在其中使用PushPlugin实现了推送通知。当用户点击收到的通知时,我将显示一个本地通知,其中包含一个链接(按钮)到基于推送通知的有效负载的特定页面。为此,我当然使用了通知回调方法。

在 Android 和 iOS 上一切正常。如果在收到推送通知时 WP 应用程序处于打开状态,它也可以工作。我遇到问题的地方是应用程序未运行并且点击了 toast 时,因为通知回调方法从未被触发。这并不意外,因为我知道这是 WP 的正常行为。

我正在尝试做的是launch page在消息的有效负载中设置。我正在使用 Telerik 后端服务,因此我正在发送文档中指定的消息:

"WindowsPhone": {
    "Toast": {
        "Title": title,
        "Message": message,
        "LandingUri": uri
    }
}

当我在回调中检查收到的通知时,它看起来像这样:

{ 
    "jsonContent": {
        "wp:Text1": title,
        "wp:Text2": message,
        "wp:Param": uri
        },
    "type": "toast"
}

我尝试以多种不同的方式设置,LandingUri例如: 我正在使用 Backbone Marionette 路由器,所以这就是为什么 url 设置如下:#api/。问题是,它永远不会落在我尝试设置的页面上。大多数情况下,它会出现在索引页面上,有时应用程序甚至在启动之前就崩溃了。没有收到错误,它只是关闭。
//www/index.html#api/my-pagex-wmapp0:www/index.html#api/my-page

谈到 Windows Phone,我是一个完全的菜鸟,所以我的问题是:我应该如何在对象中设置登录页面的 uri?

或者,是否有任何其他方法可以实现我想要的行为,即:根据推送通知中收到的 uri 导航到我的应用程序内的特定页面(在点击 toast 并且应用程序未运行之后)?

有关其他信息,我正在使用 Phonegap Build。如果需要,我也很乐意提供更多信息。

我已经为此花费了几个小时,这非常令人沮丧。如果有人能帮助我,我将不胜感激。

4

1 回答 1

1

在您的 PhoneGap Build 项目中,您可以在 MainPage.xaml.cs 文件的 OnNavigatedTo 方法中添加其他逻辑。如果该方法不可用,您仍然可以覆盖它。

只需在 MainPage.xaml.cs 中引用的链接中添加逻辑即可。例如:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) {
  base.OnNavigatedTo(e);
  try {
    var location = this.NavigationContext.QueryString["NavigateTo"];
    if (location!= null) {
      this.CordovaView.StartPageUri = new Uri ("//www/" + location, UriKind.Relative);
    }
  } catch (KeyNotFoundException) {}
}

然后在发送推送通知后,将以下值添加到“LandingUri”字段:

“/MainPage.xaml?NavigateTo=appnews.html” 其中 appnews.html 是应用程序 www 文件夹中的 HTML 文件。我希望这有帮助。

于 2015-01-28T14:13:12.043 回答