2016-05-05 4 views
0

SecondaryTileをクリックして(そしてどちらをクリックしたのか)ユーザーがアプリを開いたかどうかを知りたいと思います。ユーザが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 
    } 
} 

これは動作しますが、アプリは以前に閉鎖された場合にのみ。しかし、以前にアプリを開いたときに、バックグラウンドで実行され、ユーザーがLiveTileをクリックすると、アプリが表示されていますが、このメソッドは実行されません。

このシナリオをどのように処理できますか?

+5

おそらく、App.xaml.csのOnLaunched(LaunchActivatedEventArgs args)メソッドをオーバーライドし、argsを使用してアクティブ化のソースを検出できます。 – RavingDev

答えて

0

MSDN:OnLaunchedメソッドをオーバーライドして、ユーザーが通常(たとえば、アプリタイルをタップするなどして)アプリケーションを正常に起動したときに発生する一般的なアプリケーションの初期化を実行します。

あなたは、アプリ起動の瞬間を追跡し、対応する引数(app.xaml.csファイル)を分析するためにOnLaunchedイベントを上書きしたり、更新する必要があります。要するに

、あなたがOnNavigatedToイベントが発祥方法に見れば - それはrootFrameのコンテンツが既に存在するかどうかをチェックするOnLaunchedイベントから来ている:

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); 
     } 
     ... 
} 

あなたのシナリオでは想像しているようそれは真実ではないので、ナビゲーションイベントは決して起こらない。

関連する問題