How do I detect when an iOS app is launched for the first time?
Let's get started. Open Xcode > Create a new Xcode project > Single View App > Next. If you already have it open and don't see the window screen, hit Command + Shift + 1. I'm naming my app DetectingFirstTimeLaunch.
The first time you boot up the app onto the simulator or real device, the debug area should say “First.” After that, go into the multi-tasking mode and close out of the application. After you've done that, just run the scheme in Xcode again (that way you get the debug output), and you should now see “Second+” printed.
Go to Settings>General>Background App Refresh and you can see what other apps are allowed to update data in the background. iOS dynamically manages memory without any user intervention. The only apps that are really running in the background are music or navigation apps.
Pretty much what Marc and Chris said, though I prefer to change the value when the app quits in case there're multiple areas of the application that need to know about it. In code:
Objective-C
// -applicationDidFinishLaunching: [[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],@"firstLaunch",nil]]; // to check it: [[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]; // -applicationWillTerminate: [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"firstLaunch"];
Swift 5.0
// -applicationDidFinishLaunching: UserDefaults.standard.register(defaults: ["firstLaunch":true]) // to check it: UserDefaults.standard.bool(forKey: "firstLaunch") // -applicationWillTerminate: UserDefaults.standard.set(false, forKey: "firstLaunch")
I realize this question is quite old, but I used it to come up with one method of detecting the first startup after a "fresh install" (vs. first startup after an upgrade/downgrade) and thought I'd share the code here for future viewers in case it's helpful.
// Get current version ("Bundle Version") from the default Info.plist file NSString *currentVersion = (NSString*)[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]; NSArray *prevStartupVersions = [[NSUserDefaults standardUserDefaults] arrayForKey:@"prevStartupVersions"]; if (prevStartupVersions == nil) { // Starting up for first time with NO pre-existing installs (e.g., fresh // install of some version) [self firstStartAfterFreshInstall]; [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:currentVersion] forKey:@"prevStartupVersions"]; } else { if (![prevStartupVersions containsObject:currentVersion]) { // Starting up for first time with this version of the app. This // means a different version of the app was alread installed once // and started. [self firstStartAfterUpgradeDowngrade]; NSMutableArray *updatedPrevStartVersions = [NSMutableArray arrayWithArray:prevStartupVersions]; [updatedPrevStartVersions addObject:currentVersion]; [[NSUserDefaults standardUserDefaults] setObject:updatedPrevStartVersions forKey:@"prevStartupVersions"]; } } // Save changes to disk [[NSUserDefaults standardUserDefaults] synchronize];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With