Like many others, I got a new iPhone 3Gs yesterday.
After getting used to the interface, I noticed something: there is no way to automatically set the volume down or switch from ringing to vibration during key times, e.g. meetings or bedtime. I looked for an application to fix the problem and … nothing. A quick look at the iPhone developer website revealed the reason:
Global system volume, including your application’s volume, is handled by iPhone OS and is not accessible by applications.
It’s a security issue. Apple does not want applications breaking the core functionality of the phone and, presumably, the company doesn’t want to inspect every application for functionality as it does for decency. (Arguably, we’d get more benefit if Apple did the reverse.) This is a solvable security issue: have the application request from the user, the privilege of setting the system volume. OS X does this on a less granular scale now, when installing system software, users receive prompts for administrative privilege. When this happens, the operating system is asking users if the application can application administrative access.
To me, it’s more of the same “let them eat cake” mentality that’s too common in consumer electronics. Apple is saying, “We’re not going to fix the problem of iPhones ringing in meetings and you’re not going to either.” It’s frustrating. When I am in a meeting or asleep, I don’t want my phone to ring, so now I must either keep it by me all the time (on vibrate) or remember to switch ringing on and off at the right times (unlikely). With a little forethought and action on Apple’s part, anyone could fix this problem.