This is actually something I’ve been doing for a while in the WeeWorld apps I’ve worked on and since I’ve seen a few questions asking how it’s done I’ll give a quick run through.
There’s no hackery or use of private APIs as I’ve seen some people suggest; the trick is simply to publish a URL scheme for each application even if it isn’t used for anything else. You set this up in your application’s Plist file by editing the URL Types (CFBundleURLTypes if editing in text.)
You can then check for availability of the application simply by checking if anything installed on the device will respond to that URL scheme.
BOOL isCountdownInstalled = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"weemeecountdown://"]];
I then use this value to decide whether to draw a tick over the application. If they click on the icon of an app they’ve purchased then I simply thank them for buying it and ask if they’d like to leave a review. If they click on an icon for an app they haven’t purchased them I take them to the app store page.
So why would you want to do this?
- Strengthen your brand by enforcing a shared identity for a suite of apps. (Marketing guff, sorry).
- Affiliate links! As anyone who saw me speak at the recent NSConference can attest, affiliate schemes such as LinkShare or TradeDoubler can be a great source of income for any developer. Even if the user clicks on the links to see your other apps but doesn’t buy them you’ll still receive 4-5% of ANY purchase they make from the iTunes store.