I wanted to do some operation on App’s first launch. I have written my code as suggested here: how to detect first time app launch,iphone. It is working well.
I am able to delete and modify the contents in UserDefault plist using iExplorer.So my app is not functioning as expected. Is there any way to restrict app files being modified by external apps(iExplorer)?
If you alter system files using iExplorer, you could make any app not function properly. One way to make it somewhat tamper proof (though not quite as efficient), is to manage the information on a server rather than a local file. For example, your app may make a call to a web service to retrieve and store settings. That’s not to say they couldn’t tamper with your application bundle rendering it useless.
In a nutshell, you cannot make your app completely tamper proof
Edit
As Zaph has suggested, you can use the keychain. Simply store the
[[NSBundle mainBundle] bundlePath]as a key in the keychain.bundlePathis unique for each installation. So, when your app loads, check forbundlePathin the keychain, if not exists, then it is fresh installation/first time load. After app has loaded, save thebundlePathto the keychain.