【问题标题】:Passing partial parameter in a push notification on Windows Phone 8.1在 Windows Phone 8.1 的推送通知中传递部分参数
【发布时间】:2015-10-08 04:03:43
【问题描述】:

我正在尝试向 Windows Phone 8.1 设备发送带有参数的 toast 通知,因此当用户点击 toast 时,应用程序将显示应用程序内的特定页面,如本 MSDN 文章 @987654321 中所述@

这是我用来添加参数的sn-p:

<wp:Param>?cmd=command1 </wp:Param>

这是我在应用程序中阅读它的方式:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e){
            base.OnNavigatedTo(e);
            string strVal1 = this.NavigationContext.QueryString["cmd"];
        }

进行这些更改后,它可以正常工作,但仅适用于第一次通知。在所有后续通知中,应用程序中读取的参数值与第一个通知中的值相同,无论我从服务器发送了什么。

这是一个例子:

  1. 我正在向通知负载中包含此参数的设备发送通知:&lt;wp:Param&gt;?cmd=command1 &lt;/wp:Param&gt; this.NavigationContext.QueryString("cmd") 中的值应该是 command1。
  2. 然后我用这个参数参数发送第二个通知 &lt;wp:Param&gt;?cmd=command2 &lt;/wp:Param&gt; this.NavigationContext.QueryString("cmd") 中的 cmd 值仍然返回为“command1”,而不是应有的 command2。在我强制重新启动应用程序之前,所有后续通知都是如此。

这是我尝试过的:

  1. 检查了 OnNavigatedTo 事件的 NavigationEventArgs 参数中的 Uri 值,它与我在 NavigationContext 中看到的相同。
  2. 从服务器发送的双重检查通知负载(正确)
  3. 已检查 msdn/stackoverflow/google。
  4. 在 8.1 模拟器和设备上都进行了检查(工作方式相同)

问题:

  1. 我是否必须在应用程序中执行某些操作(idk、清除 NavigationContext 或其他操作),以便下一次通知会有所不同?
  2. 实际上是否有人拥有使用部分参数的实时应用程序(不是带有完整 url 的服务器驱动导航,而是传递给应用程序的部分 url + 应用程序内的相应导航)并且它适用于多个后续通知?

【问题讨论】:

    标签: notifications push-notification windows-phone-8.1


    【解决方案1】:

    找出问题所在。重新启动应用程序时会触发两个 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/>
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多