I\'m trying to do show an alert the first time the app is launched. I\'d also like to show this alert if they go into a settings page later on and want to see it again. I
First time App is launched, so I don't think you will ever need to set that BOOL
to NO
. UserDefaults
gets deleted if App is removed. and we set it when App is first launched application didFinishLaunchingWithOptions:
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FirstTimeLaunched"];
[[NSUserDefaults standardUserDefaults] synchronize];
If you set Bool
to NO
in applicationWillTerminate
, then everytime user kills app from tray you will show alert on app launched. Again it depends on your business requirements.
I would take the opposite approach and first launch check for a key called appHasLaunchedPreviously.
If it's yes then bypass the alert. If it's not YES then show the alert and immediately set it ready for next time.
Just think it backwards, instead of expecting a YES
, set a variable when the app is actually launched, and remove it when the user says so in the settings.
At launch:
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"hasBeenLaunched"]) {
// show your only-one-time view
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasBeenLaunched"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
And when the user wants to see it again, just remove the key:
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"hasBeenLaunched"];
When accessing a key that does not exists, NSUserDefaults
will return nil
.