I decided a while ago to jump into the mobile development world -- creating applications for the iPhone. Apple has done a good job with the iPhone SDK, covering much of what developers need, and I've found it easy to develop applications. But there are still some problems with the platform -- nine of them, to be exact.
Apple typically likes to keep control of their products, and the iPhone is no exception. Primarily as a result of that control, there are nine issues I've encountered in developing iPhone applications:
1. Apple decides who gets to develop applications. Though anyone can download the SDK, There is a US$99 fee just to apply to become a registered developer, and you may not be approved. Apple alone decides who is in or out.
2. There are non-disclosure concerns. The SDK download agreement, which must be accepted in order to continue, places substantial limits on what may be shared. This seems to be limiting the ability to create such things as sample code, video instruction, or how-to books about developing applications for the iPhone.
3. Unless you are a registered developer, then there is no approved way to test your own applications on your own iPhone or iPod Touch. Apple has provided a very good simulator, but that is no substitute for the real thing.
4. Apple owns and controls the sole distribution mechanism for iPhone applications -- the iTunes App Store. Their have been problems getting applications reviewed and on the store. And they have already removed previously approved applications with no warning.
5. Apple collects 30 per cent of the revenue from your application for the privilege of allowing your application to be distributed through the App Store. Can you imagine the uproar if Microsoft or Nokia took 30% of every application you created?
6. Apple controls -- and limits -- what kinds of applications are allowed to be distributed. For example, they specifically prohibit real-time route guidance GPS applications. They even have the ability to remotely disable an application that you have already installed and are using on your iPhone.
7. The iPhone runs only one application at a time. Applications do not run in the background. When you start a new application, the first one is shut down, and you need to ensure that your application handles that gracefully -- and quickly.
8. Development of iPhone applications is pretty much limited to Objective C/C++/C, which means that existing mobile applications created in languages such as Java must be rewritten. This means that you can't re-use your existing codebase.
9. Since all applications are delivered through the App Store, there is no opportunity for developer-to-user communication, or for things such as beta programs. While this is fine for the type of applications that are currently being developer, this will be completely unacceptable if Apple wants the iPhone to compete in the enterprise space.
The iPhone is still an impressive device, one that is driving much greater use of the mobile Internet, and blurring the distinction between your computer and your phone. The applications that we have already seen are just touching the surface of what is possible.