NSUserDefaults, do something on first load only

前端 未结 3 1151
暗喜
暗喜 2020-12-20 01:11

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

相关标签:
3条回答
  • 2020-12-20 01:27

    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.

    0 讨论(0)
  • 2020-12-20 01:40

    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.

    0 讨论(0)
  • 2020-12-20 01:43

    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.

    0 讨论(0)
提交回复
热议问题