How to detect first time app launch on an iPhone How to detect first time app launch on an iPhone ios ios

How to detect first time app launch on an iPhone


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])    {        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];        [[NSUserDefaults standardUserDefaults] synchronize];    }    return YES;}


In Swift 3, 4 try this:

func isAppAlreadyLaunchedOnce()->Bool{        let defaults = UserDefaults.standard        if let isAppAlreadyLaunchedOnce = defaults.string(forKey: "isAppAlreadyLaunchedOnce"){            print("App already launched : \(isAppAlreadyLaunchedOnce)")            return true        }else{            defaults.set(true, forKey: "isAppAlreadyLaunchedOnce")            print("App launched first time")            return false        }    }

In Swift 2 try this,

func isAppAlreadyLaunchedOnce()->Bool{    let defaults = NSUserDefaults.standardUserDefaults()    if let isAppAlreadyLaunchedOnce = defaults.stringForKey("isAppAlreadyLaunchedOnce"){        print("App already launched : \(isAppAlreadyLaunchedOnce)")        return true    }else{        defaults.setBool(true, forKey: "isAppAlreadyLaunchedOnce")        print("App launched first time")        return false    }}

UPDATE:- For OBJ-C I use this,

+ (BOOL)isAppAlreadyLaunchedOnce {    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isAppAlreadyLaunchedOnce"])    {        return true;    }    else    {        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isAppAlreadyLaunchedOnce"];        [[NSUserDefaults standardUserDefaults] synchronize];        return false;    }}

Ref for OBJ-C: https://stackoverflow.com/a/9964400/3411787


I wrote a tiny library for this very purpose. It lets me know whether this is the first launch ever, or just for this version, and any past versions the user has installed. It's available on github as a cocoapod under the Apache 2 license: GBVersionTracking

You just call this in application:didFinishLaunching:withOptions:

[GBVersionTracking track];

And then to check if this is the first launch just call this anywhere:

[GBVersionTracking isFirstLaunchEver];

And similarly:

[GBVersionTracking isFirstLaunchForVersion];[GBVersionTracking currentVersion];[GBVersionTracking previousVersion];[GBVersionTracking versionHistory];