How to check if the iPhone application has been installed before?


Is there a way to check if my app was installed before? My app should offer half a year free of its services. Expandable via In App Purchase. I want to prevent the user from deleting my app and just re-downloading it.

I know there is a way to determine if my app is already installed (updates) (e.g. via variables in the NSUserDefaults). But what if the user deletes it first?

To make things even more complicated, you probably want to catch uses on different devices as well, and enable the purchases on all devices once they bought your in-app goodie.

Sharing the purchase on their devices will work, but testing if ever installed is not possible. You could store device IDs on your server, but this wouldn't catch the different devices issue.

Your options are to either force users into creating an online account and share data using this. This works best if the user stores a lot of his own data that need to be synchronized, as otherwise several accounts will circumvent this approach. The other option is to make the test period much shorter and rethink your pricing. Deleting and reinstalling will be very annoying, especially if they needed some time to configure the app to their needs. You trade some hardcore-deleter-redownloaders for those who will stop using your app after some months and won't buy your in-app extra then anyway.