Umair Jameel
Umair Jameel

Reputation: 1673

Show page only once when app is installed in UWP

I am developing a UWP windows 10 application and I want to have a page that is only shown at the start of launching application first time. It should not be shown when the app is opened second time in a system.

I have searched online about it but couldn't find any thing about it.

Upvotes: 0

Views: 439

Answers (2)

user6344444
user6344444

Reputation:

I know that my answer can be refined more, but i have done with spending 2 minutes and its working for me. I have added a page loaded event in my StartPage.xaml.cs file and added the following code inside it.

 if (localSettings.Values["IsFirstTime"] == null)
        {
            localSettings.Values["IsFirstTime"] = true;
        }

        if ((bool)localSettings.Values["IsFirstTime"])
        {
            localSettings.Values["IsFirstTime"] = false;
            this.Frame.Navigate(typeof(MainPage));
        }

Make sure you make a localSettings object at class level (of type ApplicationDataContainer). Now inside App.xaml.cs, I have added global variable for local settings as follow.

 Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;

Inside app.xaml.cs file come to the if condition showing rootFrame.Content == null and replace every thing inside it with the following code.

 object value = localSettings.Values["IsFirstTime"];

            if (localSettings.Values["IsFirstTime"] != null)
            {
                if ((bool)value)
                {
                    rootFrame.Navigate(typeof(StartPage), e.Arguments);
                    localSettings.Values["IsFirstTime"] = false;
                }
                else
                {
                    rootFrame.Navigate(typeof(MainPage), e.Arguments);
                }
            }
            else
            {
                rootFrame.Navigate(typeof(StartPage), e.Arguments);
                localSettings.Values["IsFirstTime"] = false;
            }

I have tried it by uninstalling my app and run again to see if start page is shown (and it shows up). Second time when i open, MainPage is shown).

Upvotes: 1

Konstantin
Konstantin

Reputation: 884

In App.xaml.cs look for the OnLaunched handler. There are these lines of code for "switching" pages:

 if (rootFrame.Content == null)
 {
      rootFrame.Navigate(typeof(MainPage), e.Arguments);
 }

As @Romasz suggested in comments, you can add here additional logic with local (or better - roaming) storage to check whether app is launched for the first time:

            var roamingSettings = ApplicationData.Current.RoamingSettings;
            if (roamingSettings.Values.ContainsKey("NotFirstTimeLaunch"))
            {
                rootFrame.Navigate(typeof(MainPage), e.Arguments);
            } else
            {
                roamingSettings.Values["NotFirstTimeLaunch"] = true;
                rootFrame.Navigate(typeof(FirstLaunchPage), e.Arguments);
            }

Upvotes: 1

Related Questions