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. bundlePath
is unique for each installation. So, when your app loads, check for bundlePath
in the keychain, if not exists, then it is fresh installation/first time load. After app has loaded, save the bundlePath
to the keychain.