如何在Phonegap应用程序中使用Windows Phone推送通知启动页面?

时间:2015-01-13 12:36:17

标签: cordova windows-phone-8 push-notification windows-phone phonegap-pushplugin

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

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

我要做的是在消息的有效负载中设置launch page。我正在使用Telerik后端服务,因此我按documentation中指定的方式发送消息:

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

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

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

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

对于Windows Phone,我是一个完全的菜鸟,所以我的问题是:我应该如何在对象中设置着陆页的uri?

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

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

我花了好几个小时,这非常令人沮丧。如果有人能帮助我,我将非常感激。

1 个答案:

答案 0 :(得分: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文件。 我希望这会有所帮助。