Notifications 在Windows Phone 8.1上的推送通知中传递部分参数
我正在尝试向Windows Phone 8.1设备发送带有参数的toast通知,因此当用户点击toast时,应用程序将显示应用程序中的特定页面,如本MSDN文章所述 这是我用来添加参数的代码段:Notifications 在Windows Phone 8.1上的推送通知中传递部分参数,notifications,push-notification,windows-phone-8.1,Notifications,Push Notification,Windows Phone 8.1,我正在尝试向Windows Phone 8.1设备发送带有参数的toast通知,因此当用户点击toast时,应用程序将显示应用程序中的特定页面,如本MSDN文章所述 这是我用来添加参数的代码段: <wp:Param>?cmd=command1 </wp:Param> 进行这些更改后,它将正常工作,但仅适用于第一次通知。在所有后续通知中,应用程序中读取的参数值与第一次通知中的值相同,无论我从服务器发送了什么 以下是一个例子: 我正在向通知负载中具有以下参数的设备发送通知:
<wp:Param>?cmd=command1 </wp:Param>
进行这些更改后,它将正常工作,但仅适用于第一次通知。在所有后续通知中,应用程序中读取的参数值与第一次通知中的值相同,无论我从服务器发送了什么
以下是一个例子:
?cmd=command1
此.NavigationContext.QueryString(“cmd”)中的值应为command1?cmd=command2
this.NavigationContext.QueryString(“cmd”)中的cmd值仍然作为“command1”而不是command2返回。在我强制重启应用程序之前,所有后续通知都是如此找出问题所在。重新启动应用程序时会触发两个OnNavigated事件。第一个页面的类型是
System.Windows.Navigation.NavigationMode.Reset
,它将重置旧页面的数据(在我的例子中,是来自旧通知的数据)。第二个是System.Windows.Navigation.NavigationMode.New
,包含来自新通知的数据
对导航模式进行简单检查,以确定其类型。New修复了该问题:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e){
base.OnNavigatedTo(e);
if (e.NavigationMode == System.Windows.Navigation.NavigationMode.New)){
// custom navigation logic based on the data within <wp:Param/>
}
}
受保护的覆盖无效OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e){
基地。导航到(e);
if(e.NavigationMode==System.Windows.Navigation.NavigationMode.New)){
//基于内部数据的自定义导航逻辑
}
}
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e){
base.OnNavigatedTo(e);
if (e.NavigationMode == System.Windows.Navigation.NavigationMode.New)){
// custom navigation logic based on the data within <wp:Param/>
}
}