As there is no multitasking or background tasks allowed on the iPhone (aside from a few of Apple's apps that are part of the iPhone OS such as SMS, iPod, etc.) there are only limited ways for one app to working cooperatively with another. One method is to open a URL, allowing an app to launch a web page in Safari or the native Google Maps app. Developers can also design their applications to handle other URL schemes besides
http://. Apple built a set of standard URL schemes into the iPhone OS, including
tel://, which allows an application to "open" a phone number. Opening a
tel://URL causes the iPhone to launch the native Phone app, which in turn places a phone call for you. The code looks something like this:
[[UIApplication application] openURL:[NSURL URLWithString:@"tel://8005551212"]];
People started making all sorts of apps, from simple rotary dialers (a personal favorite) to pictographic contact managers. Just enter the phone number you want to dial or touch an icon of a contact you wish to call and a method was fired off and your call was placed. It was great, simple and seamless.
There were other apps that took notice of this functionality and coupled it with other features of the phone, most notable "security" apps and monitors (Able Pear just completed a baby monitor app that's up for review). Then came along iPhone OS 3.0, a welcome upgrade with over 1000 new APIs including peer-to-peer connections (over Bonjour), access to users' iPod music libraries, a new Google Maps API, push notification support and, yes finally, a clipboard for cross-app copy and pasting.
However, many little things were not mentioned, one being a "bug" fix to how the system handles opening
tel://URLS and places phone calls. With iPhone OS 3.0 installed, when an app calls
tel://URL, a new alert box pops up asking for confirmation -- totally breaking current applications that make use of automatic calling as a core feature. Now a good number of applications (that have been downloaded thousands of times) are no longer working -- well they sort of work, but now hang, waiting for confirmation to place a call.
The adoption rate of the new iPhone OS 3.0 should be about 80% over the course of 3 months. Unfortunately, when users who currently have apps that make use of this functionality upgrade, their apps will stop working as they had been. Who will those customers be mad at? Apple, for a wonderful new iPhone OS or the developers who sold them an app that is no longer working? I think Steve Balmer said it best: developers, developers, developers.
Now I know that developers and customers alike are contacting Apple to ask for a resolution to this newly introduced issue. But since Apple has "fixed" this bug, it may be a difficult situation to change. One resolution, as offered up by a good friend, was that Apple could validate the application's use of making the call, much like location-aware applications ask you for permission to use your location. A confirmation dialogue pops up the first time your app tries to make a call, asking for your permission to allow the app to place phone calls. This sounds like a great solution for a huge problem.
I would love to hear your feedback on this; your thoughts on this matter and what you think Apple could do to help the developers and customers in an ecosystem that they themselves have devised. Comment below, Digg, Reddit, tweet and re-tweet this blog entry; make some noise - maybe we'll all be lucky and Apple will hear the clamor and help developers, users and themselves alike with a solution to this problem.
Developers, please submit the enhancement request via the Bug Reporter tool at http://bugreport.apple.com.
Julian Romero Nieto has a good description of the bug and cites the (updated) Apple documentation and shows the issue at hand. You can read his posting to Oper Radar here.