The iphone is popular, attractive and with its apple istore provides a convenient way to release software to the user. With all these strong points, it is easy to see why many people choose to use it as a basis for their design. However if you plan to use Bluetooth there are a few important things you should consider.
To communicate Bluetooth uses a number of software profiles, each designed with a specific job in mind. There are 22 in total1 but support for all of them is not automatically provided in every device. The iphone for example when first made supported two of them, Hands – Free Profile (HFP 1.5) and Phone Book Access Profile (PBAP). Support has been increased recently to include a further 3 profiles, Advanced Audio Distribution Profile (A2DP), Audio/Video Remote Control Profile (AVRCP) and Personal Area Network Profile (PAN) 2. In comparison a mobile phone like the Nokia E65 provides 11 profiles 3.
These profiles are perfectly fine as long as the Bluetooth connections are limited to audio, handsfree and networking but somewhat limiting if you intend to interface the iphone with your own custom hardware. It becomes obvious how difficult it is to create programs that interface with the Bluetooth when you search the iphone app store. A search for “Bluetooth” will result in 22 results with all but 3 of these being games. This is out of what apples states is “tens of thousands of apps that let you do even more with your iPhone”4.
Assuming none of the above profiles are useful we have two choices, either wait for Apple to include the relevant profile and a way to access it via software or use a 3rd party stack to add the profiles ourselves. This second option has been pursued by small teams of developers on and off since the iphone SDK first came out, the reason you may never hear about them is that these programs generally require the use of secret or unpublished functions and as such are a breach of the developer’s agreement. This means that even if you were somehow able to get your program functioning you would never be able to release it on the app store.
All things considered for such a well appointed phone the implementation of Bluetooth and its support for 3rd party developers is poor. Unless Apple changes this with an update to both the phones firmware and SDK, creating Bluetooth peripherals for the iphone will be little more than wishful thinking.
(Thanks to Ben Elston for this info)