Okay, now that you've read it I present to you this small fragment of PHP wizardry:
$s = "";"But wait a second," I hear you all exclaim, "you can't run PHP on the iPhone!"
foreach ($_GET as $key => $value)
$s .= $key . "=>" . $value . ",";
$s .= "\n";
error_log(date("Y:m:d H:i:s") . ": " . $s, 3, "myfile");
Well, no, you can't. But you can run it on your own server. This code is not iPhone specific. It just parses the query string parameters of an HTTP request and writes them down into a file called "myfile".
So what exactly am I endorsing here?
I am encouraging your application to phone home ONLY in the case where you detect a compromised application bundle.
Isn't this an invasion of privacy? Perhaps. But if you steal from me, I'll steal from you. Only I am better at it.
Do you owe anything to anyone that steals from you? No.
Should someone have a reasonable expectation to be treated fairly if they steal from you? No.
Why phone home?
Why not refuse to run, or play a game with the pirate, or alter your program's behaviour, etc.., etc. Simply put, it is trivial for a cracker to hack your application so that it behaves properly. If you silently phone home then the cracker or pirate is none the wiser until it is too late.
You can use this data to track usage and you can generate pretty bar graphs. You can compare illegal vs. legal copies. You can even track how often a pirate launches your application.
Okay, what parameters do I give to the PHP script and how often do I call home?
Every iPhone has a unique device identifier. Pass this along!
The iPhone SDK gives you access to the user inputted device name. Pass this along!
Do you have multiple applications on the App Store? Pass the application name along!
Call home as often as you want. You can do it once per lifetime, once per version, or every time the application runs. It's up to you.
I've done all this, now what?
Well, you've harvested all of these unique iPhone device identifiers so now what? If you run a gaming server that keeps track of high scores, you can now move all high scores belonging to pirates to another board.
You can share these UDIDs with your friendly App Store developers. If they also run external servers for their applications, then they can utilize these identifiers in their own ways.
The possibilities are pretty much boundless.