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

Cordova 如何在Phonegap应用程序中使用Windows Phone推送通知启动页面?,cordova,windows-phone-8,push-notification,windows-phone,phonegap-pushplugin,Cordova,Windows Phone 8,Push Notification,Windows Phone,Phonegap Pushplugin,我有一个Phonegap应用程序,在其中我使用实现了推送通知。当用户点击接收到的通知时,我将显示一个本地通知,其中包含一个链接(按钮),该链接基于推送通知的负载指向特定页面。为此,我当然使用通知回调方法 在Android和iOS上,一切正常。当接收到推送通知时,如果WP应用程序处于打开状态,它也可以工作。我遇到的问题是当应用程序没有运行并且toast被点击时,因为通知回调方法从未被触发。这并不意外,因为我知道这是WP的正常行为 我想做的是在消息的有效负载中设置启动页面。我使用的是Telerik后

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

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

我想做的是在消息的有效负载中设置
启动页面
。我使用的是Telerik后端服务,因此我将按照以下说明发送消息:

当我在回调中检查收到的通知时,如下所示:

{ 
    "jsonContent": {
        "wp:Text1": title,
        "wp:Text2": message,
        "wp:Param": uri
        },
    "type": "toast"
}
我曾尝试以多种不同的方式设置
LandingUri
,例如:
//www/index.html#api/my page
x-wmapp0:www/index.html#api/my page

我使用的是主干网木偶路由器,因此url设置如下:#api/。 问题是,它永远不会落在我试图设置的页面上。大多数时候,它会登陆到索引页面,有时应用程序甚至在启动之前就崩溃了。没有收到错误,它只是关闭

说到Windows Phone,我完全是个傻瓜,所以我的问题是:我应该如何设置对象中登录页的uri?

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

更多信息,我使用Phonegap构建。如果需要,我也非常乐意提供更多信息


我花了几个小时在这个问题上,这是非常令人沮丧的。如果有人能帮助我,我将不胜感激。

在您的PhoneGap构建项目中,您可以在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文件
我希望这能有所帮助。

您针对的是哪个版本的Windows Phone 8 silverlight或Windows Phone 8.1?Windows Phone 8.1。我刚刚发现
LandingUri
应该设置为类似
“/MyPage.xaml”
,但Phonegap应用程序通常只有一个手机应用程序页面。在我的情况下,应该有几个,它似乎是不可能实现的功能,我正在寻找。接下来,我将考虑是否可以使用mainpage.xaml.cs中的
OnNavigatedTo
方法,如中所述。我不确定在使用PhoneGap构建时是否可以做到这一点?非常感谢您的回答。实际上,我放弃了这一点,通过改变我在WP上的处理逻辑来解决这个问题。因为我将来可能会改变我的方法,所以我很想知道在使用PhoneGap构建时如何覆盖
OnNavigatedTo
方法?如果我理解正确的话,我将不得不为此制作自己的插件?或者另一种选择是在构建之后解包xap,更改MainPage.xaml.cs,然后以某种方式再次打包?第二个对我来说尤其是一个糟糕的选择。我有一个愚蠢的问题。我一整天都在关注cordova的wp8通知。有人能告诉我在哪里可以找到(或需要制作)mainpage.xaml.cs文件吗?在任何地方都找不到+在internet上找不到:(@peterdoesco.de在Cordova项目中添加Windows Phone平台时,MainPage.xaml将自动添加。如果您使用的是Cordova CLI以外的IDE,MainPage.xaml可能不可用。@d1米塔尔谢谢!我找到了答案。使用的平台不对。我使用的是Windows。在Windows中,您得到的Windows Phone因此成为了一个sil错误:)@peterdoesco.de great,很抱歉回复太晚,我没有看到您的评论通知:)
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) {}
}