Using a silent custom ring can provide effective whitelist/blacklist functionality without having to jailbreak your iPhone.
One of the best reasons to jailbreak the iPhone, I thought, was to use a blacklisting app, since blacklisting apps are — blacklisted — from the Apple App Store. Even better would be a whitelisting app that only allows calls from numbers I specify, and denies everybody else. But guess what: you can effectively do BOTH of those things without jailbreaking.
That’s good for iPhone 4S owners since trusted, untethered jailbreaks have been slow to come. It finally occurred to me: why not just use a custom SILENT ringtone as my default ringer? I can create a “blank” ringtone for all callers and assign custom normal ringtones to anybody I want to hear from. EXCELLENT!
So, I searched, and not surprisingly, others have independently come up with the same solution. I found a silent ringtone to download and the usual ringtone installation instructions.
Tip: In iTunes, you can just use File… Add to Library… and point to the file downloaded above. Richard K. Miller posted some nice detailed instructions with screenshots if you need them.
One thing you’ll quickly learn is that the iPhone, in the year 2012, does not support caller groups for assigning ring tones. It’s difficult to imagine that particular design tradeoff discussion, but honestly, for my purposes, assigning each ringtone manually for every contact I want took about five minutes. YMMV. I’m very happy with my newfound call filtering feature — no jailbreak required.
Update 2013: For the recent crop of iPhones including the iPhone 5S, just use the Do Not Disturb function in Settings. Also, caller groups have finally been added in the same section.