One of the first things every iOS developer should add to their project is a way to detect what is happening at launch. It doesn’t have to be complicated, but trust me, this can potentially save you some trouble later on.
I usually create a BaseAppDelegate class that will be responsible for detecting the following:
- is it the first time the user launch the app?
- how many times did the user launch count?
- is this launch the first launch after an app upgrade?
- when was last time the user launched the app before this launch?
Here is the code I usually put in this BaseAppDelegate class:
https://gist.github.com/cyrilchandelier/e66f003c2b116482243f3778c675b82a
You just need to make your AppDelegate extends BaseAppDelegate, and call the super method in application(_:didFinishLaunchingWithOptions). Then, you can choose (or not) to override (and therefore implement something for) the applicationFirstLaunch() and/or applicationDidUpgrade(from:to:) methods.
Here are a couple use cases where having this super-class reveals itself handy:
- I want to know how many times a users came into the app for my analytics
- I want to know when a users re-open the app after a while, to customize his experience as a returning user
- I want to show a “What’s new” popup to my returning users who upgraded their app
- my app was a paid app before, and now it’s free with In-App Purchases to unlock some content, but I don’t want my users who already paid to hit my paywall