通过单击SecondaryTile检查用户是否来到应用程序

时间:2016-05-05 08:21:33

标签: c# win-universal-app windows-10-universal

我想知道用户是否通过点击SecondaryTile(以及点击了哪一个)打开了应用。

现在我有OnNavigatedTo方法:

 protected override async void OnNavigatedTo(NavigationEventArgs e)
 {
     if (!String.IsNullOrEmpty(e.Parameter.ToString()))
     {
         //e.Parameter is not null, LiveTile was used
         //do something
     }
     else
     {
         //No of SecondaryTiles were clicked
     }
 }

这当然有效,但前提是app已关闭。但是当以前打开app时,在后台运行并且用户点击LiveTile,然后显示应用程序,但不执行此方法。

我该如何处理这种情况?

1 个答案:

答案 0 :(得分:0)

  

MSDN:覆盖OnLaunched方法以执行任何常规应用初始化,该初始化应仅在用户正常启动应用时发生(例如,通过点击应用磁贴)。

您应该覆盖或更新OnLaunched事件以跟踪应用激活时刻并分析相应的参数(app.xaml.cs文件)。

简而言之,如果您查看OnNavigatedTo事件的上升方式 - 它来自检查OnLaunched内容是否已存在的rootFrame事件:

protected override void OnLaunched(LaunchActivatedEventArgs e) 
{
        ...

        if (rootFrame.Content == null)
        {
            // When the navigation stack isn't restored navigate to the first page,
            // configuring the new page by passing required information as a navigation
            // parameter
            rootFrame.Navigate(typeof(MainPage), e.Arguments);
        }
        ...
}

正如您可能想象的那样,情况并非如此,因此导航事件永远不会发生。